Skip to content

Commit 5d1fcf7

Browse files
fix eval breaker version
1 parent 6213ab4 commit 5d1fcf7

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

Python/pystate.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1575,8 +1575,7 @@ init_threadstate(_PyThreadStateImpl *_tstate,
15751575

15761576
assert(interp != NULL);
15771577
tstate->interp = interp;
1578-
tstate->eval_breaker =
1579-
_Py_atomic_load_uintptr_relaxed(&interp->ceval.instrumentation_version);
1578+
// eval_breaker is set in add_threadstate().
15801579

15811580
// next/prev are set in add_threadstate().
15821581
assert(tstate->next == NULL);
@@ -1661,6 +1660,11 @@ add_threadstate(PyInterpreterState *interp, PyThreadState *tstate,
16611660
PyThreadState *next)
16621661
{
16631662
assert(interp->threads.head != tstate);
1663+
// Set the instrumentation version, which in the free-threaded build is
1664+
// broadcast to the thread states on the interpreter's thread list.
1665+
uintptr_t version = _Py_atomic_load_uintptr_relaxed(
1666+
&interp->ceval.instrumentation_version);
1667+
_Py_atomic_or_uintptr(&tstate->eval_breaker, version);
16641668
if (next != NULL) {
16651669
assert(next->prev == NULL || next->prev == tstate);
16661670
next->prev = tstate;

0 commit comments

Comments
 (0)