
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