]> granicus.if.org Git - python/commitdiff
Changed the finalization order again so that the reference count
authorGuido van Rossum <guido@python.org>
Mon, 8 Dec 1997 23:43:45 +0000 (23:43 +0000)
committerGuido van Rossum <guido@python.org>
Mon, 8 Dec 1997 23:43:45 +0000 (23:43 +0000)
printing (when Py_DEBUG is defined) happens while there's still a
current thread...

Python/pythonrun.c

index b8abe252ea13aeb1a640cf9608b3d0dbca030def..e57428191885736d773b79207ba4b0666d9fe2a4 100644 (file)
@@ -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 */
 }