summaryrefslogtreecommitdiffstats
path: root/Python/pythonrun.c
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2014-02-13 11:48:54 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2014-02-13 11:48:54 (GMT)
commit15054c16c8a562bd06fde2369012530fa2cda0a1 (patch)
tree6d5bfdfa5590d326004d9e3113adbea62379facf /Python/pythonrun.c
parente755fba2d11bc9ceb88d6bad176763b65a1524d3 (diff)
downloadcpython-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/pythonrun.c')
-rw-r--r--Python/pythonrun.c20
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();