]> granicus.if.org Git - python/commitdiff
Move the call to _Py_PrintReferences() a bit further down. This
authorGuido van Rossum <guido@python.org>
Tue, 15 Apr 2003 14:10:09 +0000 (14:10 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 15 Apr 2003 14:10:09 +0000 (14:10 +0000)
prevents it from showing stuff (like codec state) that is cleared when
the interpreter state is cleared.

Python/pythonrun.c

index 2de1bded5610a31cdbde87e6fcb3a3e8cf2b9280..fdbd19f187666eb0739fb39a520b9a2603139f31 100644 (file)
@@ -270,12 +270,6 @@ Py_Finalize(void)
        fprintf(stderr, "[%ld refs]\n", _Py_RefTotal);
 #endif
 
-#ifdef Py_TRACE_REFS
-       if (Py_GETENV("PYTHONDUMPREFS")) {
-               _Py_PrintReferences(stderr);
-       }
-#endif /* Py_TRACE_REFS */
-
        /* 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
@@ -283,11 +277,22 @@ Py_Finalize(void)
        */
        _PyExc_Fini();
 
-       /* Delete current thread */
+       /* Clear interpreter state */
        PyInterpreterState_Clear(interp);
+
+#ifdef Py_TRACE_REFS
+       /* Dump references -- this may implicitly need the thread state,
+          so this is the last possible place where we can do this. */
+       if (Py_GETENV("PYTHONDUMPREFS")) {
+               _Py_PrintReferences(stderr);
+       }
+#endif /* Py_TRACE_REFS */
+
+       /* Delete current thread */
        PyThreadState_Swap(NULL);
        PyInterpreterState_Delete(interp);
 
+       /* Sundry finalizers */
        PyMethod_Fini();
        PyFrame_Fini();
        PyCFunction_Fini();