gh-142448: Disable JIT tracing when monitoring is enabled (GH-142842)

This commit is contained in:
Ken Jin 2025-12-23 19:27:23 +08:00 committed by GitHub
parent 28da1fb7c0
commit c4ab024530
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 17 additions and 6 deletions

View file

@ -0,0 +1 @@
Fix a bug when using monitoring with the JIT.

View file

@ -5575,9 +5575,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();

View file

@ -11387,9 +11387,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);