From 79f572235ec739aaf24ae6516520e1a4e1bd5f18 Mon Sep 17 00:00:00 2001 From: Ken Jin Date: Wed, 17 Dec 2025 15:43:41 +0000 Subject: [PATCH] Fix segfault in `executor_to_gv` --- Python/optimizer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Python/optimizer.c b/Python/optimizer.c index 18f54f9bc23476..fc984a5374a554 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;