[Python-checkins] bpo-38070: visit_decref() calls _PyObject_IsFreed() (GH-15782)
Victor Stinner
webhook-mailer at python.org
Mon Sep 9 11:45:04 EDT 2019
https://github.com/python/cpython/commit/d91d4de31745fc1ed4c7e6c208917827c9c472b6
commit: d91d4de31745fc1ed4c7e6c208917827c9c472b6
branch: master
author: Victor Stinner <vstinner at redhat.com>
committer: GitHub <noreply at github.com>
date: 2019-09-09T17:44:59+02:00
summary:
bpo-38070: visit_decref() calls _PyObject_IsFreed() (GH-15782)
In debug mode, visit_decref() now calls _PyObject_IsFreed() to ensure
that the object is not freed. If it's freed, the program fails with
an assertion error and Python dumps informations about the freed
object.
files:
M Modules/gcmodule.c
diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c
index 134f6d168c96..f6e841d52ff9 100644
--- a/Modules/gcmodule.c
+++ b/Modules/gcmodule.c
@@ -376,6 +376,8 @@ static int
visit_decref(PyObject *op, void *data)
{
assert(op != NULL);
+ _PyObject_ASSERT(op, !_PyObject_IsFreed(op));
+
if (PyObject_IS_GC(op)) {
PyGC_Head *gc = AS_GC(op);
/* We're only interested in gc_refs for objects in the
More information about the Python-checkins
mailing list