id summary reporter owner description type status component version severity resolution keywords cc stage has_patch needs_docs needs_tests needs_better_patch easy ui_ux 19947 weakref'd signal receivers may cause deadlock when gc'd john@… "By default when a receiver is connected to a Signal it is wrapped in a saferef has a call back to Signal._remove_reciever when gc'd. Inside, _remove_receiver it acquires a lock on itself before proceeding to delete the reference of the receiver from the signal. To find the receiver, the receiver list is reversed. This generates a new listreverseiterator to be created. In turn, this can may cause a GC to run. Which clears all unreachable weakrefs, one of which may be another receiver connected to the same signal. The gc calls the callback on this receiver (_remove_receiver) and hits a deadlock on trying to acquire the Lock again." Bug closed Core (Other) 1.5 Normal duplicate Accepted 0 0 0 0 0 0