Mátyás János | 2 Oct 00:43

memory leak: gtk.gdk.Pixbuf and gtk.gdk.GCX11 with gtkagg backend

Hi,

I'm looking for memory leaks in a python application and found leaks in
matplotlib. The application is graphic intensive. Each time it updates
the screen, matplotlib allocates another 5-10 megabytes memory for the
new gtk.gdk.Pixbuf and gtk.gdk.GCX11 while does not free up the buffers
allocated for the previous content.

I switched on garbage collection debugging with:

import gc
gc.enable()
gc.set_debug(gc.DEBUG_LEAK)

and tried to delete the leaking objects:

--- ./lib/matplotlib/backends/backend_gtkagg.py 2008-06-23
04:09:29.000000000 +0200 ++
+ /usr/lib/python2.4/site-packages/matplotlib-0.91.4-py2.4-linux-i686.egg/matplotlib/backends/backend_gtkagg.py
2008-10-02 00:05:32.000000000 +0200 @@ -3,6 +3,7 @@ """
 from __future__ import division
 import os
+import gc

 import matplotlib
 from matplotlib.figure import Figure
@@ -82,8 +83,17 @@
         h = int(ren.height)
         pixbuf = gtk.gdk.pixbuf_new_from_data(
             buf, gtk.gdk.COLORSPACE_RGB,  True, 8, w, h, w*4)
(Continue reading)

Eric Firing | 2 Oct 01:45
Favicon

Re: memory leak: gtk.gdk.Pixbuf and gtk.gdk.GCX11 with gtkagg backend

Mátyás János wrote:
> Hi,
> 
> I'm looking for memory leaks in a python application and found leaks in
> matplotlib. The application is graphic intensive. Each time it updates
> the screen, matplotlib allocates another 5-10 megabytes memory for the
> new gtk.gdk.Pixbuf and gtk.gdk.GCX11 while does not free up the buffers
> allocated for the previous content.
> 

This sounds to me like a pygtk bug, not a matplotlib bug; a gtk object 
is hanging around after its reference has been deleted. What versions of 
gtk and pygtk are you using?  This sounds dimly familiar.  I don't know 
enough about gtk and pygtk to help, but I am sure the people who do know 
more will want to know the version.

Eric

> I switched on garbage collection debugging with:
> 
> import gc
> gc.enable()
> gc.set_debug(gc.DEBUG_LEAK)
> 
> and tried to delete the leaking objects:
> 
> --- ./lib/matplotlib/backends/backend_gtkagg.py 2008-06-23
> 04:09:29.000000000 +0200 ++
> + /usr/lib/python2.4/site-packages/matplotlib-0.91.4-py2.4-linux-i686.egg/matplotlib/backends/backend_gtkagg.py
> 2008-10-02 00:05:32.000000000 +0200 @@ -3,6 +3,7 @@ """
(Continue reading)

Michael Droettboom | 2 Oct 14:26
Gravatar

Re: memory leak: gtk.gdk.Pixbuf and gtk.gdk.GCX11 with gtkagg backend

Agreed.  I'm not sure how this bug could be resolved only on the 
matplotlib side.  See if you can make a standalone (pygtk-only) example 
that demonstrates this bug and send it to their mailing list.  Also, if 
it's possible, try updating pygtk.  There was a very similar bug in an 
earlier version (sorry, I can't find the reference), that was resolved.

Cheers,
Mike

Eric Firing wrote:
> Mátyás János wrote:
>   
>> Hi,
>>
>> I'm looking for memory leaks in a python application and found leaks in
>> matplotlib. The application is graphic intensive. Each time it updates
>> the screen, matplotlib allocates another 5-10 megabytes memory for the
>> new gtk.gdk.Pixbuf and gtk.gdk.GCX11 while does not free up the buffers
>> allocated for the previous content.
>>
>>     
>
> This sounds to me like a pygtk bug, not a matplotlib bug; a gtk object 
> is hanging around after its reference has been deleted. What versions of 
> gtk and pygtk are you using?  This sounds dimly familiar.  I don't know 
> enough about gtk and pygtk to help, but I am sure the people who do know 
> more will want to know the version.
>
> Eric
>
(Continue reading)

Mátyás János | 2 Oct 21:57

Re: memory leak: gtk.gdk.Pixbuf and gtk.gdk.GCX11 with gtkagg backend

Hi,

thank you very much! The memory leak disappeared after I updated
pygobject from 2.12 to 2.13.2.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/

Gmane