1.5.1 Py_XDECREF Core

Thomas Jollans thomas at jollans.com
Wed Jun 30 05:56:41 EDT 2010


On 06/30/2010 11:39 AM, Sunil wrote:
> Hi,
>  
> We are using a legacy product which is using 1.5.1 version of Python and
> we have seen frequent core dumps offlate which is as below
>  
> #0  0x2b79b0 in list_dealloc (op=0x414b11d0) at listobject.c:220
> #1  0x283c48 in dict_dealloc (mp=0x415b8c18) at dictobject.c:491
> #2  0x2b4760 in frame_dealloc (f=0x4042ea50) at frameobject.c:116
> #3  0x28b938 in eval_code2 (co=0x404a4d28, globals=0x4049bec8,
> locals=0x0, args=0x404da5dc, argcount=1, kws=0x0, kwcount=0, defs=0x0,
> defcount=0, owner=0x0)
>     at ceval.c:1873
> #4  0x28d690 in call_function (func=0x41497958, arg=0x404da5d0, kw=0x0)
> at ceval.c:2472
>  
> Can someone confirm if this is a problem at Python or in the source
> code, I know that this version is quite old and needs upgarde, but since
> this in use for long i would need evidence to prove that this is a
> problem at Python not in the product so that we can upgrade to the
> latest version.
>  
>  listobject.c
>  for (i = 0; i < op->ob_size; i++) {
>         Py_XDECREF(op->ob_item[i]);   //Line 220
>  }
> 
> Can some one help me out in this, while i belive that the pointer where
> the derefernece is happening might have got corrupted but this happens
> rarely and the code is a provisioning script with a command that is
> successful most times.

I can't really help much as I've never used Python versions that old.
Some thoughts:

* are you using C extension modules? If you are, double-check their
increfs and decrefs.
* if you're using pure-Python code, the bug is in Python. Python scripts
have no access to memory management and refcounting details (or do
they?) and thus can't currupt anything at that level.
* see http://www.python.org/download/releases/1.6.1/ :
  --> What's new in release 1.6.1?
    - A core dump in the C API function PyList_Reverse() has been fixed.

   possibly relevant?

-- Thomas



More information about the Python-list mailing list