Thank you Bryan and Thomas for your quick response. That extra line in flsupport.cpp fixed it! It's weird though why it would work on the normal binary but not on the debug version. Should I post this bug/solution on the flext mailing list?
Best, -Pablo
Thomas Grill wrote:
Hi, i guess you spotted a bug in flext. in C++ it's valid (although not common practice) to delete a NULL ptr and flext doesn't handle that correctly. As a quick fix, you can search flsupport.cpp for the following function and insert one line of code as shown below.
void flext_root::operator delete(void *blk) { if(!blk) return; // INSERT THIS LINE
Then recompile and reinstall flext. Please let me know if it helps.
I'd appreciate flext-related stuff to be sent to the flext mailing list.
thanks, gr~~~
Am 12.06.2008 um 20:23 schrieb Pablo Vanwoerkom:
Hello,
This is my first post on the list, so I hope it makes sense. Any help is appreciated!
I've been having trouble running the DEBUG-SINGLE binary of an external that uses flext. I launch pd and the patch that calls the external. When I attach the process id in gdb, gdb seems to recognize the symbols from the external. Then when I do anything useful back in puredata, puredata crashes, at the bottom is the message I get.
I did not make the external. However, the RELASE-SINGLE binary that flext produces works for the most part when using it from pd. I am guessing I am not compiling the external correctly or perhaps(though doubt it) I did not compile and install flext correctly. My version of puredata is 0.41-0.
Just in case, this is the part of the external compilation process dealing with the debug binaries. I don't really know either what the different debug versions are (shared, multi, single)...
Thank you, -Pablo V.
g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/CircularMatrix.cpp -o pd-linux/debug-single/CircularMatrix.opp g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/SoundFile.cpp -o pd-linux/debug-single/SoundFile.opp g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/DriverFlext.cpp -o pd-linux/debug-single/DriverFlext.opp g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/MatchedFilter.cpp -o pd-linux/debug-single/MatchedFilter.opp soundspotter3/MatchedFilter.cpp: In constructor ‘MatchedFilter::MatchedFilter(SoundSpotter*)’: soundspotter3/MatchedFilter.cpp:22: warning: deprecated conversion from string constant to ‘char*’ soundspotter3/MatchedFilter.cpp:26: warning: deprecated conversion from string constant to ‘char*’ soundspotter3/MatchedFilter.cpp:32: warning: deprecated conversion from string constant to ‘char*’ g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/Matcher.cpp -o pd-linux/debug-single/Matcher.opp g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/SoundSpotter.cpp -o pd-linux/debug-single/SoundSpotter.opp g++ -pthread -shared -Wl,-x -g -L/usr/local/src/pd/bin -L/usr/local/lib -o pd-linux/debug-single/soundspotter~.pd_linux pd-linux/debug-single/CircularMatrix.opp pd-linux/debug-single/SoundFile.opp pd-linux/debug-single/DriverFlext.opp pd-linux/debug-single/MatchedFilter.opp pd-linux/debug-single/Matcher.opp pd-linux/debug-single/SoundSpotter.opp -lsndfile -lfftw3 -lflext-pd_sd chmod 755 pd-linux/debug-single/soundspotter~.pd_linux make[1]: Leaving directory `/media/docs/capstone/pureData/soundspotter3' make -f ../flext/buildsys/gnumake-sub.mak PLATFORM=lnx RTSYS=pd COMPILER=gcc BUILDPATH=../flext/buildsys/ PKGINFO=package.txt BUILDCLASS=ext USRCONFIG=config.txt USRMAKE=build/gnumake-lnx-gcc.inc TARGETMODE=debug TARGETTYPE=multi THREADED=1 DEBUG=1 _build_ make[1]: Entering directory `/media/docs/capstone/pureData/soundspotter3' mkdir -p pd-linux/debug-multi g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_THREADS -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/CircularMatrix.cpp -o pd-linux/debug-multi/CircularMatrix.opp g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_THREADS -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/SoundFile.cpp -o pd-linux/debug-multi/SoundFile.opp g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_THREADS -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/DriverFlext.cpp -o pd-linux/debug-multi/DriverFlext.opp g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_THREADS -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/MatchedFilter.cpp -o pd-linux/debug-multi/MatchedFilter.opp soundspotter3/MatchedFilter.cpp: In constructor ‘MatchedFilter::MatchedFilter(SoundSpotter*)’: soundspotter3/MatchedFilter.cpp:22: warning: deprecated conversion from string constant to ‘char*’ soundspotter3/MatchedFilter.cpp:26: warning: deprecated conversion from string constant to ‘char*’ soundspotter3/MatchedFilter.cpp:32: warning: deprecated conversion from string constant to ‘char*’ g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_THREADS -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/Matcher.cpp -o pd-linux/debug-multi/Matcher.opp g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_THREADS -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/SoundSpotter.cpp -o pd-linux/debug-multi/SoundSpotter.opp g++ -pthread -shared -Wl,-x -g -L/usr/local/src/pd/bin -L/usr/local/lib -o pd-linux/debug-multi/soundspotter~.pd_linux pd-linux/debug-multi/CircularMatrix.opp pd-linux/debug-multi/SoundFile.opp pd-linux/debug-multi/DriverFlext.opp pd-linux/debug-multi/MatchedFilter.opp pd-linux/debug-multi/Matcher.opp pd-linux/debug-multi/SoundSpotter.opp -lsndfile -lfftw3 -lflext-pd_td chmod 755 pd-linux/debug-multi/soundspotter~.pd_linux make[1]: Leaving directory `/media/docs/capstone/pureData/soundspotter3' make -f ../flext/buildsys/gnumake-sub.mak PLATFORM=lnx RTSYS=pd COMPILER=gcc BUILDPATH=../flext/buildsys/ PKGINFO=package.txt BUILDCLASS=ext USRCONFIG=config.txt USRMAKE=build/gnumake-lnx-gcc.inc TARGETMODE=debug TARGETTYPE=shared SHARED=1 DEBUG=1 _build_ make[1]: Entering directory `/media/docs/capstone/pureData/soundspotter3' mkdir -p pd-linux/debug-shared g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_SHARED -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/CircularMatrix.cpp -o pd-linux/debug-shared/CircularMatrix.opp g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_SHARED -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/SoundFile.cpp -o pd-linux/debug-shared/SoundFile.opp g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_SHARED -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/DriverFlext.cpp -o pd-linux/debug-shared/DriverFlext.opp g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_SHARED -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/MatchedFilter.cpp -o pd-linux/debug-shared/MatchedFilter.opp soundspotter3/MatchedFilter.cpp: In constructor ‘MatchedFilter::MatchedFilter(SoundSpotter*)’: soundspotter3/MatchedFilter.cpp:22: warning: deprecated conversion from string constant to ‘char*’ soundspotter3/MatchedFilter.cpp:26: warning: deprecated conversion from string constant to ‘char*’ soundspotter3/MatchedFilter.cpp:32: warning: deprecated conversion from string constant to ‘char*’ g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_SHARED -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/Matcher.cpp -o pd-linux/debug-shared/Matcher.opp g++ -c -O3 -msse -mfpmath=sse -ffast-math -D_DEBUG -pthread -fPIC -g -DFLEXT_USE_SIMD -DFLEXT_SHARED -DFLEXT_SYS=2 -I/usr/local/src/pd/src -I/usr/local/include/flext soundspotter3/SoundSpotter.cpp -o pd-linux/debug-shared/SoundSpotter.opp g++ -pthread -shared -Wl,-x -g -L/usr/local/src/pd/bin -L/usr/local/lib -o pd-linux/debug-shared/soundspotter~.pd_linux pd-linux/debug-shared/CircularMatrix.opp pd-linux/debug-shared/SoundFile.opp pd-linux/debug-shared/DriverFlext.opp pd-linux/debug-shared/MatchedFilter.opp pd-linux/debug-shared/Matcher.opp pd-linux/debug-shared/SoundSpotter.opp -lsndfile -lfftw3 -lflext-pd_d chmod 755 pd-linux/debug-shared/soundspotter~.pd_linux make[1]: Leaving directory `/media/docs/capstone/pureData/soundspotter3'
======================================== *Below is the error I am getting when I try to load a soundfile in the puredata patch that uses the soundspotter external:* ===================================================== Program received signal SIGSEGV, Segmentation fault. 0x9d879480 in flext_root_single::operator delete (blk=0x0) at source/flsupport.cpp:173 173 size_t bytes = *(size_t *)ori; Current language: auto; currently c++ ====================================================
*And the backtrace is:*
#0 0x9d879480 in flext_root_single::operator delete (blk=0x0) at source/flsupport.cpp:173 #1 0x9d8723f9 in operator delete (blk=0x0) at source/flsupport.h:103 #2 0x9d86b1c2 in SoundFile::loadSound (this=0x82597f4) at soundspotter3/SoundFile.cpp:31 #3 0x9d86b2d1 in SoundFile::sfOpen (this=0x82597f4, inFileName=0x82597b8 "/media/docs/capstone/audioclips/HummedScale_Don.wav") at soundspotter3/SoundFile.cpp:21 #4 0x9d86ca16 in soundspotter::m_milt (this=0x823a154, argc=1, argv=0xbfc0958c) at soundspotter3/DriverFlext.cpp:103 #5 0x9d86cfeb in soundspotter::flext_c_m_milt (c=0x823a154, argc=1, argv=0xbfc0958c) at soundspotter3/DriverFlext.h:55 #6 0x9d87e08a in flext_base_single::TryMethTag (this=0x823a154, lst=0x823a4ac, tag=0x823f578, argc=1, argv=0xbfc0958c) at source/flmsg.cpp:37 #7 0x9d87e4ba in flext_base_single::FindMeth (this=0x823a154, inlet=0, s=0x823f578, argc=1, argv=0xbfc0958c) at source/flmsg.cpp:146 #8 0x9d87e67d in flext_base_single::CbMethodHandler (this=0x823a154, inlet=0, s=0x823f578, argc=1, argv=0xbfc0958c) at source/flmsg.cpp:184 #9 0x9d87ec84 in flext_base_single::cb_px_anything (c=0x8239d98, s=0x823f578, argc=1, argv=0xbfc0958c) at source/flproxy.cpp:32 #10 0x080aa5d6 in pd_typedmess () #11 0x082432c8 in ?? () #12 0xbfc09336 in ?? () #13 0xbfc09792 in ?? () #14 0x00000010 in ?? () #15 0x00000004 in ?? ()
#16 0x00000000 in ?? ()
Pd-dev mailing list Pd-dev@iem.at http://lists.puredata.info/listinfo/pd-dev