summaryrefslogtreecommitdiffstats
path: root/Python/dynload_shlib.c
diff options
context:
space:
mode:
authorBrett Simmers <swtaarrs@users.noreply.github.com>2024-03-04 16:29:39 (GMT)
committerGitHub <noreply@github.com>2024-03-04 16:29:39 (GMT)
commit0adfa8482d369899e9963206a3307f423309e10c (patch)
treec1f71c0f65b0f01581d37eafa55c26b769915299 /Python/dynload_shlib.c
parent15dc2979bc1b24269177f0e150495abb7f3eb546 (diff)
downloadcpython-0adfa8482d369899e9963206a3307f423309e10c.zip
cpython-0adfa8482d369899e9963206a3307f423309e10c.tar.gz
cpython-0adfa8482d369899e9963206a3307f423309e10c.tar.bz2
gh-115832: Fix instrumentation version mismatch during interpreter shutdown (#115856)
A previous commit introduced a bug to `interpreter_clear()`: it set `interp->ceval.instrumentation_version` to 0, without making the corresponding change to `tstate->eval_breaker` (which holds a thread-local copy of the version). After this happens, Python code can still run due to object finalizers during a GC, and the version check in bytecodes.c will see a different result than the one in instrumentation.c causing an infinite loop. The fix itself is straightforward: clear `tstate->eval_breaker` when clearing `interp->ceval.instrumentation_version`.
Diffstat (limited to 'Python/dynload_shlib.c')
0 files changed, 0 insertions, 0 deletions