Skip to content

Conversation

charris
Copy link
Member

@charris charris commented Mar 24, 2025

Backport of #28577.

@pitrou correctly pointed out here that the C++ shared_mutex we use in the dispatch might deadlock with the GIL (if it's re-enabled) or other global synchronization events in the interpreter, and we need to explicitly call Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS around a possibly blocking call.

I don't have a case where a deadlock happens right now, so no new test. Happy to add one if someone can come up with a way to trigger the deadlock.

I ran the test script from #27786 and don't see any performance hit.

@charris charris added 00 - Bug 08 - Backport Used to tag backport PRs 39 - free-threading PRs and issues related to support for free-threading CPython (a.k.a. no-GIL, PEP 703) labels Mar 24, 2025
@charris charris added this to the 2.2.5 release milestone Mar 24, 2025
@charris charris merged commit 10632f9 into numpy:maintenance/2.2.x Mar 24, 2025
70 checks passed
@charris charris deleted the backport-28577 branch March 24, 2025 22:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
00 - Bug 08 - Backport Used to tag backport PRs 39 - free-threading PRs and issues related to support for free-threading CPython (a.k.a. no-GIL, PEP 703)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants