mirror of
https://github.com/python/cpython.git
synced 2025-07-10 04:45:36 +00:00
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.
This commit is contained in:
parent
025ef7a5f7
commit
60e105c1c1
8 changed files with 57 additions and 27 deletions
|
@ -505,7 +505,7 @@ unicode_check_encoding_errors(const char *encoding, const char *errors)
|
|||
|
||||
/* Disable checks during Python finalization. For example, it allows to
|
||||
call _PyObject_Dump() during finalization for debugging purpose. */
|
||||
if (interp->finalizing) {
|
||||
if (_PyInterpreterState_GetFinalizing(interp) != NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue