SIGN IN SIGN UP
python / cpython UNCLAIMED

The Python programming language

72137 0 43 Python

gh-117657: Fix race involving GC and heap initialization (#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`.
S
Sam Gross committed
e69d068ad0bd6a25434ea476a647b635da4d82bb
Parent: bd8c1f9
Committed by GitHub <noreply@github.com> on 6/4/2024, 1:42:13 PM