[Numpy-discussion] Error in deallocation ?

Matthieu Brucher matthieu.brucher at gmail.com
Fri Oct 19 06:27:44 EDT 2007


Here is an excerpt of the stack on the numpy svn of wednesday :

#0  0x40000402 in __kernel_vsyscall ()
#1  0x00b8e382 in sem_post at GLIBC_2.0 () from /lib/libpthread.so.0
#2  0x080fe5b7 in PyThread_release_lock (lock=0x80d0fb2) at
Python/thread_pthread.h:374
#3  0x080d0fb2 in PyEval_SaveThread () at Python/ceval.c:299
#4  0x4064ec7a in dotblas_innerproduct (dummy=0x0, args=0x960522c) at
numpy/core/blasdot/_dotblas.c:835
#5  0x0811ecf1 in PyCFunction_Call (func=0x960522c, arg=0x80cfec7,
kw=0x942068c) at Objects/methodobject.c:73
#6  0x080cfec7 in call_function (pp_stack=0x0, oparg=1) at
Python/ceval.c:3564
#7  0x080cb19a in PyEval_EvalFrameEx. () at Python/ceval.c:2267
#8  0x080ca848 in PyEval_EvalCodeEx. () at Python/ceval.c:2831
#9  0x0811de5b in function_call (func=0x0, arg=0x960516c, kw=0x965b148) at
Objects/funcobject.c:517
#10 0x0805bdb6 in PyObject_Call (func=0x0, arg=0x960516c, kw=0x8061a66) at
Objects/abstract.c:1860
#11 0x08061a66 in instancemethod_call (func=0x95f16ac, arg=0x94f5824,
kw=0x805bdb6) at Objects/classobject.c:2497
#12 0x0805bdb6 in PyObject_Call (func=0x0, arg=0x95f16ac, kw=0x80a86e9) at
Objects/abstract.c:1860
#13 0x080a86e9 in slot_tp_call (self=0xbf975c78, args=0x0, kwds=0x805bdb6)
at Objects/typeobject.c:4633
#14 0x0805bdb6 in PyObject_Call (func=0x0, arg=0x95f16ac, kw=0x80d017b) at
Objects/abstract.c:1860
#15 0x080d017b in do_call (func=0x0, pp_stack=0x1, na=1, nk=154955456) at
Python/ceval.c:3775
#16 0x080cfd56 in call_function (pp_stack=0x0, oparg=1) at
Python/ceval.c:3587
#17 0x080cb19a in PyEval_EvalFrameEx. () at Python/ceval.c:2267
#18 0x080ca848 in PyEval_EvalCodeEx. () at Python/ceval.c:2831
#19 0x0811de5b in function_call (func=0x0, arg=0x960520c, kw=0x30) at
Objects/funcobject.c:517
#20 0x0805bdb6 in PyObject_Call (func=0x0, arg=0x960520c, kw=0x8061a66) at
Objects/abstract.c:1860
#21 0x08061a66 in instancemethod_call (func=0x95ecbac, arg=0x94f57d4,
kw=0x805bdb6) at Objects/classobject.c:2497
#22 0x0805bdb6 in PyObject_Call (func=0x0, arg=0x95ecbac, kw=0x80a86e9) at
Objects/abstract.c:1860
#23 0x080a86e9 in slot_tp_call (self=0xbf97609c, args=0x0, kwds=0x805bdb6)
at Objects/typeobject.c:4633
#24 0x0805bdb6 in PyObject_Call (func=0x0, arg=0x95ecbac, kw=0x80d017b) at
Objects/abstract.c:1860
#25 0x080d017b in do_call (func=0x0, pp_stack=0x1, na=1, nk=156957888) at
Python/ceval.c:3775
#26 0x080cfd56 in call_function (pp_stack=0x0, oparg=1) at
Python/ceval.c:3587
#27 0x080cb19a in PyEval_EvalFrameEx. () at Python/ceval.c:2267
#28 0x080ca848 in PyEval_EvalCodeEx. () at Python/ceval.c:2831
#29 0x0811de5b in function_call (func=0x0, arg=0x960518c, kw=0x9548a1) at
Objects/funcobject.c:517
#30 0x0805bdb6 in PyObject_Call (func=0x0, arg=0x960518c, kw=0x8061a66) at
Objects/abstract.c:1860
#31 0x08061a66 in instancemethod_call (func=0x960526c, arg=0x95fc874,
kw=0x805bdb6) at Objects/classobject.c:2497
#32 0x0805bdb6 in PyObject_Call (func=0x0, arg=0x960526c, kw=0x80a86e9) at
Objects/abstract.c:1860
#33 0x080a86e9 in slot_tp_call (self=0xbf9764c0, args=0x0, kwds=0x805bdb6)
at Objects/typeobject.c:4633
#34 0x0805bdb6 in PyObject_Call (func=0x0, arg=0x960526c, kw=0x80d017b) at
Objects/abstract.c:1860
#35 0x080d017b in do_call (func=0x0, pp_stack=0x1, na=1, nk=157640136) at
Python/ceval.c:3775
#36 0x080cfd56 in call_function (pp_stack=0x0, oparg=1) at
Python/ceval.c:3587
#37 0x080cb19a in PyEval_EvalFrameEx. () at Python/ceval.c:2267
#38 0x080ca848 in PyEval_EvalCodeEx. () at Python/ceval.c:2831
#39 0x0811de5b in function_call (func=0x0, arg=0x95f260c, kw=0x0) at
Objects/funcobject.c:517
#40 0x0805bdb6 in PyObject_Call (func=0x9609934, arg=0x95f260c,
kw=0x8061a66) at Objects/abstract.c:1860

Seems that

2007/10/15, Travis E. Oliphant <oliphant at enthought.com>:
>
> Matthieu Brucher wrote:
> >
> >     The problem is that there is a data-type reference counting error
> some
> >     where that is attempting to deallocate the built-in data-type 'l'
> >
> >
> >
> > That's what I supposed, but I couldn't find the reason why it wanted
> > to do this
> >
> >
> >     It's not really a Python error but a logging.  The code won't let
> you
> >     deallocate the built-ins, but it will tell you that something
> >     tried to.
> >
> >     Reference counting on data-types is easy to get wrong
> >     (particularly with
> >     Pyrex extension modules) because most calls consume a reference to
> the
> >     data-type (if they return an object that  contains a reference to
> the
> >     data-type).
> >
> >     It is a bug, and it would be nice to figure it out, but that would
> >     require the code that caused it.
> >
> >
> > I've updated my numpy version to the latest svn, the behaviour seems
> > to be different (more warnings), I'll try to give more information
> > about the error, but giving the whole code will not be simple (it uses
> > a big data file that seems to trigger the error as with other data
> > files, the error didn't show up :()
> >
>
> There are two types of errors that can occur with reference counting on
> data-types.
>
> 1) There are too many DECREF's --- this gets us to the error quickly and
> is usually easy to reproduce
> 2) There are too many INCREF's (the reference count keeps going up until
> the internal counter wraps around to 0 and deallocation is attempted)
> --- this error is harder to reproduce and usually takes a while before
> it happens in the code.
>
>
> -Travis
>
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion at scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20071019/2129d3d1/attachment.html>


More information about the NumPy-Discussion mailing list