diff -r a94156400269 Objects/descrobject.c --- a/Objects/descrobject.c Wed Apr 20 18:26:40 2016 +0200 +++ b/Objects/descrobject.c Thu Apr 21 09:36:05 2016 +0200 @@ -1387,9 +1387,15 @@ property_descr_get(PyObject *self, PyObj } args = cached_args; if (!args || Py_REFCNT(args) != 1) { - Py_CLEAR(cached_args); - if (!(cached_args = args = PyTuple_New(1))) + if (cached_args) { + _PyObject_GC_TRACK(cached_args); + Py_CLEAR(cached_args); + } + + cached_args = args = PyTuple_New(1); + if (!cached_args) return NULL; + _PyObject_GC_UNTRACK(cached_args); } Py_INCREF(args); assert (Py_REFCNT(args) == 2); @@ -1403,6 +1409,7 @@ property_descr_get(PyObject *self, PyObj Py_XDECREF(obj); } else { + _PyObject_GC_TRACK(cached_args); Py_CLEAR(cached_args); } }