Skip to content

Type cache can expose previous values during finalization of an object #118492

Description

@DinoV

Bug report

Bug description:

This should always print True, that is an attribute accessed from a class should match the value that's in the type's mappingproxy:

classX:
def__del__(inner_self):
v=C.aprint(v==C.__dict__['a'])
classC:
a=X()
# prime the cacheC.aC.a# destructor shouldn't be able to see inconsisent stateC.a=X()
C.a=X()

But this prints False because the destructor can be run when the assignment into the type dict occurs, but before the type version is invalidated.

CPython versions tested on:

3.8, CPython main branch

Operating systems tested on:

Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    type-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions