[Python-checkins] bpo-46417: Call _PyDebug_PrintTotalRefs() later (GH-30744)

vstinner webhook-mailer at python.org
Fri Jan 21 07:05:36 EST 2022


https://github.com/python/cpython/commit/ea38e436fe1e585fb8c1f0badf5482f525b7f9ff
commit: ea38e436fe1e585fb8c1f0badf5482f525b7f9ff
branch: main
author: Victor Stinner <vstinner at python.org>
committer: vstinner <vstinner at python.org>
date: 2022-01-21T13:05:26+01:00
summary:

bpo-46417: Call _PyDebug_PrintTotalRefs() later (GH-30744)

"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().

files:
A Misc/NEWS.d/next/Core and Builtins/2022-01-21-12-24-14.bpo-46417.i3IqMf.rst
M 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
index 0000000000000..c7e2ee33500d9
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2022-01-21-12-24-14.bpo-46417.i3IqMf.rst	
@@ -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.
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index 0b1f47147696d..5572f61c7288a 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -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



More information about the Python-checkins mailing list