Nick Coghlan added the comment: +1 for treating Queue.put() specifically as the case to be handled, as that's the mechanism that can be used to *avoid* running complex operations directly in __del__ methods and weakref callbacks.
For testing purposes, the current deadlock can be reliably reproduced with sys.settrace: ``` >>> import sys >>> import queue >>> the_queue=queue.Queue() >>> counter = 0 >>> def bad_trace(*args): ... global counter ... counter += 1 ... print(counter) ... the_queue.put(counter) ... return bad_trace ... >>> sys.settrace(bad_trace) >>> the_queue.put(None) 1 2 3 4 5 6 7 [and here we have a deadlock] ``` ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue14976> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com