Skip to content

Conversation

@ericsnowcurrently
Copy link
Member

@ericsnowcurrently ericsnowcurrently commented Dec 7, 2023

_thread._is_main_interpreter() was added (and aliased as threading._is_main_interpreter()) after the 3.12.0 release, in gh-110707 (a backport of gh-112661). However, that change did not accommodate cases where users replace the _thread module with a custom version that doesn't have _is_main_interpreter() defined (e.g. gevent).

This change fixes that by falling back to a dummy _is_main_interpreter() that always says "yes". That case is unlikely and the consequences of saying a subinterpreter is the main interpreter, relative to `threading._shutdown(), are almost zero.

(We are fixing this in 3.12 only because it is a regression from the already released 3.12.0. In 3.13 (main) we will only have the note in "What's New".)


📚 Documentation preview 📚: https://cpython-previews--112850.org.readthedocs.build/

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
ericsnowcurrently and others added 3 commits December 7, 2023 12:25
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
Co-authored-by: T. Wouters <thomas@python.org>
ericsnowcurrently added a commit to ericsnowcurrently/cpython that referenced this pull request Dec 7, 2023
@Yhg1s Yhg1s enabled auto-merge (squash) December 7, 2023 20:08
@Yhg1s Yhg1s merged commit c0fc88f into python:3.12 Dec 7, 2023
@ericsnowcurrently ericsnowcurrently deleted the backport-3.12-fix-112826-missing-_thread-_is_main_interpreter branch December 7, 2023 20:21
ericsnowcurrently added a commit that referenced this pull request Dec 7, 2023
gh-112853) As of gh-112661, the threading module expects the _thread module to have a _is_main_interpreter(), which is used in the internal threading._shutdown(). This change causes a problem for anyone that replaces the _thread module with a custom one (only if they don't provide _is_main_interpreter()). They need to be sure to add it for 3.13+, thus this PR is adding a note in "What's New". This also forward-ports the "What's New" entry from 3.12 (gh-112850). Note that we do not also forward-port the fix in that PR. The fix is there only due to a regression from 3.12.0. There is no regression in 3.13+.
aisk pushed a commit to aisk/cpython that referenced this pull request Feb 11, 2024
…rpreter (pythongh-112853) As of pythongh-112661, the threading module expects the _thread module to have a _is_main_interpreter(), which is used in the internal threading._shutdown(). This change causes a problem for anyone that replaces the _thread module with a custom one (only if they don't provide _is_main_interpreter()). They need to be sure to add it for 3.13+, thus this PR is adding a note in "What's New". This also forward-ports the "What's New" entry from 3.12 (pythongh-112850). Note that we do not also forward-port the fix in that PR. The fix is there only due to a regression from 3.12.0. There is no regression in 3.13+.
Glyphack pushed a commit to Glyphack/cpython that referenced this pull request Sep 2, 2024
…rpreter (pythongh-112853) As of pythongh-112661, the threading module expects the _thread module to have a _is_main_interpreter(), which is used in the internal threading._shutdown(). This change causes a problem for anyone that replaces the _thread module with a custom one (only if they don't provide _is_main_interpreter()). They need to be sure to add it for 3.13+, thus this PR is adding a note in "What's New". This also forward-ports the "What's New" entry from 3.12 (pythongh-112850). Note that we do not also forward-port the fix in that PR. The fix is there only due to a regression from 3.12.0. There is no regression in 3.13+.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

4 participants