diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2014-02-13 11:48:54 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2014-02-13 11:48:54 (GMT) |
commit | 15054c16c8a562bd06fde2369012530fa2cda0a1 (patch) | |
tree | 6d5bfdfa5590d326004d9e3113adbea62379facf /Python | |
parent | e755fba2d11bc9ceb88d6bad176763b65a1524d3 (diff) | |
download | cpython-15054c16c8a562bd06fde2369012530fa2cda0a1.zip cpython-15054c16c8a562bd06fde2369012530fa2cda0a1.tar.gz cpython-15054c16c8a562bd06fde2369012530fa2cda0a1.tar.bz2 |
Issue #20526, #19466: Revert changes of issue #19466 which introduces a
regression: don't clear anymore the state of Python threads early during the
Python shutdown.
Diffstat (limited to 'Python')
-rw-r--r-- | Python/pythonrun.c | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 34a291f..e9947e9 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -582,13 +582,11 @@ Py_Finalize(void) _Py_Finalizing = tstate; initialized = 0; - /* Destroy the state of all threads except of the current thread: in - practice, only daemon threads should still be alive. Clear frames of - other threads to call objects destructor. Destructors will be called in - the current Python thread. Since _Py_Finalizing has been set, no other - Python threads can lock the GIL at this point (if they try, they will - exit immediately). */ - _PyThreadState_DeleteExcept(tstate); + /* Flush stdout+stderr */ + flush_std_files(); + + /* Disable signal handling */ + PyOS_FiniInterrupts(); /* Collect garbage. This may call finalizers; it's nice to call these * before all modules are destroyed. @@ -603,7 +601,6 @@ Py_Finalize(void) * XXX I haven't seen a real-life report of either of these. */ PyGC_Collect(); - #ifdef COUNT_ALLOCS /* With COUNT_ALLOCS, it helps to run GC multiple times: each collection might release some types from the type @@ -611,13 +608,6 @@ Py_Finalize(void) while (PyGC_Collect() > 0) /* nothing */; #endif - - /* Flush stdout+stderr */ - flush_std_files(); - - /* Disable signal handling */ - PyOS_FiniInterrupts(); - /* Destroy all modules */ PyImport_Cleanup(); |