Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

gh-98627: Add an Optional Check for Extension Module Subinterpreter Compatibility#99040

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Conversation

@ericsnowcurrently
Copy link
Member

@ericsnowcurrentlyericsnowcurrently commentedNov 3, 2022
edited
Loading

Enforcing (optionally) the restriction set by PEP 489 makes sense. Furthermore, this sets the stage for a potential restriction related to a per-interpreter GIL.

This change includes the following:

  • add tests for extension module subinterpreter compatibility
  • add_PyInterpreterConfig.check_multi_interp_extensions
  • addPy_RTFLAGS_MULTI_INTERP_EXTENSIONS
  • add_PyImport_CheckSubinterpIncompatibleExtensionAllowed()
  • fail iff the module does not implement multi-phase initand the current interpreter is configured to check

vasily-v-ryabov reacted with thumbs up emoji
@ericsnowcurrentlyericsnowcurrentlyforce-pushed theinterpreter-multi-interp-extensions-check branch from93ea024 to1defec3CompareJanuary 11, 2023 17:36
@erlend-aasland
Copy link
Contributor

FYI, converting_testinternalcapi.c to multi-phase init resolves four of the test failures.

test_configured_settings (test.test_capi.test_misc.SubinterpreterTest.test_configured_settings)The config with which an interpreter is created corresponds ... Traceback (most recent call last):  File "<string>", line 2, in <module>ImportError: module _testinternalcapi does not support loading in subinterpreters[...]

👇🏻

test_configured_settings (test.test_capi.test_misc.SubinterpreterTest.test_configured_settings)The config with which an interpreter is created corresponds ... ok[...]
ericsnowcurrently reacted with thumbs up emoji

ericsnowcurrently added a commit that referenced this pull requestFeb 6, 2023
…ters (gh-101431)The GILState API (PEP 311) implementation from 2003 made the assumption that only one thread state would ever be used for any given OS thread, explicitly disregarding the case of subinterpreters.  However, PyThreadState_Swap() still facilitated switching between subinterpreters, meaning the "current" thread state (holding the GIL), and the GILState thread state could end up out of sync, causing problems (including crashes).This change addresses the issue by keeping the two in sync in PyThreadState_Swap().  I verified the fix againstgh-99040.Note that the other GILState-subinterpreter incompatibility (with autoInterpreterState) is not resolved here.#59956
@ericsnowcurrentlyericsnowcurrently marked this pull request as ready for reviewFebruary 6, 2023 22:28
@ericsnowcurrentlyericsnowcurrently merged commit89ac665 intopython:mainFeb 16, 2023
@ericsnowcurrentlyericsnowcurrently deleted the interpreter-multi-interp-extensions-check branchFebruary 16, 2023 01:16
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

@encukouencukouAwaiting requested review from encukou

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

3 participants

@ericsnowcurrently@erlend-aasland@bedevere-bot

[8]ページ先頭

©2009-2025 Movatter.jp