[issue14976] queue.Queue() is not reentrant, so signals and GC can cause deadlocks

mike bayer report at bugs.python.org
Thu Sep 8 17:59:52 EDT 2016


mike bayer added the comment:

SQLAlchemy suffered from this issue long ago as we use a Queue for connections, which can be collected via weakref callback and sent back to put(), which we observed can occur via gc.    For many years (like since 2007 or so) we've packaged a complete copy of Queue.Queue with an RLock inside of it to work around it.

I'm just noticing this issue because I'm writing a new connection pool implementation that tries to deal with this issue a little differently (not using Queue.Queue though).

----------
nosy: +zzzeek

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue14976>
_______________________________________


More information about the Python-bugs-list mailing list