!53 revert fix a reference leak if a thread is not joined
From: @willwolf Reviewed-by: @hanxinke Signed-off-by: @hanxinke
This commit is contained in:
commit
db2e497a36
@ -1,63 +0,0 @@
|
||||
From d3dcc92778807ae8f7ebe85178f36a29711cd478 Mon Sep 17 00:00:00 2001
|
||||
From: Victor Stinner <vstinner@redhat.com>
|
||||
Date: Mon, 19 Aug 2019 23:37:17 +0100
|
||||
Subject: [PATCH] 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.
|
||||
---
|
||||
Lib/test/test_threading.py | 8 ++++++++
|
||||
Lib/threading.py | 10 ++++++++++
|
||||
.../Library/2019-08-12-17-21-10.bpo-37788.F0tR05.rst | 1 +
|
||||
3 files changed, 19 insertions(+)
|
||||
create mode 100644 Misc/NEWS.d/next/Library/2019-08-12-17-21-10.bpo-37788.F0tR05.rst
|
||||
|
||||
diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
|
||||
index 7c16974c1630a..5e90627822f9f 100644
|
||||
--- a/Lib/test/test_threading.py
|
||||
+++ b/Lib/test/test_threading.py
|
||||
@@ -761,6 +761,14 @@ def test_shutdown_locks(self):
|
||||
# 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):
|
||||
|
||||
diff --git a/Lib/threading.py b/Lib/threading.py
|
||||
index 32a3d7c303362..67e1c4facfee2 100644
|
||||
--- a/Lib/threading.py
|
||||
+++ b/Lib/threading.py
|
||||
@@ -806,6 +806,16 @@ class is implemented.
|
||||
# For debugging and _after_fork()
|
||||
_dangling.add(self)
|
||||
|
||||
+ def __del__(self):
|
||||
+ if not self._initialized:
|
||||
+ return
|
||||
+ lock = self._tstate_lock
|
||||
+ if lock is not None and not self.daemon:
|
||||
+ # ensure that self._tstate_lock is not in _shutdown_locks
|
||||
+ # if join() was not called explicitly
|
||||
+ with _shutdown_locks_lock:
|
||||
+ _shutdown_locks.discard(lock)
|
||||
+
|
||||
def _reset_internal_locks(self, is_alive):
|
||||
# private! Called by _after_fork() to reset our internal locks as
|
||||
# they may be in an invalid state leading to a deadlock or crash.
|
||||
diff --git a/Misc/NEWS.d/next/Library/2019-08-12-17-21-10.bpo-37788.F0tR05.rst b/Misc/NEWS.d/next/Library/2019-08-12-17-21-10.bpo-37788.F0tR05.rst
|
||||
new file mode 100644
|
||||
index 0000000000000..d9b1e82b92238
|
||||
--- /dev/null
|
||||
+++ b/Misc/NEWS.d/next/Library/2019-08-12-17-21-10.bpo-37788.F0tR05.rst
|
||||
@@ -0,0 +1 @@
|
||||
+Fix a reference leak if a thread is not joined.
|
||||
10
python3.spec
10
python3.spec
@ -3,7 +3,7 @@ Summary: Interpreter of the Python3 programming language
|
||||
URL: https://www.python.org/
|
||||
|
||||
Version: 3.8.5
|
||||
Release: 5
|
||||
Release: 6
|
||||
License: Python
|
||||
|
||||
%global branchversion 3.8
|
||||
@ -96,7 +96,6 @@ Patch189: 00189-use-rpm-wheels.patch
|
||||
Patch205: 00205-make-libpl-respect-lib64.patch
|
||||
Patch251: 00251-change-user-install-location.patch
|
||||
Patch252: CVE-2020-27619.patch
|
||||
Patch253: backport-Fix-a-reference-leak-if-a-thread-is-not-joined.patch
|
||||
Patch254: CVE-2021-3177.patch
|
||||
|
||||
Provides: python%{branchversion} = %{version}-%{release}
|
||||
@ -191,7 +190,6 @@ rm Lib/ensurepip/_bundled/*.whl
|
||||
%patch205 -p1
|
||||
%patch251 -p1
|
||||
%patch252 -p1
|
||||
%patch253 -p1
|
||||
%patch254 -p1
|
||||
|
||||
rm configure pyconfig.h.in
|
||||
@ -800,6 +798,12 @@ export BEP_GTDLIST="$BEP_GTDLIST_TMP"
|
||||
%{_mandir}/*/*
|
||||
|
||||
%changelog
|
||||
* Wed Feb 24 2021 hehuazhen<hehuazhen@huawei.com> - 3.8.5-6
|
||||
- Type:bugfix
|
||||
- ID:NA
|
||||
- SUG:NA
|
||||
- DESC:revert fix a reference leak if a thread is not joined
|
||||
|
||||
* Sun Feb 07 2021 shangyibin<shangyibin1@huawei.com> - 3.8.5-5
|
||||
- Type:cves
|
||||
- ID:CVE-2021-3177
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user