Skip to content

generator.close() doesn't clear frame on newly created generators#142766

@colesbury

Description

@colesbury

Bug report

Bug description:

Since Python 3.12, generator.close() and generator.gi_frame.clear() do not clear the generator's frame, if the generator is in the FRAME_CREATED state.

The following passes on Python 3.11 and earlier and fails on Python 3.12+

classDetectDeletion: deleted=Falsedef__del__(self): DetectDeletion.deleted=Truedefgen(x): yield1g=gen(DetectDeletion()) g.close() # or alternatively: g.gi_frame.clear()assertDetectDeletion.deleteddelg

Introduced in:

CPython versions tested on:

3.11, 3.12, 3.14, 3.13, 3.15

Operating systems tested on:

No response

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    interpreter-core(Objects, Python, Grammar, and Parser dirs)type-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions