diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-20-38-17.gh-issue-142448.mAFqwL.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-20-38-17.gh-issue-142448.mAFqwL.rst new file mode 100644 index 00000000000000..bcc7c1fb12d094 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-20-38-17.gh-issue-142448.mAFqwL.rst @@ -0,0 +1 @@ +Fix a bug when using monitoring with the JIT. diff --git a/Python/bytecodes.c b/Python/bytecodes.c index 391fa8ea2a94ec..8cc6b9d6c98d69 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -5587,9 +5587,14 @@ dummy_func( next_instr = this_instr; frame->instr_ptr = prev_instr; opcode = next_instr->op.code; - bool stop_tracing = (opcode == WITH_EXCEPT_START || - opcode == RERAISE || opcode == CLEANUP_THROW || - opcode == PUSH_EXC_INFO || opcode == INTERPRETER_EXIT); + bool stop_tracing = ( + opcode == WITH_EXCEPT_START || + opcode == RERAISE || + opcode == CLEANUP_THROW || + opcode == PUSH_EXC_INFO || + opcode == INTERPRETER_EXIT || + (opcode >= MIN_INSTRUMENTED_OPCODE && opcode != ENTER_EXECUTOR) + ); int full = !_PyJit_translate_single_bytecode_to_trace(tstate, frame, next_instr, stop_tracing ? _DEOPT : 0); if (full) { LEAVE_TRACING(); diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h index 94846d718308a5..7f0db0ad4c1379 100644 --- a/Python/generated_cases.c.h +++ b/Python/generated_cases.c.h @@ -11574,9 +11574,14 @@ next_instr = this_instr; frame->instr_ptr = prev_instr; opcode = next_instr->op.code; - bool stop_tracing = (opcode == WITH_EXCEPT_START || - opcode == RERAISE || opcode == CLEANUP_THROW || - opcode == PUSH_EXC_INFO || opcode == INTERPRETER_EXIT); + bool stop_tracing = ( + opcode == WITH_EXCEPT_START || + opcode == RERAISE || + opcode == CLEANUP_THROW || + opcode == PUSH_EXC_INFO || + opcode == INTERPRETER_EXIT || + (opcode >= MIN_INSTRUMENTED_OPCODE && opcode != ENTER_EXECUTOR) + ); _PyFrame_SetStackPointer(frame, stack_pointer); int full = !_PyJit_translate_single_bytecode_to_trace(tstate, frame, next_instr, stop_tracing ? _DEOPT : 0); stack_pointer = _PyFrame_GetStackPointer(frame);