On Fri, Jun 07, 2013 at 05:55:06PM +0900, Jun T. wrote: > Thank you for your reply; it is always nice to hear I'm not alone. > And thank you for your test. > > I did some test by myself and noticed that if I configure with > > --enable-pythoninterp=dynamic and/or --enable-python3interp=dynamic > > then test86 runs fine without the PY_SSIZE_T_CLEAN fix. > I've checked that adding the fix does not break this already-working > dynamic build.
Hello,
I also had a crash on test86 on Debian Wheezy (Python 2.7.3, Vim
7.3.1152). While running the test under valgrind I noticed many
invalid memory accesses on already freed memory. Below is a short
excerpt:
==24205== Invalid read of size 4
==24205== at 0x67CDCA2: PyObject_Free (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6720D7A: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675368E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753D3B: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675F1F2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675425C: PyImport_ImportModuleLevel (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E7B9E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677AD3D: PyObject_Call (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677B646: PyEval_CallObjectWithKeywords (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x668FC82: PyEval_EvalFrameEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66952E7: PyEval_EvalCodeEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6695421: PyEval_EvalCode (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66EC6CC: PyImport_ExecCodeModuleEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753677: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753D3B: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675F1F2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675425C: PyImport_ImportModuleLevel (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E7B9E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677AD3D: PyObject_Call (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677B646: PyEval_CallObjectWithKeywords (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x668FC82: PyEval_EvalFrameEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66952E7: PyEval_EvalCodeEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6695421: PyEval_EvalCode (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66EC6CC: PyImport_ExecCodeModuleEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753677: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753D3B: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675F1F2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675425C: PyImport_ImportModuleLevel (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E7B9E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677AD3D: PyObject_Call (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677B646: PyEval_CallObjectWithKeywords (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x668FC82: PyEval_EvalFrameEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66952E7: PyEval_EvalCodeEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6695421: PyEval_EvalCode (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66EC6CC: PyImport_ExecCodeModuleEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753677: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753D3B: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675F1F2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675425C: PyImport_ImportModuleLevel (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E7B9E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677AD3D: PyObject_Call (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66D815A: PyObject_CallFunction (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66DE9C9: PyImport_Import (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E04D9: PyImport_ImportModule (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66A09B3: Py_InitializeEx (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x2D2DC0: DoPyCommand (if_python.c:872)
==24205== by 0x2D4FA0: ex_python (if_python.c:1030)
==24205== by 0x1B641A: do_cmdline (ex_docmd.c:2689)
==24205== by 0x2209A9: nv_colon (normal.c:5457)
==24205== by 0x226F96: normal_cmd (normal.c:1200)
==24205== Address 0x820d020 is 1,040 bytes inside a block of size 2,731
free'd
==24205== at 0x4C27D4E: free (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24205== by 0x671C00A: PyMarshal_ReadLastObjectFromFile (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x675344D: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753D3B: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675F1F2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675425C: PyImport_ImportModuleLevel (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E7B9E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677AD3D: PyObject_Call (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677B646: PyEval_CallObjectWithKeywords (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x668FC82: PyEval_EvalFrameEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66952E7: PyEval_EvalCodeEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6695421: PyEval_EvalCode (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66EC6CC: PyImport_ExecCodeModuleEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753677: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753D3B: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675F1F2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675425C: PyImport_ImportModuleLevel (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E7B9E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677AD3D: PyObject_Call (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677B646: PyEval_CallObjectWithKeywords (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x668FC82: PyEval_EvalFrameEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66952E7: PyEval_EvalCodeEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6695421: PyEval_EvalCode (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66EC6CC: PyImport_ExecCodeModuleEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753677: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753D3B: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675F1F2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675425C: PyImport_ImportModuleLevel (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E7B9E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677AD3D: PyObject_Call (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677B646: PyEval_CallObjectWithKeywords (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x668FC82: PyEval_EvalFrameEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66952E7: PyEval_EvalCodeEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6695421: PyEval_EvalCode (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66EC6CC: PyImport_ExecCodeModuleEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753677: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753D3B: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675F1F2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675425C: PyImport_ImportModuleLevel (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E7B9E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677AD3D: PyObject_Call (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66D815A: PyObject_CallFunction (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66DE9C9: PyImport_Import (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E04D9: PyImport_ImportModule (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66A09B3: Py_InitializeEx (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x2D2DC0: DoPyCommand (if_python.c:872)
==24205== by 0x2D4FA0: ex_python (if_python.c:1030)
==24205== by 0x1B641A: do_cmdline (ex_docmd.c:2689)
==24205== by 0x2209A9: nv_colon (normal.c:5457)
==24205== by 0x226F96: normal_cmd (normal.c:1200)
There are also a few uninitialized memory warnings (not sure if
they are related):
==24205== Conditional jump or move depends on uninitialised value(s)
==24205== at 0x67CDCAB: PyObject_Free (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x67AA2A2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6720DEA: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675368E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753D3B: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675F1F2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675425C: PyImport_ImportModuleLevel (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E7B9E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677AD3D: PyObject_Call (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677B646: PyEval_CallObjectWithKeywords (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x668FC82: PyEval_EvalFrameEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66952E7: PyEval_EvalCodeEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6695421: PyEval_EvalCode (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66EC6CC: PyImport_ExecCodeModuleEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753677: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753D3B: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675F1F2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675425C: PyImport_ImportModuleLevel (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E7B9E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677AD3D: PyObject_Call (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677B646: PyEval_CallObjectWithKeywords (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x668FC82: PyEval_EvalFrameEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66952E7: PyEval_EvalCodeEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6695421: PyEval_EvalCode (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66EC6CC: PyImport_ExecCodeModuleEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753677: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753D3B: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675F1F2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675425C: PyImport_ImportModuleLevel (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E7B9E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677AD3D: PyObject_Call (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677B646: PyEval_CallObjectWithKeywords (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x668FC82: PyEval_EvalFrameEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66952E7: PyEval_EvalCodeEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6695421: PyEval_EvalCode (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66EC6CC: PyImport_ExecCodeModuleEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753677: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753D3B: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675F1F2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675425C: PyImport_ImportModuleLevel (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E7B9E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677AD3D: PyObject_Call (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66D815A: PyObject_CallFunction (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66DE9C9: PyImport_Import (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E04D9: PyImport_ImportModule (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66A09B3: Py_InitializeEx (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x2D2DC0: DoPyCommand (if_python.c:872)
==24205== by 0x2D4FA0: ex_python (if_python.c:1030)
==24205== by 0x1B641A: do_cmdline (ex_docmd.c:2689)
==24205== by 0x2209A9: nv_colon (normal.c:5457)
==24205==
==24205== Use of uninitialised value of size 8
==24205== at 0x67CDCC3: PyObject_Free (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x67AA2A2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6720DEA: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675368E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753D3B: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675F1F2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675425C: PyImport_ImportModuleLevel (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E7B9E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677AD3D: PyObject_Call (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677B646: PyEval_CallObjectWithKeywords (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x668FC82: PyEval_EvalFrameEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66952E7: PyEval_EvalCodeEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6695421: PyEval_EvalCode (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66EC6CC: PyImport_ExecCodeModuleEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753677: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753D3B: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675F1F2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675425C: PyImport_ImportModuleLevel (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E7B9E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677AD3D: PyObject_Call (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677B646: PyEval_CallObjectWithKeywords (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x668FC82: PyEval_EvalFrameEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66952E7: PyEval_EvalCodeEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6695421: PyEval_EvalCode (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66EC6CC: PyImport_ExecCodeModuleEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753677: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753D3B: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675F1F2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675425C: PyImport_ImportModuleLevel (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E7B9E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677AD3D: PyObject_Call (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677B646: PyEval_CallObjectWithKeywords (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x668FC82: PyEval_EvalFrameEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66952E7: PyEval_EvalCodeEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6695421: PyEval_EvalCode (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66EC6CC: PyImport_ExecCodeModuleEx (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753677: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x6753D3B: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675F1F2: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x675425C: PyImport_ImportModuleLevel (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E7B9E: ??? (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x677AD3D: PyObject_Call (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66D815A: PyObject_CallFunction (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66DE9C9: PyImport_Import (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x66E04D9: PyImport_ImportModule (in
/usr/lib/libpython2.7.so.1.0)
==24205== by 0x66A09B3: Py_InitializeEx (in /usr/lib/libpython2.7.so.1.0)
==24205== by 0x2D2DC0: DoPyCommand (if_python.c:872)
==24205== by 0x2D4FA0: ex_python (if_python.c:1030)
==24205== by 0x1B641A: do_cmdline (ex_docmd.c:2689)
==24205== by 0x2209A9: nv_colon (normal.c:5457)
It was necessary to use --num-callers=50 in src/testdir/Makefile
to get most of the stack trace:
VALGRIND = valgrind --tool=memcheck --num-callers=50 --log-file=valgrind.$*
make test86 to run the test with valgrind after enabling VALGRIND
as shown above.
The PY_SSIZE_T_CLEAN fix didn't help to fix those invalid memory
accesses.
Regards
Simon
--
+ privacy is necessary
+ using gnupg http://gnupg.org
+ public key id: 0x92FEFDB7E44C32F9
signature.asc
Description: Digital signature
