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.
This commit is contained in:
Victor Stinner 2014-02-13 12:48:54 +01:00
parent e755fba2d1
commit 15054c16c8
3 changed files with 9 additions and 64 deletions

View file

@ -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();