Andrew Suffield <asuffi...@suffields.me.uk> added the comment:

I think I've tripped over a variation on this theme using pyqt and 2.7:

When working in a QThread, the PyGILState_Ensure call when transitioning 
control from Qt to python will frequently allocate a new thread state - because 
every time control returns to the Qt event loop, gilstate_counter is likely to 
become zero.

If a generator is kept around longer than this, it becomes quite likely to have 
an older thread state in f_tstate. This happens all the time.

The access that blows up on me is PyEval_GetRestricted, since 
PyFrame_IsRestricted checks f_tstate. Annoyingly this debris is still called on 
the possibly-restricted operations even when restricted execution is nowhere in 
sight.

Hence, any use of open() in a long-lived generator in a QThread is probably 
going to crash.

Patch against 2.7?

----------
nosy: +asuffield

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue14432>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to