[Cython] Object not released when calling cpdef method from inherited class ?

Robert Bradshaw robertwb at math.washington.edu
Tue Jul 8 05:42:38 CEST 2008


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.

> I tried with both Cython 0.9.6 and Cython 0.9.8
>
> cheers,
> -Charlie
> _______________________________________________
> Cython-dev mailing list
> Cython-dev at codespeak.net
> http://codespeak.net/mailman/listinfo/cython-dev

-------------- 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/20080707/043950cb/attachment.pgp 


More information about the Cython-dev mailing list