2011/11/12 Mathieu Bouchard <matju@artengine.ca>
Le 2011-11-12 à 18:19:00, tim vets a écrit :


Whenever you have a crash while doing malloc/new, hunt down the Invalid Writes that you see and it will usually fix the problem.
If it doesn't fix the problem, then it's because there are other Invalid Writes that valgrind couldn't detect.
indeed, when creating [fux_kinect], valgrind says:

==3908== Invalid write of size 4
==3908==    at 0x417017E: pthread_cond_init@@GLIBC_2.3.2 (pthread_cond_init.c:43)

So, when will you apply the fix I gave in a previous mail ?

it's stretching my knowledge quite far now, 
but gave it a shot anyway, and interpreted what you wrote as:
find the line " gl_frame_cond = (pthread_cond_t) malloc(sizeof(pthread_mutex_t));"
(in fux_kinect.cpp)
and remove the "*" from that line.
now make gives:
 "g++ -export_dynamic -shared -I/home/tim/Downloads/pdextendedSVN/0.42/pd/include `pkg-config --cflags libfreenect` -g -O2 -fPIC -freg-struct-return -Os -falign-loops=32 -falign-functions=32 -falign-jumps=32 -funroll-loops -ffast-math  -mmmx  -DLINUX -o fux_kinect.o -c fux_kinect.cpp
fux_kinect.cpp: In constructor ‘fux_kinect::fux_kinect(int, t_atom*)’:
fux_kinect.cpp:80:66: error: no matching function for call to ‘pthread_cond_t::pthread_cond_t(void*)’
/usr/include/bits/pthreadtypes.h:130:3: note: candidates are: pthread_cond_t::pthread_cond_t()
/usr/include/bits/pthreadtypes.h:130:3: note:                 pthread_cond_t::pthread_cond_t(const pthread_cond_t&)
make: *** [all] Error 1

or am I getting it wrong?
gr,
Tim

==3908==  Address 0x4389460 is not stack'd, malloc'd or (recently) free'd

Did you just remove the malloc line entirely ? Put the correct line I gave you.

To get rid of malloc/free, you need make more changes than just that (removing * in some places and adding & in some other places).


 ______________________________________________________________________
| Mathieu BOUCHARD ----- téléphone : +1.514.383.3801 ----- Montréal, QC