diff --git a/00371-revert-bpo-1596321-fix-threading-_shutdown-for-the-main-thread-gh-28549-gh-28589.patch b/00371-revert-bpo-1596321-fix-threading-_shutdown-for-the-main-thread-gh-28549-gh-28589.patch deleted file mode 100644 index 7146a82..0000000 --- a/00371-revert-bpo-1596321-fix-threading-_shutdown-for-the-main-thread-gh-28549-gh-28589.patch +++ /dev/null @@ -1,103 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Hrn=C4=8Diar?= -Date: Tue, 25 Oct 2022 12:02:33 +0200 -Subject: [PATCH] 00371: Revert "bpo-1596321: Fix threading._shutdown() for the - main thread (GH-28549) (GH-28589)" - -This reverts commit 38c67738c64304928c68d5c2bd78bbb01d979b94. It -introduced regression causing FreeIPA's tests to fail. - -For more info see: -https://bodhi.fedoraproject.org/updates/FEDORA-2021-e152ce5f31 -https://github.com/GrahamDumpleton/mod_wsgi/issues/730 ---- - Lib/test/test_threading.py | 33 --------------------------------- - Lib/threading.py | 25 ++++++++----------------- - 2 files changed, 8 insertions(+), 50 deletions(-) - -diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py -index 00d9e591c7..3314319fec 100644 ---- a/Lib/test/test_threading.py -+++ b/Lib/test/test_threading.py -@@ -1089,39 +1089,6 @@ def noop(): pass - threading.Thread(target=noop).start() - # Thread.join() is not called - -- def test_import_from_another_thread(self): -- # bpo-1596321: If the threading module is first import from a thread -- # different than the main thread, threading._shutdown() must handle -- # this case without logging an error at Python exit. -- code = textwrap.dedent(''' -- import _thread -- import sys -- -- event = _thread.allocate_lock() -- event.acquire() -- -- def import_threading(): -- import threading -- event.release() -- -- if 'threading' in sys.modules: -- raise Exception('threading is already imported') -- -- _thread.start_new_thread(import_threading, ()) -- -- # wait until the threading module is imported -- event.acquire() -- event.release() -- -- if 'threading' not in sys.modules: -- raise Exception('threading is not imported') -- -- # don't wait until the thread completes -- ''') -- rc, out, err = assert_python_ok("-c", code) -- self.assertEqual(out, b'') -- self.assertEqual(err, b'') -- - def test_start_new_thread_at_exit(self): - code = """if 1: - import atexit -diff --git a/Lib/threading.py b/Lib/threading.py -index 98cb43c697..ee647f8549 100644 ---- a/Lib/threading.py -+++ b/Lib/threading.py -@@ -1585,29 +1585,20 @@ def _shutdown(): - - global _SHUTTING_DOWN - _SHUTTING_DOWN = True -+ # Main thread -+ tlock = _main_thread._tstate_lock -+ # The main thread isn't finished yet, so its thread state lock can't have -+ # been released. -+ assert tlock is not None -+ assert tlock.locked() -+ tlock.release() -+ _main_thread._stop() - - # Call registered threading atexit functions before threads are joined. - # Order is reversed, similar to atexit. - for atexit_call in reversed(_threading_atexits): - atexit_call() - -- # Main thread -- if _main_thread.ident == get_ident(): -- tlock = _main_thread._tstate_lock -- # The main thread isn't finished yet, so its thread state lock can't -- # have been released. -- assert tlock is not None -- assert tlock.locked() -- tlock.release() -- _main_thread._stop() -- else: -- # bpo-1596321: _shutdown() must be called in the main thread. -- # If the threading module was not imported by the main thread, -- # _main_thread is the thread which imported the threading module. -- # In this case, ignore _main_thread, similar behavior than for threads -- # spawned by C libraries or using _thread.start_new_thread(). -- pass -- - # Join all non-deamon threads - while True: - with _shutdown_locks_lock: diff --git a/python3.12.spec b/python3.12.spec index 6d8f5be..88f5f96 100644 --- a/python3.12.spec +++ b/python3.12.spec @@ -17,7 +17,7 @@ URL: https://www.python.org/ #global prerel ... %global upstream_version %{general_version}%{?prerel} Version: %{general_version}%{?prerel:~%{prerel}} -Release: 2%{?dist} +Release: 3%{?dist} License: Python-2.0.1 @@ -357,17 +357,6 @@ Source11: idle3.appdata.xml # pypa/distutils integration: https://github.com/pypa/distutils/pull/70 Patch251: 00251-change-user-install-location.patch -# 00371 # d917a50238c94c652bc30ae9061d65f60cc8accd -# Revert "bpo-1596321: Fix threading._shutdown() for the main thread (GH-28549) (GH-28589)" -# -# This reverts commit 38c67738c64304928c68d5c2bd78bbb01d979b94. It -# introduced regression causing FreeIPA's tests to fail. -# -# For more info see: -# https://bodhi.fedoraproject.org/updates/FEDORA-2021-e152ce5f31 -# https://github.com/GrahamDumpleton/mod_wsgi/issues/730 -Patch371: 00371-revert-bpo-1596321-fix-threading-_shutdown-for-the-main-thread-gh-28549-gh-28589.patch - # 00415 # 5b830b814be638d1a167802780b5f498a4a5e97c # [CVE-2023-27043] gh-102988: Reject malformed addresses in email.parseaddr() (#111116) # @@ -1703,6 +1692,10 @@ CheckPython optimized # ====================================================== %changelog +* Tue Mar 12 2024 Victor Stinner - 3.12.2-3 +- No longer revert threading._shutdown() change. In older Python versions, + the change had to be reverted since it caused FreeIPA to hang at exit. + * Wed Feb 21 2024 Miro HronĨok - 3.12.2-2 - Fix tests for XMLPullParser with Expat 2.6.0