I'm using rpi-ws281x 5.0.0 on an RPi 3b with Raspbian GNU/Linux 11 via Python. My Python program does not use any other native libraries besides this one. In my app, I'm using 2 PWM channels (GPIO 18 and 19) and one 1 PCM channel (GPIO 21), and the app/hardware basically works.
When exiting, I'm seeing:
munmap_chunk(): invalid pointer
Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x76d4a364 in __GI_abort () at abort.c:79
#2 0x76d9be44 in __libc_message (action=action@entry=do_abort, fmt=<optimized out>)
at ../sysdeps/posix/libc_fatal.c:155
#3 0x76da39fc in malloc_printerr (str=<optimized out>) at malloc.c:5347
#4 0x76da3d40 in munmap_chunk (p=<optimized out>) at malloc.c:2830
#5 0x766b0230 in ws2811_cleanup (ws2811=0x51e7e8) at lib/ws2811.c:623
#6 0x766b54d0 in _wrap_ws2811_fini (self=<optimized out>, args=<optimized out>)
at rpi_ws281x_wrap.c:4169
#7 0x000b747c in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
I'm using rpi-ws281x 5.0.0 on an RPi 3b with Raspbian GNU/Linux 11 via Python. My Python program does not use any other native libraries besides this one. In my app, I'm using 2 PWM channels (GPIO 18 and 19) and one 1 PCM channel (GPIO 21), and the app/hardware basically works.
When exiting, I'm seeing:
This crash would occur here.
This appears to be in the PCM mode driver for GPIO 21:
ws2811_init
callscheck_hwver_and_gpionum
which callsset_driver_mode
based on the pin number.set_driver_mode
contains this line:which should set
ws2811->channels[1].leds
toNULL
initially along with the rest of the channel 1 struct.Later in
ws2811_init
allocates 2 LED buffers (based onRPI_PWM_CHANNELS
) even if the driver is inPCM
mode. This shouldn't be an issue though.I don't immediately see an issue with the logic here, so there must be a memory corruption issue elsewhere.