From 1167e6123624eff302f3819db851b78129096eb3 Mon Sep 17 00:00:00 2001 From: willwolf Date: Wed, 24 Feb 2021 16:49:38 +0800 Subject: [PATCH] python3: revert fix a reference leak if a thread is not joined --- ...rence-leak-if-a-thread-is-not-joined.patch | 63 ------------------- python3.spec | 10 ++- 2 files changed, 7 insertions(+), 66 deletions(-) delete mode 100644 backport-Fix-a-reference-leak-if-a-thread-is-not-joined.patch diff --git a/backport-Fix-a-reference-leak-if-a-thread-is-not-joined.patch b/backport-Fix-a-reference-leak-if-a-thread-is-not-joined.patch deleted file mode 100644 index 2919676..0000000 --- a/backport-Fix-a-reference-leak-if-a-thread-is-not-joined.patch +++ /dev/null @@ -1,63 +0,0 @@ -From d3dcc92778807ae8f7ebe85178f36a29711cd478 Mon Sep 17 00:00:00 2001 -From: Victor Stinner -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. diff --git a/python3.spec b/python3.spec index 4b66778..e28721c 100644 --- a/python3.spec +++ b/python3.spec @@ -3,7 +3,7 @@ Summary: Interpreter of the Python3 programming language URL: https://www.python.org/ Version: 3.7.9 -Release: 6 +Release: 7 License: Python %global branchversion 3.7 @@ -104,7 +104,6 @@ Patch317: CVE-2019-17514.patch Patch318: CVE-2019-9674.patch Patch319: python3-add-generic-os-support.patch Patch320: CVE-2020-27619.patch -Patch321: backport-Fix-a-reference-leak-if-a-thread-is-not-joined.patch Patch322: CVE-2021-3177.patch Provides: python%{branchversion} = %{version}-%{release} @@ -196,7 +195,6 @@ rm Lib/ensurepip/_bundled/*.whl %patch318 -p1 %patch319 -p1 %patch320 -p1 -%patch321 -p1 %patch322 -p1 sed -i "s/generic_os/%{_vendor}/g" Lib/platform.py @@ -799,6 +797,12 @@ export BEP_GTDLIST="$BEP_GTDLIST_TMP" %{_mandir}/*/* %changelog +* Wed Feb 24 2021 hehuazhen - 3.7.9-7 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:revert fix a reference leak if a thread is not joined + * Sun Feb 07 2021 shangyibin - 3.7.9-6 - Type:cves - ID:CVE-2021-3177 -- Gitee