[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