]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-142849: Fix segfault in `executor_to_gv` (GH-142885)
authorKen Jin <kenjin@python.org>
Wed, 17 Dec 2025 17:05:21 +0000 (01:05 +0800)
committerGitHub <noreply@github.com>
Wed, 17 Dec 2025 17:05:21 +0000 (17:05 +0000)
Fix segfault in `executor_to_gv`

Python/optimizer.c

index 18f54f9bc23476edfaea6a0e1d239ebef082de45..fc984a5374a5542155de3850b18daafc0366f8a6 100644 (file)
@@ -1977,7 +1977,7 @@ executor_to_gv(_PyExecutorObject *executor, FILE *out)
 #else
         fprintf(out, "        <tr><td port=\"i%d\" border=\"1\" >%s op0=%" PRIu64 "</td></tr>\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;