[Cython] Object not released when calling cpdef method from inherited class ?
Robert Bradshaw
robertwb at math.washington.edu
Sun Aug 3 01:41:18 CEST 2008
On Jul 7, 2008, at 8:42 PM, Robert Bradshaw wrote:
> On Jul 7, 2008, at 8:37 PM, Guillaume Chereau wrote:
>
>> Hello all,
>>
>> I am currently using cython for a project related to openmoko cell
>> phone : http://charlie137-2.blogspot.com/2008/07/introducing-
>> tichy.html
>>
>> I noticed that the memory is constantly increasing when I use
>> cython. I
>> tracked down the problem to the case where I create a subclass of a
>> cython class and then redefine a cpdef method, asking it to call the
>> parent method, but ONLY if the cpdef method then call an other cpdef
>> method !
>>
>> Here is the smallest example I could come with that fails :
>>
>>
>> == test.pyx ==
>>
>> cdef class A:
>> cpdef func(self):
>> return
>>
>> cpdef test(self):
>> self.func()
>>
>>
>> == main.py ==
>>
>> import test
>> import gc
>>
>> class B(test.A):
>> def test(self):
>> test.A.test(self)
>>
>> b = B()
>>
>> for i in range(10):
>> b.test()
>> gc.collect()
>> print len(gc.get_objects())
>>
>>
>> The output will show that some objects are not released.
>>
>> Is it a known bug ? Is there a way to avoid it ?
>
> This isn't a known bug, but does sound like something fishy is
> going on. Thanks for the report. The easiest fix I have for now is
> to make one or the other methods an ordinary def method
> (sacrificing speed for better memory handling), but I'll be looking
> into it.
See http://hg.cython.org/cython-devel/rev/f612fb161cd0
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: This is a digitally signed message part
Url : http://codespeak.net/pipermail/cython-dev/attachments/20080802/34cf2291/attachment.pgp
More information about the Cython-dev
mailing list