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

Attachment: signature.asc
Description: Digital signature

Raspunde prin e-mail lui