From: Victor Stinner Date: Wed, 16 Jun 2021 09:41:17 +0000 (+0200) Subject: bpo-44422: threading.Thread reuses the _delete() method (GH-26741) X-Git-Tag: v3.11.0a1~848 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0729694246174a5c2f0ae197f2e0dbea61b90c9f;p=thirdparty%2FPython%2Fcpython.git bpo-44422: threading.Thread reuses the _delete() method (GH-26741) The _bootstrap_inner() method of threading.Thread now reuses its _delete() method rather than accessing _active() directly. It became possible since _active_limbo_lock became reentrant. Moreover, it no longer ignores any exception when deleting the thread from the _active dictionary. --- diff --git a/Lib/threading.py b/Lib/threading.py index 766011fa0312..c2b94a504551 100644 --- a/Lib/threading.py +++ b/Lib/threading.py @@ -1010,13 +1010,7 @@ class Thread: except: self._invoke_excepthook(self) finally: - with _active_limbo_lock: - try: - # We don't call self._delete() because it also - # grabs _active_limbo_lock. - del _active[get_ident()] - except: - pass + self._delete() def _stop(self): # After calling ._stop(), .is_alive() returns False and .join() returns