]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-46417: Call _PyDebug_PrintTotalRefs() later (GH-30744)
authorVictor Stinner <vstinner@python.org>
Fri, 21 Jan 2022 12:05:26 +0000 (13:05 +0100)
committerGitHub <noreply@github.com>
Fri, 21 Jan 2022 12:05:26 +0000 (13:05 +0100)
"python -X showrefcount" now shows the total reference count after
clearing and destroyed the main Python interpreter. Previously, it
was shown before.

Py_FinalizeEx() now calls _PyDebug_PrintTotalRefs() after
finalize_interp_delete().

Misc/NEWS.d/next/Core and Builtins/2022-01-21-12-24-14.bpo-46417.i3IqMf.rst [new file with mode: 0644]
Python/pylifecycle.c

diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-01-21-12-24-14.bpo-46417.i3IqMf.rst b/Misc/NEWS.d/next/Core and Builtins/2022-01-21-12-24-14.bpo-46417.i3IqMf.rst
new file mode 100644 (file)
index 0000000..c7e2ee3
--- /dev/null
@@ -0,0 +1,3 @@
+``python -X showrefcount`` now shows the total reference count after clearing
+and destroyed the main Python interpreter. Previously, it was shown before.
+Patch by Victor Stinner.
index 0b1f47147696d6d8be5326da905ca5bda0475466..5572f61c7288a2c07bdc808a245cac481d009434 100644 (file)
@@ -1862,12 +1862,6 @@ Py_FinalizeEx(void)
     /* dump hash stats */
     _PyHash_Fini();
 
-#ifdef Py_REF_DEBUG
-    if (show_ref_count) {
-        _PyDebug_PrintTotalRefs();
-    }
-#endif
-
 #ifdef Py_TRACE_REFS
     /* Display all objects still alive -- this can invoke arbitrary
      * __repr__ overrides, so requires a mostly-intact interpreter.
@@ -1895,6 +1889,12 @@ Py_FinalizeEx(void)
     finalize_interp_clear(tstate);
     finalize_interp_delete(tstate->interp);
 
+#ifdef Py_REF_DEBUG
+    if (show_ref_count) {
+        _PyDebug_PrintTotalRefs();
+    }
+#endif
+
 #ifdef Py_TRACE_REFS
     /* Display addresses (& refcnts) of all objects still alive.
      * An address can be used to find the repr of the object, printed