Kaydet (Commit) 1707aad2 authored tarafından Guido van Rossum's avatar Guido van Rossum

Changed the finalization order again so that the reference count

printing (when Py_DEBUG is defined) happens while there's still a
current thread...
üst be1eb0d9
......@@ -198,13 +198,29 @@ Py_Finalize()
/* Destroy all modules */
PyImport_Cleanup();
/* Destroy the database used by _PyImport_{Fixup,Find}Extension */
_PyImport_Fini();
/* Debugging stuff */
#ifdef COUNT_ALLOCS
dump_counts();
#endif
#ifdef Py_REF_DEBUG
fprintf(stderr, "[%ld refs]\n", _Py_RefTotal);
#endif
#ifdef Py_TRACE_REFS
if (_Py_AskYesNo("Print left references?")) {
_Py_PrintReferences(stderr);
}
#endif /* Py_TRACE_REFS */
/* Delete current thread */
PyInterpreterState_Clear(interp);
PyThreadState_Swap(NULL);
PyInterpreterState_Delete(interp);
_PyImport_Fini();
/* Now we decref the exception classes. After this point nothing
can raise an exception. That's okay, because each Fini() method
below has been checked to make sure no exceptions are ever
......@@ -229,18 +245,7 @@ Py_Finalize()
call_ll_exitfuncs();
#ifdef COUNT_ALLOCS
dump_counts();
#endif
#ifdef Py_REF_DEBUG
fprintf(stderr, "[%ld refs]\n", _Py_RefTotal);
#endif
#ifdef Py_TRACE_REFS
if (_Py_AskYesNo("Print left references?")) {
_Py_PrintReferences(stderr);
}
_Py_ResetReferences();
#endif /* Py_TRACE_REFS */
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment