Skip to content

[3.15] gh-159739: Keep the instance type alive during ABC subclass checks (GH-160198) - #160489

Merged
JelleZijlstra merged 1 commit into
python:3.15from
jelle-openai:jelle/codex/backport-160198-3.15
Oct 24, 2026
Merged

JelleZijlstra merged 1 commit into
python:3.15from
jelle-openai:jelle/codex/backport-160198-3.15

Conversation

@jelle-openai

@jelle-openai jelle-openai commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

When an instance advertises a class different from its actual type, ABCMeta.instancecheck performs two subclass checks. The first callback can change the instance's actual type and allow its old type to be collected before the second check, causing a crash. Keep the original type alive through both checks. Backport to 3.15 and 3.14.
(cherry picked from commit dcbc453)

Co-authored-by: Jelle Zijlstra jelle@openai.com

Backport of #160198 to 3.15.

Carry over the subclass-callback lifetime fix and its regression test, adapting the test imports to the release branch.

Ran test_abc on a 3.15 build.

…ass checks (pythonGH-160198)

When an instance advertises a __class__ different from its actual type, ABCMeta.__instancecheck__ performs two subclass checks. The first callback can change the instance's actual type and allow its old type to be collected before the second check, causing a crash. Keep the original type alive through both checks. Backport to 3.15 and 3.14.
(cherry picked from commit dcbc453)

Co-authored-by: Jelle Zijlstra <jelle@openai.com>
@JelleZijlstra
JelleZijlstra marked this pull request as ready for review October 23, 2026 20:35
@JelleZijlstra
JelleZijlstra enabled auto-merge (squash) October 24, 2026 20:44
@JelleZijlstra
JelleZijlstra merged commit e736c96 into python:3.15 Oct 24, 2026
101 of 102 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants