From d91d4de31745fc1ed4c7e6c208917827c9c472b6 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 9 Sep 2019 17:44:59 +0200 Subject: 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. --- Modules/gcmodule.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c index 134f6d1..f6e841d 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 -- cgit v0.12