From b9fcb26a96058cd0e849ce10920b3c04c93b5a4d Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Mon, 8 Dec 1997 23:43:45 +0000 Subject: Changed the finalization order again so that the reference count printing (when Py_DEBUG is defined) happens while there's still a current thread... --- Python/pythonrun.c | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) (limited to 'Python/pythonrun.c') diff --git a/Python/pythonrun.c b/Python/pythonrun.c index b8abe252ea..e574281918 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -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 */ } -- cgit v1.2.1