Index: Objects/tupleobject.c =================================================================== --- Objects/tupleobject.c (revision 76743) +++ Objects/tupleobject.c (working copy) @@ -875,7 +875,8 @@ /* XXX UNREF/NEWREF interface should be more symmetrical */ _Py_DEC_REFTOTAL; - _PyObject_GC_UNTRACK(v); + if (_PyObject_GC_IS_TRACKED(v)) + _PyObject_GC_UNTRACK(v); _Py_ForgetReference((PyObject *) v); /* DECREF items deleted by shrinkage */ for (i = newsize; i < oldsize; i++) { Index: Lib/test/test_tuple.py =================================================================== --- Lib/test/test_tuple.py (revision 76743) +++ Lib/test/test_tuple.py (working copy) @@ -146,6 +146,9 @@ pass self.check_track_dynamic(MyTuple, True) + def test_bug7466(self): + # Tuple may be untracked while not finished + self._not_tracked(tuple(gc.collect() for i in range(101))) def test_main(): test_support.run_unittest(TupleTest)