From: Ken Jin Date: Wed, 17 Dec 2025 17:05:21 +0000 (+0800) Subject: gh-142849: Fix segfault in `executor_to_gv` (GH-142885) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fba4584ffccde789919799c38a55ce4c17ba4d8b;p=thirdparty%2FPython%2Fcpython.git gh-142849: Fix segfault in `executor_to_gv` (GH-142885) Fix segfault in `executor_to_gv` --- diff --git a/Python/optimizer.c b/Python/optimizer.c index 18f54f9bc234..fc984a5374a5 100644 --- a/Python/optimizer.c +++ b/Python/optimizer.c @@ -1977,7 +1977,7 @@ executor_to_gv(_PyExecutorObject *executor, FILE *out) #else fprintf(out, " %s op0=%" PRIu64 "\n", i, opname, inst->operand0); #endif - if (inst->opcode == _EXIT_TRACE || inst->opcode == _JUMP_TO_TOP) { + if (base_opcode == _EXIT_TRACE || base_opcode == _JUMP_TO_TOP) { break; } } @@ -1990,7 +1990,7 @@ executor_to_gv(_PyExecutorObject *executor, FILE *out) for (uint32_t i = 0; i < executor->code_size; i++) { _PyUOpInstruction const *inst = &executor->trace[i]; uint16_t base_opcode = _PyUop_Uncached[inst->opcode]; - uint16_t flags = _PyUop_Flags[inst->opcode]; + uint16_t flags = _PyUop_Flags[base_opcode]; _PyExitData *exit = NULL; if (base_opcode == _EXIT_TRACE) { exit = (_PyExitData *)inst->operand0;