diff options
author | Victor Stinner <vstinner@redhat.com> | 2019-08-19 22:37:17 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-19 22:37:17 (GMT) |
commit | d3dcc92778807ae8f7ebe85178f36a29711cd478 (patch) | |
tree | 9f416500ba67997ae72cda0594f5bcc62ac303b9 /Lib/test/test_threading.py | |
parent | cf9360e524acafdce99a8a1e48947fd7da06f3d4 (diff) | |
download | cpython-d3dcc92778807ae8f7ebe85178f36a29711cd478.zip cpython-d3dcc92778807ae8f7ebe85178f36a29711cd478.tar.gz cpython-d3dcc92778807ae8f7ebe85178f36a29711cd478.tar.bz2 |
bpo-37788: Fix a reference leak if a thread is not joined (GH-15228)
Add threading.Thread.__del__() method to ensure that the thread state
lock is removed from the _shutdown_locks list when a thread
completes.
Diffstat (limited to 'Lib/test/test_threading.py')
-rw-r--r-- | Lib/test/test_threading.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py index 7c16974..5e90627 100644 --- a/Lib/test/test_threading.py +++ b/Lib/test/test_threading.py @@ -761,6 +761,14 @@ class ThreadTests(BaseTestCase): # Daemon threads must never add it to _shutdown_locks. self.assertNotIn(tstate_lock, threading._shutdown_locks) + def test_leak_without_join(self): + # bpo-37788: Test that a thread which is not joined explicitly + # does not leak. Test written for reference leak checks. + def noop(): pass + with support.wait_threads_exit(): + threading.Thread(target=noop).start() + # Thread.join() is not called + class ThreadJoinOnShutdown(BaseTestCase): |