diff options
author | Eric Snow <ericsnowcurrently@gmail.com> | 2024-11-19 19:59:19 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-19 19:59:19 (GMT) |
commit | 1c0a104eca189a932e0b44ca9bef46cce3d0b801 (patch) | |
tree | 3b619bb0e18539e8e7e55f31739cb8779d7ba19a /Include/internal/pycore_interp.h | |
parent | 824afbf548e7128ca57c6faf45cfd6b066a6ee45 (diff) | |
download | cpython-1c0a104eca189a932e0b44ca9bef46cce3d0b801.zip cpython-1c0a104eca189a932e0b44ca9bef46cce3d0b801.tar.gz cpython-1c0a104eca189a932e0b44ca9bef46cce3d0b801.tar.bz2 |
gh-126914: Store the Preallocated Thread State's Pointer in a PyInterpreterState Field (gh-126989)
This approach eliminates the originally reported race. It also gets rid of the deadlock reported in gh-96071, so we can remove the workaround added then.
Diffstat (limited to 'Include/internal/pycore_interp.h')
-rw-r--r-- | Include/internal/pycore_interp.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/Include/internal/pycore_interp.h b/Include/internal/pycore_interp.h index 824b865..5e4bcbf 100644 --- a/Include/internal/pycore_interp.h +++ b/Include/internal/pycore_interp.h @@ -130,6 +130,7 @@ struct _is { uint64_t next_unique_id; /* The linked list of threads, newest first. */ PyThreadState *head; + _PyThreadStateImpl *preallocated; /* The thread currently executing in the __main__ module, if any. */ PyThreadState *main; /* Used in Modules/_threadmodule.c. */ @@ -278,9 +279,10 @@ struct _is { struct _Py_interp_cached_objects cached_objects; struct _Py_interp_static_objects static_objects; + Py_ssize_t _interactive_src_count; + /* the initial PyInterpreterState.threads.head */ _PyThreadStateImpl _initial_thread; - Py_ssize_t _interactive_src_count; }; |