Wow, you found an 18-monti-old crasher bug, congrats :)
In s_audio_jack.c I see:
FREEA(t_sample, muxbuffer, muxbufsize, MAX_ALLOCA_SAMPLES); #ifdef THREADSIGNAL sys_semaphore_post(jack_sem); #endif FREEA(t_sample, muxbuffer, muxbufsize, MAX_ALLOCA_SAMPLES);
I think the first of the two FREEA calls needs to be deleted. You can fix it locally and I'll eithr fix it upstream or wait for Iohannes to :)
Miller
On 9/24/24 8:24 PM, Marco Matteo Markidis wrote:
Dear all,
I am experiencing a strange bug in Pd 0.55.1. When I launch Pd, it crashes. Running it with Valgrind, I got the following message: ==83263== Thread 4: ==83263== Invalid free() / delete / delete[] / realloc() ==83263== at 0x48461EF: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) ==83263== by 0x1D9539: jack_polling_callback (s_audio_jack.c:164) ==83263== by 0x4A7AECC: ??? (in /usr/lib/x86_64-linux-gnu/libjack.so.0.1.0) ==83263== by 0x4A7AB87: ??? (in /usr/lib/x86_64-linux-gnu/libjack.so.0.1.0) ==83263== by 0x4A97F2F: ??? (in /usr/lib/x86_64-linux-gnu/libjack.so.0.1.0) ==83263== by 0x4B46731: start_thread (pthread_create.c:447) ==83263== by 0x4BC10FF: clone (clone.S:100) ==83263== Address 0x535b180 is 0 bytes inside a block of size 65,536 free'd ==83263== at 0x48461EF: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) ==83263== by 0x1D9522: jack_polling_callback (s_audio_jack.c:160) ==83263== by 0x4A7AECC: ??? (in /usr/lib/x86_64-linux-gnu/libjack.so.0.1.0) ==83263== by 0x4A7AB87: ??? (in /usr/lib/x86_64-linux-gnu/libjack.so.0.1.0) ==83263== by 0x4A97F2F: ??? (in /usr/lib/x86_64-linux-gnu/libjack.so.0.1.0) ==83263== by 0x4B46731: start_thread (pthread_create.c:447) ==83263== by 0x4BC10FF: clone (clone.S:100) ==83263== Block was alloc'd at ==83263== at 0x48489F3: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) ==83263== by 0x188F16: getbytes (m_memory.c:21) ==83263== by 0x1D94F8: jack_polling_callback (s_audio_jack.c:115) ==83263== by 0x4A7AECC: ??? (in /usr/lib/x86_64-linux-gnu/libjack.so.0.1.0) ==83263== by 0x4A7AB87: ??? (in /usr/lib/x86_64-linux-gnu/libjack.so.0.1.0) ==83263== by 0x4A97F2F: ??? (in /usr/lib/x86_64-linux-gnu/libjack.so.0.1.0) ==83263== by 0x4B46731: start_thread (pthread_create.c:447) ==83263== by 0x4BC10FF: clone (clone.S:100) ==83263==
Running it via gdb, I am getting the following message: Thread 4 "pd" received signal SIGABRT, Aborted. [Switching to Thread 0x7ffff74926c0 (LWP 109587)] __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44 warning: 44 ./nptl/pthread_kill.c: No such file or directory
Then, I build Pd tag 0.54.1 commit 0259d003 and everything works fine, while I am getting the same error directly from Pd tag 0.55-0test1 commit 46e3ec2d.
I manage to open Pd in callback mode while avoiding polling. Here some details about my setup: Debian 12, Linux kernel 6.10 Jackd2 installed via apt, v 1.9.22 Pd installed via apt, 0.55.1, and then built locally using --enable-debug --enable-jack as flags for the configuration. Source code cloned from git.
I also tried to search (randomly) in my local machine where pthread_kill.c is located, without success. libpthread is in: /usr/lib/x86_64-linux-gnu/ .
I took a look at recent emails and issues on Github but I do not see anything relevant with this issue.
My next step is to compare and study the relevant code (starting from s_audio_jack.c) that differs between 0.54.1 and 0.55.0test1.
If someone has some ideas, they are appreciated. Additionally, if useful, I can report an issue on Github. Honestly, I am stuck while understanding if it is an issue on my local machine, such that an issue may be noise on the main repo.
Best regards, Marco
pd-dev@lists.iem.at - the Pd developers' mailinglist https://urldefense.com/v3/__https://lists.iem.at/hyperkitty/list/pd-dev@list...