mirror of
https://github.com/python/cpython.git
synced 2026-02-19 22:01:14 +00:00
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
|
||
|---|---|---|
| .. | ||
| suppressions_free_threading.txt | ||
| supressions.txt | ||