[Python-Dev] valgrind

Herman Geza hg211 at hszk.bme.hu
Tue Nov 7 03:11:31 CET 2006


Hi!

I've embedded python into my application. Using valgrind I got a lot of 
errors. I understand that "Conditional jump or move depends on 
uninitialised value(s)" errors are completely ok (from 
Misc/README.valgrind). However, I don't understand why "Invalid read"'s 
are legal, like this:

==21737== Invalid read of size 4
==21737==    at 0x408DDDF: PyObject_Free (in /usr/lib/libpython2.4.so.1.0)
==21737==    by 0x4096F67: (within /usr/lib/libpython2.4.so.1.0)
==21737==    by 0x408A5AC: PyCFunction_Call (in 
/usr/lib/libpython2.4.so.1.0)
==21737==    by 0x40C65F8: PyEval_EvalFrame (in 
/usr/lib/libpython2.4.so.1.0)
==21737==  Address 0xC02E010 is 32 bytes inside a block of size 40 free'd
==21737==    at 0x401D139: free (vg_replace_malloc.c:233)
==21737==    by 0x408DE00: PyObject_Free (in /usr/lib/libpython2.4.so.1.0)
==21737==    by 0x407BB4D: (within /usr/lib/libpython2.4.so.1.0)
==21737==    by 0x407A3D6: (within /usr/lib/libpython2.4.so.1.0)

Here python reads from an already-freed memory area, right? (I don't think 
that Misc/README.valgrind answers this question). Or is it a false alarm?

Thanks,
Geza Herman


More information about the Python-Dev mailing list