]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-113964: Don't prevent new threads until all non-daemon threads exit (#116677)
authorSam Gross <colesbury@gmail.com>
Tue, 19 Mar 2024 18:40:20 +0000 (14:40 -0400)
committerGitHub <noreply@github.com>
Tue, 19 Mar 2024 18:40:20 +0000 (14:40 -0400)
commit60e105c1c11ecca1680d03c38aa06bcc77a28714
treeec314b15b7739ae1f0c463ebd47cff1d06b4260e
parent025ef7a5f7b424fba8713e448244b952bf897df3
gh-113964: Don't prevent new threads until all non-daemon threads exit (#116677)

Starting in Python 3.12, we prevented calling fork() and starting new threads
during interpreter finalization (shutdown). This has led to a number of
regressions and flaky tests. We should not prevent starting new threads
(or `fork()`) until all non-daemon threads exit and finalization starts in
earnest.

This changes the checks to use `_PyInterpreterState_GetFinalizing(interp)`,
which is set immediately before terminating non-daemon threads.
Lib/test/test_os.py
Lib/test/test_subprocess.py
Lib/test/test_threading.py
Misc/NEWS.d/next/Core and Builtins/2024-03-12-20-31-57.gh-issue-113964.bJppzg.rst [new file with mode: 0644]
Modules/_posixsubprocess.c
Modules/_threadmodule.c
Modules/posixmodule.c
Objects/unicodeobject.c