Interesting.  I don't get that, but I do get some random segfaults (I 
got lucky the first time I tested).

I'm awfully surprised that wx.GetApp() would return an iterator, as you 
are getting, so maybe it's corruption of some sort?

Reverting to revision 3441 on backend_wx.py does resolve this issue for 
me, so it is related to removing the wxapp global variable.  While I 
like the idea of removing global variables, that was problematic, since 
when the wxapp variable is dereferenced, the whole wx.App is destructed, 
(hence, I believe the segfaults).  Since I didn't want to just put the 
wxapp global variable back in, I assigned it to the figure that creates 
it, therefore stick around as long as the figure does.  (Is that the 
correct thing for its lifetime?)  Anyway, it seems to fix memleak_gui.py 
for me.  Ken and Tim will probably want to check that I didn't cause 
more mainloops to start than necessary in the process.

Also, I'm a little puzzled by this code in show() in backend_wx.py:

        wxapp = wx.GetApp()
        if wxapp is not None:
            # wxPython 2.4 has no wx.App.IsMainLoopRunning() method
            imlr = getattr(wxapp, 'IsMainLoopRunning', lambda: False)
            if imlr():
                wxapp.MainLoop()

If I'm reading this correctly, shouldn't it be "if not imlr()"?  If it 
is correct, maybe it needs a comment as to why mainloops should be 
started if a mainloop is already running.

Cheers,
Mike

Eric Firing wrote:
> Mike,
>
> New exception:
>
> [EMAIL PROTECTED]:~/programs/py/mpl/tests$ python 
> ../matplotlib_units/unit/memleak_gui.py -dwx -s1000 -e2000 > 
> ~/temp/memleak_wx_0705.asc
> Traceback (most recent call last):
>   File "../matplotlib_units/unit/memleak_gui.py", line 58, in <module>
>     pylab.close(fig)
>   File "/usr/local/lib/python2.5/site-packages/matplotlib/pylab.py", 
> line 742, in close
>     _pylab_helpers.Gcf.destroy(manager.num)
>   File 
> "/usr/local/lib/python2.5/site-packages/matplotlib/_pylab_helpers.py", 
> line 28, in destroy
>     figManager.destroy()
>   File 
> "/usr/local/lib/python2.5/site-packages/matplotlib/backends/backend_wx.py", 
> line 1405, in destroy
>     self.frame.Destroy()
>   File 
> "/usr/local/lib/python2.5/site-packages/matplotlib/backends/backend_wx.py", 
> line 1364, in Destroy
>     wxapp.Yield()
> AttributeError: 'listiterator' object has no attribute 'Yield'
>
>
> Eric
>


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to