sorry for the quick cross-post, but I know that many mpl users rely on
the ipython -pylab support for interactive work.
This is a call for testing from current SVN of anyone who uses ipython
with the GUI thread support, whether via -pylab or directly via one of
the -Xthread options.
For a long time I've known that this code was subject to possible
deadlocks, having seen it go nuts on me on occasion, but I'd never
been able to track down the exact source of the race conditions
causing it (I'm not an expert in threads at all). In
a very helpful analysis and solution code was provided by Marc. I've
applied his fixes to current SVN, and with my testing so far I've been
unable to get any more deadlocks or crashes, so this looks great, and
his analysis looks very sound to me. In particular, it makes proper
use of a re-entrant lock which I'd originally tried to use but given
up on, due to having used it incorrectly (though I knew it should be
the right tool). I'd just left a comment noting the issue, which
Marc's fixes now address.
It would be great if any of you who relies on the GUI thread support
could test this, since this threaded code is subtle and has a long
history of hard to trigger but annoying bugs. You can run it from
SVN. In a few minutes I'll finish uploading test builds as well to
if you prefer to install from there.
I'd appreciate feedback, either of improvements or of any remaining misbehavior.
Thanks, especially to Marc for helping us make progress on this