FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

[3.13] gh-117657: Fix race involving GC and heap initialization (GH-119923) by miss-islington · Pull Request #120038 · python/cpython · GitHub

/ cpython Public

[3.13] gh-117657: Fix race involving GC and heap initialization (GH-119923) - #120038

Merged
colesbury merged 1 commit into
python:3.13from
miss-islington:backport-e69d068-3.13
Jun 4, 2024
Merged

[3.13] gh-117657: Fix race involving GC and heap initialization (GH-119923)#120038
colesbury merged 1 commit into
python:3.13from
miss-islington:backport-e69d068-3.13

Conversation

miss-islington commented Jun 4, 2024
edited by bedevere-app Bot
Loading

Copy link
Copy Markdown
Contributor

The _PyThreadState_Bind() function is called before the first
PyEval_AcquireThread() so it's not synchronized with the stop the
world GC. We had a race where gc_visit_heaps() might visit a thread's
heap while it's being initialized.

Use a simple atomic int to avoid visiting heaps for threads that are not
yet fully initialized (i.e., before tstate_mimalloc_bind() is called).

The race was reproducible by running:
python Lib/test/test_importlib/partial/pool_in_threads.py.
(cherry picked from commit e69d068)

Co-authored-by: Sam Gross colesbury@gmail.com

…nGH-119923)

The `_PyThreadState_Bind()` function is called before the first
`PyEval_AcquireThread()` so it's not synchronized with the stop the
world GC. We had a race where `gc_visit_heaps()` might visit a thread's
heap while it's being initialized.

Use a simple atomic int to avoid visiting heaps for threads that are not
yet fully initialized (i.e., before `tstate_mimalloc_bind()` is called).

The race was reproducible by running:
`python Lib/test/test_importlib/partial/pool_in_threads.py`.
(cherry picked from commit e69d068)

Co-authored-by: Sam Gross <colesbury@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
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


Back | FazBrowse Home | New Git URL