[PD-dev] flext/msd free(): invalid pointer?

*~ chun at goto10.org
Mon Dec 10 23:26:35 CET 2007


hi all:

i am having some trouble with externals(msd/pool..) using flext, i kept getting:

*** glibc detected *** pd: free(): invalid pointer: 0x082afd14 ***

then, pd just freeze.. 

this is from a recent cvs check out (less than a week ago) of pd/externals/... etc. 

anyone had this before? or know how to fix it? please see below for section of log output from valgrind. i can post the complete log if necessary

cheers

chun

------

==3750== Invalid free() / delete / delete[]
==3750==    at 0x4024096: operator delete(void*) (vg_replace_malloc.c:244)
==3750==    by 0x5E013BF: std::vector<Link<1>*, std::allocator<Link<1>*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<Link<1>**, std::vector<Link<1>*, std::allocator<Link<1>*> > >, Link<1>* const&) (in 
/usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E0158A: Link<1>::Link(long, _symbol const*, Mass<1>*, Mass<1>*, float, float, long, float*, float, float, float) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E02037: msdN<1>::m_link(int, _atom*) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E02856: msdN<1>::flext_c_m_link(flext_base_single*, int, _atom*) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E0DBA5: flext_base_single::TryMethTag(flext_base_single::Item*, _symbol const*, int, _atom const*) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E0DD50: flext_base_single::FindMeth(int, _symbol const*, int, _atom const*) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E0DE82: flext_base_single::CbMethodHandler(int, _symbol const*, int, _atom const*) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E0E6B4: flext_base_single::cb_anything(flext_hdr*, _symbol const*, int, _atom*) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x80A9DF3: pd_typedmess (m_class.c:749)
==3750==  Address 0x42E5EEC is 4 bytes inside a block of size 8 alloc'd
==3750==    at 0x4023AA4: calloc (vg_replace_malloc.c:279)
==3750==    by 0x80AD7ED: getbytes (m_memory.c:24)
==3750==    by 0x5E01367: std::vector<Link<1>*, std::allocator<Link<1>*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<Link<1>**, std::vector<Link<1>*, std::allocator<Link<1>*> > >, Link<1>* const&) (in 
/usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E0158A: Link<1>::Link(long, _symbol const*, Mass<1>*, Mass<1>*, float, float, long, float*, float, float, float) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E02037: msdN<1>::m_link(int, _atom*) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E02856: msdN<1>::flext_c_m_link(flext_base_single*, int, _atom*) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E0DBA5: flext_base_single::TryMethTag(flext_base_single::Item*, _symbol const*, int, _atom const*) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E0DD50: flext_base_single::FindMeth(int, _symbol const*, int, _atom const*) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E0DE82: flext_base_single::CbMethodHandler(int, _symbol const*, int, _atom const*) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E0E6B4: flext_base_single::cb_anything(flext_hdr*, _symbol const*, int, _atom*) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x80A9DF3: pd_typedmess (m_class.c:749)
==3750== 

.
.
.

==3750== Invalid read of size 4
==3750==    at 0x5E0A53A: flext_root_single::operator delete(void*) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E07849: flext_base_single::xlet::~xlet() (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E350E4: (within /usr/local/lib/pd/extra/msd2D.pd_linux)
==3750==    by 0x418B513: exit (in /lib/i686/cmov/libc-2.6.1.so)
==3750==    by 0x80BA61C: glob_quit (s_inter.c:1285)
==3750==  Address 0x42FFE28 is 0 bytes inside a block of size 12 free'd
==3750==    at 0x402437F: free (vg_replace_malloc.c:233)
==3750==    by 0x5E0A54F: flext_root_single::operator delete(void*) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E07849: flext_base_single::xlet::~xlet() (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E648D4: (within /usr/local/lib/pd/extra/msd3D.pd_linux)
==3750==    by 0x418B513: exit (in /lib/i686/cmov/libc-2.6.1.so)
==3750==    by 0x80BA61C: glob_quit (s_inter.c:1285)
==3750== 
==3750== Invalid free() / delete / delete[]
==3750==    at 0x402437F: free (vg_replace_malloc.c:233)
==3750==    by 0x5E0A54F: flext_root_single::operator delete(void*) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E07849: flext_base_single::xlet::~xlet() (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E350E4: (within /usr/local/lib/pd/extra/msd2D.pd_linux)
==3750==    by 0x418B513: exit (in /lib/i686/cmov/libc-2.6.1.so)
==3750==    by 0x80BA61C: glob_quit (s_inter.c:1285)
==3750==  Address 0x42FFE28 is 0 bytes inside a block of size 12 free'd
==3750==    at 0x402437F: free (vg_replace_malloc.c:233)
==3750==    by 0x5E0A54F: flext_root_single::operator delete(void*) (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E07849: flext_base_single::xlet::~xlet() (in /usr/local/lib/pd/extra/msd.pd_linux)
==3750==    by 0x5E648D4: (within /usr/local/lib/pd/extra/msd3D.pd_linux)
==3750==    by 0x418B513: exit (in /lib/i686/cmov/libc-2.6.1.so)
==3750==    by 0x80BA61C: glob_quit (s_inter.c:1285)

.
.
.




More information about the Pd-dev mailing list