[PD] mysterious segfault while receiving midi commands...

Hans-Christoph Steiner hans at at.or.at
Thu Nov 1 04:47:14 CET 2012


On Oct 31, 2012, at 12:39 PM, Jörn Nettingsmeier wrote:

> On 10/30/2012 10:10 PM, Hans-Christoph Steiner wrote:
>> 
>> That's a tough one to track down.  One thing I'd recommend is to reduce the
>> complexity.  Specifically, [readanysf~] is a wonderful object, but relies on
>> many many libraries and has many layers in it.  This bug could have come from
>> any one of those libraries in addition to Pd, readanysf, etc.
> >
>> For the media that you're using, I recommend converting them with 32-bit float
>> WAVs, the internal format used in Pd.  Then you can use [readsf~] or even
>> better, load them into tables and play them with [tabplay~].
> 
> very good points. i'll definitely follow that advice.
> 
> nonetheless, i'd very much like to track down the issue. yesterday, i had a very similar crash and was finally able to get a post-mortem:
> 
> Reading symbols from /usr/local/lib64/pd/bin/pd...done.
> [New LWP 19272]
> [New LWP 19278]
> [New LWP 19276]
> [New LWP 19783]
> [New LWP 19803]
> [New LWP 19785]
> [New LWP 19784]
> [New LWP 19788]
> [New LWP 19787]
> [New LWP 19798]
> [New LWP 19786]
> [New LWP 19799]
> [New LWP 19801]
> [New LWP 19802]
> [New LWP 19800]
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib64/libthread_db.so.1".
> Core was generated by `pd DasLamm.pd'.
> Program terminated with signal 11, Segmentation fault.
> #0  0x000000000046d343 in vu_float ()


This above seems like the cause, the crash happens in vu_float().  Also, since the VU image gets messed up, that also points to the crash being in VU meter.

.hc




> Missing separate debuginfos, use: zypper install glibc-debuginfo-2.15-22.6.4.x86_64 libFLAC8-debuginfo-1.2.1-96.1.2.x86_64 libasound2-debuginfo-1.0.25-3.5.1.x86_64 libgcc47-debuginfo-4.7.1_20120723-1.1.1.x86_64 libjpeg62-debuginfo-62.0.0-15.5.1.x86_64 libmad0-debuginfo-0.15.1b-3.2.x86_64 libogg0-debuginfo-1.3.0-4.1.2.x86_64 libpng12-0-debuginfo-1.2.49-2.1.2.x86_64 libspeex1-debuginfo-1.1.999_1.2rc1-16.1.2.x86_64 libstdc++47-debuginfo-4.7.1_20120723-1.1.1.x86_64 libtheora0-debuginfo-1.1.1-20.1.2.x86_64 libtiff3-debuginfo-3.9.5-8.10.1.x86_64 libvorbis0-debuginfo-1.3.3-1.1.2.x86_64 libvorbisenc2-debuginfo-1.3.3-1.1.2.x86_64 zlib-debuginfo-1.2.7-2.1.2.x86_64
> (gdb) thread apply all bt
> 
> Thread 15 (Thread 0x7f1542ea9700 (LWP 19800)):
> #0  0x00007f15516058f4 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
> #1  0x00007f154bdfb02a in ReadMedia::waitA() () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #2  0x00007f154bdfc62e in ?? () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #3  0x00007f1551601e0e in start_thread () from /lib64/libpthread.so.0
> #4  0x00007f1550a322bd in clone () from /lib64/libc.so.6
> 
> Thread 14 (Thread 0x7f15416a6700 (LWP 19802)):
> #0  0x00007f15516058f4 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
> #1  0x00007f154bdfb02a in ReadMedia::waitA() () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #2  0x00007f154bdfc62e in ?? () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #3  0x00007f1551601e0e in start_thread () from /lib64/libpthread.so.0
> #4  0x00007f1550a322bd in clone () from /lib64/libc.so.6
> 
> Thread 13 (Thread 0x7f1541ea7700 (LWP 19801)):
> #0  0x00007f15516058f4 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
> #1  0x00007f154bdfb02a in ReadMedia::waitA() () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #2  0x00007f154bdfc62e in ?? () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #3  0x00007f1551601e0e in start_thread () from /lib64/libpthread.so.0
> #4  0x00007f1550a322bd in clone () from /lib64/libc.so.6
> 
> Thread 12 (Thread 0x7f15426a8700 (LWP 19799)):
> #0  0x00007f15516058f4 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
> #1  0x00007f154bdfb02a in ReadMedia::waitA() () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #2  0x00007f154bdfc62e in ?? () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #3  0x00007f1551601e0e in start_thread () from /lib64/libpthread.so.0
> #4  0x00007f1550a322bd in clone () from /lib64/libc.so.6
> 
> Thread 11 (Thread 0x7f1546f15700 (LWP 19786)):
> #0  0x00007f15516058f4 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
> #1  0x00007f154bdfb10c in ReadMedia::waitDispatch() () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #2  0x00007f154bdfbdb8 in ?? () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #3  0x00007f1551601e0e in start_thread () from /lib64/libpthread.so.0
> #4  0x00007f1550a322bd in clone () from /lib64/libc.so.6
> 
> Thread 10 (Thread 0x7f15436aa700 (LWP 19798)):
> ---Type <return> to continue, or q <return> to quit---thread apply all bt
> #0  0x00007f15516058f4 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
> #1  0x00007f154bdfb02a in ReadMedia::waitA() () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #2  0x00007f154bdfc62e in ?? () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #3  0x00007f1551601e0e in start_thread () from /lib64/libpthread.so.0
> #4  0x00007f1550a322bd in clone () from /lib64/libc.so.6
> 
> Thread 9 (Thread 0x7f1549369700 (LWP 19787)):
> #0  0x00007f15516058f4 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
> #1  0x00007f154bdfb10c in ReadMedia::waitDispatch() () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #2  0x00007f154bdfbdb8 in ?? () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #3  0x00007f1551601e0e in start_thread () from /lib64/libpthread.so.0
> #4  0x00007f1550a322bd in clone () from /lib64/libc.so.6
> 
> Thread 8 (Thread 0x7f1548924700 (LWP 19788)):
> #0  0x00007f15516058f4 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
> #1  0x00007f154bdfb10c in ReadMedia::waitDispatch() () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #2  0x00007f154bdfbdb8 in ?? () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #3  0x00007f1551601e0e in start_thread () from /lib64/libpthread.so.0
> #4  0x00007f1550a322bd in clone () from /lib64/libc.so.6
> 
> Thread 7 (Thread 0x7f1543eab700 (LWP 19784)):
> #0  0x00007f15516058f4 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
> #1  0x00007f154bdfb10c in ReadMedia::waitDispatch() () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #2  0x00007f154bdfbdb8 in ?? () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #3  0x00007f1551601e0e in start_thread () from /lib64/libpthread.so.0
> #4  0x00007f1550a322bd in clone () from /lib64/libc.so.6
> 
> Thread 6 (Thread 0x7f153bfff700 (LWP 19785)):
> #0  0x00007f15516058f4 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
> #1  0x00007f154bdfb10c in ReadMedia::waitDispatch() () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #2  0x00007f154bdfbdb8 in ?? () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #3  0x00007f1551601e0e in start_thread () from /lib64/libpthread.so.0
> #4  0x00007f1550a322bd in clone () from /lib64/libc.so.6
> 
> Thread 5 (Thread 0x7f1540ea5700 (LWP 19803)):
> #0  0x00007f15516058f4 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
> #1  0x00007f154bdfb02a in ReadMedia::waitA() () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> ---Type <return> to continue, or q <return> to quit---
> #2  0x00007f154bdfc62e in ?? () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #3  0x00007f1551601e0e in start_thread () from /lib64/libpthread.so.0
> #4  0x00007f1550a322bd in clone () from /lib64/libc.so.6
> 
> Thread 4 (Thread 0x7f1546714700 (LWP 19783)):
> #0  0x00007f15516058f4 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
> #1  0x00007f154bdfb10c in ReadMedia::waitDispatch() () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #2  0x00007f154bdfbdb8 in ?? () from /usr/local/lib64/pd/extra/readanysf~.pd_linux
> #3  0x00007f1551601e0e in start_thread () from /lib64/libpthread.so.0
> #4  0x00007f1550a322bd in clone () from /lib64/libc.so.6
> 
> Thread 3 (Thread 0x7f155094d700 (LWP 19276)):
> #0  0x00007f15516058f4 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
> #1  0x00007f1550cfdd8b in mb_thread_func () from /usr/local/lib64/libjack.so.0
> #2  0x00007f1551601e0e in start_thread () from /lib64/libpthread.so.0
> #3  0x00007f1550a322bd in clone () from /lib64/libc.so.6
> 
> Thread 2 (Thread 0x7f1551c7f700 (LWP 19278)):
> #0  0x00007f1550a2a13f in poll () from /lib64/libc.so.6
> #1  0x00007f1550cfc806 in jack_cycle_wait () from /usr/local/lib64/libjack.so.0
> #2  0x00007f1550cfcb38 in jack_process_thread_work () from /usr/local/lib64/libjack.so.0
> #3  0x00007f1551601e0e in start_thread () from /lib64/libpthread.so.0
> #4  0x00007f1550a322bd in clone () from /lib64/libc.so.6
> 
> Thread 1 (Thread 0x7f1551cfc700 (LWP 19272)):
> #0  0x000000000046d343 in vu_float ()
> #1  0x000000000047345f in outlet_float ()
> #2  0x000000000047345f in outlet_float ()
> #3  0x000000000047345f in outlet_float ()
> #4  0x000000000047f412 in m_mainloop ()
> #5  0x00007f155096f455 in __libc_start_main () from /lib64/libc.so.6
> #6  0x0000000000414df1 in _start () at ../sysdeps/x86_64/elf/start.S:113
> (gdb)
> 
> nothing midi-specific, but obviously a breakage in the vu meter. i wonder if the odd-looking vus i'm getting (see http://stackingdwarves.net/download/pd-odd_vu_meter.png) are a hint?
> 
> i think i copied-and-pasted the two vus when i created the 6-channel player, but i don't see how that could cause a segfault later...
> 
> looks like i'm having a hard time to create a proper reproducible test case, but maybe some devs are inspired by this backtrace anyway :)
> 
> best,
> 
> 
> jörn
> 
> -- 
> Jörn Nettingsmeier
> Lortzingstr. 11, 45128 Essen, Tel. +49 177 7937487
> 
> Meister für Veranstaltungstechnik (Bühne/Studio)
> Tonmeister VDT
> 
> http://stackingdwarves.net
> 




More information about the Pd-list mailing list