changeset: 103045:3e4452424f9b branch: 3.5 parent: 103042:4e0f56794a73 user: Benjamin Peterson date: Mon Sep 05 10:39:57 2016 -0700 files: Misc/NEWS Objects/genobject.c description: clear out f_gen during generator finalization (closes #27812) Patch from Armin Rigo. diff -r 4e0f56794a73 -r 3e4452424f9b Misc/NEWS --- a/Misc/NEWS Mon Sep 05 10:17:22 2016 -0700 +++ b/Misc/NEWS Mon Sep 05 10:39:57 2016 -0700 @@ -10,6 +10,9 @@ Core and Builtins ----------------- +- Issue #27812: Properly clear out a generator's frame's backreference to the + generator to prevent crashes in frame.clear(). + - Issue #27811: Fix a crash when a coroutine that has not been awaited is finalized with warnings-as-errors enabled. diff -r 4e0f56794a73 -r 3e4452424f9b Objects/genobject.c --- a/Objects/genobject.c Mon Sep 05 10:17:22 2016 -0700 +++ b/Objects/genobject.c Mon Sep 05 10:39:57 2016 -0700 @@ -71,7 +71,10 @@ return; /* resurrected. :( */ _PyObject_GC_UNTRACK(self); - Py_CLEAR(gen->gi_frame); + if (gen->gi_frame != NULL) { + gen->gi_frame->f_gen = NULL; + Py_CLEAR(gen->gi_frame); + } Py_CLEAR(gen->gi_code); Py_CLEAR(gen->gi_name); Py_CLEAR(gen->gi_qualname);