Skip to content

gh-132835: Add defensive NULL checks in mro resolution #134763

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

emmatyping
Copy link
Member

@emmatyping emmatyping commented May 27, 2025

Currently, there are a few places where type->tp_mro could theoretically be NULL, but are not in practice. We should defensively assert these NULL values don't occur to ensure that any changes do not introduce a crash and that state invariants are upheld.

The assertions added in this PR are all instances where a NULL value would get passed to something not expected a NULL, so it is better to catch an assertion failure than crash later on.

There are a few cases where it is OK for the return of lookup_tp_mro to be NULL, such as when passed to is_subtype_with_mro, which handles this explicitly.

Currently, there are a few places where tp_mro could theoretically
become NULL, but do not in practice. We should defensively check for
NULL values to ensure that any changes do not introduce a crash and that
state invariants are upheld.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants