From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Thu, 18 Jun 2026 12:45:25 +0000 (+0200) Subject: [3.15] gh-151229: Finalize JIT tracer in test eval-frame stub (gh-151609) (gh-151648) X-Git-Tag: v3.15.0b3~46 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c0582dbe7fcfcd5ed71232f88c6fce022f08eabb;p=thirdparty%2FPython%2Fcpython.git [3.15] gh-151229: Finalize JIT tracer in test eval-frame stub (gh-151609) (gh-151648) gh-151229: Finalize JIT tracer in test eval-frame stub (gh-151609) (cherry picked from commit 3fa92e7c55d74aea062c4b32d895e84d7aaa3bce) Co-authored-by: Donghee Na --- diff --git a/Modules/_testinternalcapi/interpreter.c b/Modules/_testinternalcapi/interpreter.c index 99dcd18393fb..4afa028cd875 100644 --- a/Modules/_testinternalcapi/interpreter.c +++ b/Modules/_testinternalcapi/interpreter.c @@ -18,8 +18,13 @@ int Test_EvalFrame_Resumes, Test_EvalFrame_Loads; static int stop_tracing_and_jit(PyThreadState *tstate, _PyInterpreterFrame *frame) { - (void)(tstate); (void)(frame); + // Don't actually JIT-compile in this test eval-frame, but we still must + // finalize the tracer so the thread-global is_tracing flag is reset. + // Otherwise a trace started inside this duplicated interpreter loop + // (reachable under low JIT thresholds, e.g. PYTHON_JIT_STRESS=1) would + // leave is_tracing stuck true and permanently disable the JIT. + _PyJit_FinalizeTracing(tstate, 0); return 0; } #endif