Skip to content

gh-136421: Fix crash when _datetime is been initialized in multiple sub-interpreters #136422

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 5 commits into
base: main
Choose a base branch
from

Conversation

aisk
Copy link
Contributor

@aisk aisk commented Jul 8, 2025

@aisk aisk requested review from pganssle and abalkin as code owners July 8, 2025 14:01
@aisk aisk changed the title gh-136421: Fix crash when _datetime is been initialized in multiple sub-interpre… gh-136421: Fix crash when _datetime is been initialized in multiple sub-interpreters Jul 8, 2025
Copy link
Member

@ZeroIntensity ZeroIntensity left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we need a more fundamental fix that prevents static types from being initialized concurrently. This is sort of a known issue, see #129817.

@bedevere-app
Copy link

bedevere-app bot commented Jul 8, 2025

A Python core developer has requested some changes be made to your pull request before we can consider merging it. If you could please address their requests along with any other requests in other reviews from core developers that would be appreciated.

Once you have made the requested changes, please leave a comment on this pull request containing the phrase I have made the requested changes; please review again. I will then notify any core developers who have left a review that you're ready for them to take another look at this pull request.

Copy link
Member

@ZeroIntensity ZeroIntensity left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a test. I'm still not fully convinced that this is the right approach; _PyStaticType_InitForExtension should be thread-safe on its own, or at least in the places where it's used.

I think the problem is that _datetime is special and has static types (because they need to be exposed via the capsule). Instead of initializing them in the module's execution function, let's do it during interpreter initialization in pycore_interp_init.

…e-136421.uzieFA.rst

Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
@neonene
Copy link
Contributor

neonene commented Jul 12, 2025

An alternative would be to make _interpreters module import _datetime when running the main interpreter.

@aisk
Copy link
Contributor Author

aisk commented Jul 12, 2025

Due to issue #136423, importing _datetime into a sub-interpreter concurrently still results in a crash, even after this change, so it's hard to write a test. I also feel that this is not the correct way to fix the root cause, and this PR is more like a workaround.

I'll continue to investigate #136423, as they appear to have the same root cause. Maybe we can find a better way to address them. So maybe we can wait sometime before continue this PR?

@ZeroIntensity
Copy link
Member

I've put up #136583 as an alternative that avoids locking, at the cost of moving _datetime to a static library.

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.

4 participants
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy