kgb icon indicating copy to clipboard operation
kgb copied to clipboard

Crashes with Python 3.13 b2

Open alebastr opened this issue 1 year ago • 9 comments

The following example crashes with Python 3.13.0b2 (python3-3.13.0~b2-3.fc41.x86_64):

#!/usr/bin/python3
from unittest import TestCase

from kgb import SpyAgency


def outer(arg):
    # required to reproduce the crash
    def _inner_unused():
        # must be a closure to repro
        print(arg)

    return 1

class CrashTest(SpyAgency, TestCase):

    def test(self):
        self.spy_on(outer)
        outer(1)

if __name__ == '__main__':
    t = CrashTest()
    t.test()

(originally reproduced and extracted from the RBTools test suite)

Interpreter backtrace:
(gdb) bt
#0  framelocalsproxy_getitem (self=<optimized out>, key=0x7ffff7ed4b98 <_PyRuntime+44888>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Objects/frameobject.c:117
#1  0x00007ffff7b5cb2b in dict_merge (interp=<optimized out>, a=<optimized out>, b=0x7fffe942df30, override=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Objects/dictobject.c:3839
#2  dict_merge (interp=<optimized out>, a=<optimized out>, b=0x7fffe942df30, override=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Objects/dictobject.c:3771
#3  0x00007ffff7ca5a72 in _PyEval_GetFrameLocals () at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/ceval.c:2511
#4  0x00007ffff7b61abf in cfunction_vectorcall_NOARGS (func=0x7ffff76c37e0, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Include/cpython/methodobject.h:50
#5  0x00007ffff7b60dc7 in _PyObject_VectorcallTstate (tstate=0x7ffff7f0e2e0 <_PyRuntime+280224>, callable=0x7ffff76c37e0, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Include/internal/pycore_call.h:168
#6  PyObject_Vectorcall (callable=0x7ffff76c37e0, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Objects/call.c:327
#7  0x00007ffff7b737f4 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/generated_cases.c.h:813
#8  0x00007ffff7c4052b in PyEval_EvalCode (co=0x7fffe97651b0, globals=<optimized out>, locals=0x7fffe9734500) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/ceval.c:599
#9  0x00007ffff7c628d0 in run_eval_code_obj (tstate=tstate@entry=0x7ffff7f0e2e0 <_PyRuntime+280224>, co=co@entry=0x7fffe97651b0, globals=globals@entry=0x7fffe9734500, locals=locals@entry=0x7fffe9734500) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:1292
#10 0x00007ffff7c5cf33 in run_mod (mod=mod@entry=0x5555556130f0, filename=filename@entry=0x7fffe9756a30, globals=globals@entry=0x7fffe9734500, locals=locals@entry=0x7fffe9734500, flags=flags@entry=0x7fffffffde68, arena=arena@entry=0x7ffff7647cf0, interactive_src=0x0, generate_new_source=0) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:1377
#11 0x00007ffff7c7d016 in pyrun_file (fp=fp@entry=0x5555556069c0, filename=filename@entry=0x7fffe9756a30, start=start@entry=257, globals=globals@entry=0x7fffe9734500, locals=locals@entry=0x7fffe9734500, closeit=closeit@entry=1, flags=0x7fffffffde68) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:1210
#12 0x00007ffff7c7c18f in _PyRun_SimpleFileObject (fp=fp@entry=0x5555556069c0, filename=filename@entry=0x7fffe9756a30, closeit=closeit@entry=1, flags=flags@entry=0x7fffffffde68) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:459
#13 0x00007ffff7c7bfb1 in _PyRun_AnyFileObject (fp=fp@entry=0x5555556069c0, filename=filename@entry=0x7fffe9756a30, closeit=closeit@entry=1, flags=flags@entry=0x7fffffffde68) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:77
#14 0x00007ffff7c756b7 in pymain_run_file_obj (program_name=0x7fffe9734630, filename=0x7fffe9756a30, skip_source_first_line=0) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:357
#15 pymain_run_file (config=0x7ffff7ee09d8 <_PyRuntime+93592>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:376
#16 pymain_run_python (exitcode=0x7fffffffde5c) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:639
#17 Py_RunMain () at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:718
#18 0x00007ffff7c2c89c in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:772
#19 0x00007ffff7838248 in __libc_start_call_main (main=main@entry=0x555555555160 <main>, argc=argc@entry=2, argv=argv@entry=0x7fffffffe0c8) at ../sysdeps/nptl/libc_start_call_main.h:58
#20 0x00007ffff783830b in __libc_start_main_impl (main=0x555555555160 <main>, argc=2, argv=0x7fffffffe0c8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe0b8) at ../csu/libc-start.c:360
#21 0x0000555555555095 in _start ()

(gdb) bt full
#0  framelocalsproxy_getitem (self=<optimized out>, key=0x7ffff7ed4b98 <_PyRuntime+44888>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Objects/frameobject.c:117
        value = 0x8
        i = <optimized out>
        frame = 0x7fffe95df780
        co = 0x7fffe945a1f0
        extra = <optimized out>
#1  0x00007ffff7b5cb2b in dict_merge (interp=<optimized out>, a=<optimized out>, b=0x7fffe942df30, override=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Objects/dictobject.c:3839
        keys = <optimized out>
        iter = 0x7fffe947f550
        key = <optimized out>
        value = <optimized out>
        status = <optimized out>
        mp = <optimized out>
        other = <optimized out>
        res = <optimized out>
        slow_exit = <optimized out>
        mp = <optimized out>
        other = <optimized out>
        res = <optimized out>
        slow_exit = <optimized out>
        res = <optimized out>
        keys = <optimized out>
        iter = <optimized out>
        key = <optimized out>
        value = <optimized out>
        status = <optimized out>
#2  dict_merge (interp=<optimized out>, a=<optimized out>, b=0x7fffe942df30, override=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Objects/dictobject.c:3771
        mp = <optimized out>
        other = <optimized out>
        res = 0
        slow_exit = <optimized out>
        keys = <optimized out>
        iter = <optimized out>
        key = <optimized out>
        value = <optimized out>
        status = <optimized out>
#3  0x00007ffff7ca5a72 in _PyEval_GetFrameLocals () at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/ceval.c:2511
        ret = 0x7fffe95e7800
        op = <optimized out>
        dealloc = <optimized out>
        op = <optimized out>
        dealloc = <optimized out>
        op = <optimized out>
        dealloc = <optimized out>
        tstate = <optimized out>
        current_frame = <optimized out>
        locals = 0x7fffe942df30
#4  0x00007ffff7b61abf in cfunction_vectorcall_NOARGS (func=0x7ffff76c37e0, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Include/cpython/methodobject.h:50
        tstate = 0x7ffff7f0e2e0 <_PyRuntime+280224>
        nargs = <optimized out>
        meth = <optimized out>
        result = <optimized out>
#5  0x00007ffff7b60dc7 in _PyObject_VectorcallTstate (tstate=0x7ffff7f0e2e0 <_PyRuntime+280224>, callable=0x7ffff76c37e0, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Include/internal/pycore_call.h:168
        func = <optimized out>
        res = <optimized out>
        func = <optimized out>
        res = <optimized out>
        nargs = <optimized out>
#6  PyObject_Vectorcall (callable=0x7ffff76c37e0, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Objects/call.c:327
        tstate = 0x7ffff7f0e2e0 <_PyRuntime+280224>
#7  0x00007ffff7b737f4 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/generated_cases.c.h:813
        total_args = <optimized out>
        self = <optimized out>
        method = <optimized out>
        op = <optimized out>
        dealloc = <optimized out>
        self_or_null = <optimized out>
        callable = 0x7ffff76c37e0
        this_instr = <optimized out>
        args = 0x7ffff7fbb180
        res = <optimized out>
        opcode = <optimized out>
        oparg = <optimized out>
        entry_frame = {f_executable = 0x7ffff7ec1130 <_Py_NoneStruct>, previous = 0x0, f_funcobj = 0x7fffe97651b0, f_globals = 0x7fffe9734500, f_builtins = 0x7fffffffdba0, f_locals = 0x2cc118914ec51e00, frame_obj = 0x7fffffffdbb0, instr_ptr = 0x7ffff7dafbc2 <_Py_INTERPRETER_TRAMPOLINE_INSTRUCTIONS+2>, stacktop = 0, return_offset = 0, owner = 3 '\003', localsplus = {0x7ffff7f0e2e0 <_PyRuntime+280224>}}
        next_instr = 0x7fffe945a2d8
        stack_pointer = <optimized out>
        exception_unwind = <optimized out>
        dying = <optimized out>
        __func__ = "_PyEval_EvalFrameDefault"
        opcode_targets = {0x7ffff7a5590b <_PyEval_EvalFrameDefault-1165989>, 0x7ffff7a51d4c <_PyEval_EvalFrameDefault-1181284>, 0x7ffff7b78bdc <_PyEval_EvalFrameDefault+26668>, 0x7ffff7b79739 <_PyEval_EvalFrameDefault+29577>, 0x7ffff7b7674b <_PyEval_EvalFrameDefault+17307>, 0x7ffff7b75bb3 <_PyEval_EvalFrameDefault+14339>, 0x7ffff7a54d18 <_PyEval_EvalFrameDefault-1169048>, 0x7ffff7b78684 <_PyEval_EvalFrameDefault+25300>, 0x7ffff7b7a671 <_PyEval_EvalFrameDefault+33473>, 0x7ffff7b79a2b <_PyEval_EvalFrameDefault+30331>, 0x7ffff7a549ef <_PyEval_EvalFrameDefault-1169857>, 0x7ffff7b7b7aa <_PyEval_EvalFrameDefault+37882>, 0x7ffff7b7a714 <_PyEval_EvalFrameDefault+33636>, 0x7ffff7b7901d <_PyEval_EvalFrameDefault+27757>, 0x7ffff7b78fc8 <_PyEval_EvalFrameDefault+27672>, 0x7ffff7b7962e <_PyEval_EvalFrameDefault+29310>, 0x7ffff7a533eb <_PyEval_EvalFrameDefault-1175493>, 0x7ffff7a5555c <_PyEval_EvalFrameDefault-1166932>, 0x7ffff7a53304 <_PyEval_EvalFrameDefault-1175724>, 0x7ffff7b758ae <_PyEval_EvalFrameDefault+13566>, 0x7ffff7b7a396 <_PyEval_EvalFrameDefault+32742>, 0x7ffff7b7a32a <_PyEval_EvalFrameDefault+32634>, 0x7ffff7b72e70 <_PyEval_EvalFrameDefault+2752>, 0x7ffff7a5512e <_PyEval_EvalFrameDefault-1168002>, 0x7ffff7b7b51a <_PyEval_EvalFrameDefault+37226>, 0x7ffff7b7b3ef <_PyEval_EvalFrameDefault+36927>, 0x7ffff7b76680 <_PyEval_EvalFrameDefault+17104>, 0x7ffff7b7b1d2 <_PyEval_EvalFrameDefault+36386>, 0x7ffff7b7ac2b <_PyEval_EvalFrameDefault+34939>, 0x7ffff7b7a591 <_PyEval_EvalFrameDefault+33249>, 0x7ffff7b75b80 <_PyEval_EvalFrameDefault+14288>, 0x7ffff7b782f5 <_PyEval_EvalFrameDefault+24389>, 0x7ffff7b72e22 <_PyEval_EvalFrameDefault+2674>, 0x7ffff7b78379 <_PyEval_EvalFrameDefault+24521>, 0x7ffff7b72d27 <_PyEval_EvalFrameDefault+2423>, 0x7ffff7b768aa <_PyEval_EvalFrameDefault+17658>, 0x7ffff7b72fa9 <_PyEval_EvalFrameDefault+3065>, 0x7ffff7b7b310 <_PyEval_EvalFrameDefault+36704>, 0x7ffff7b79c87 <_PyEval_EvalFrameDefault+30935>, 0x7ffff7b7893a <_PyEval_EvalFrameDefault+25994>, 0x7ffff7b75928 <_PyEval_EvalFrameDefault+13688>, 0x7ffff7b7aaaa <_PyEval_EvalFrameDefault+34554>, 0x7ffff7b7857e <_PyEval_EvalFrameDefault+25038>, 0x7ffff7b7991c <_PyEval_EvalFrameDefault+30060>, 0x7ffff7b7a786 <_PyEval_EvalFrameDefault+33750>, 0x7ffff7b730d7 <_PyEval_EvalFrameDefault+3367>, 0x7ffff7b7a418 <_PyEval_EvalFrameDefault+32872>, 0x7ffff7b7705d <_PyEval_EvalFrameDefault+19629>, 0x7ffff7b76db2 <_PyEval_EvalFrameDefault+18946>, 0x7ffff7b79d96 <_PyEval_EvalFrameDefault+31206>, 0x7ffff7b79b55 <_PyEval_EvalFrameDefault+30629>, 0x7ffff7b78d7f <_PyEval_EvalFrameDefault+27087>, 0x7ffff7b7513e <_PyEval_EvalFrameDefault+11662>, 0x7ffff7b76ec4 <_PyEval_EvalFrameDefault+19220>, 0x7ffff7b783ee <_PyEval_EvalFrameDefault+24638>, 0x7ffff7b7af78 <_PyEval_EvalFrameDefault+35784>, 0x7ffff7b7aece <_PyEval_EvalFrameDefault+35614>, 0x7ffff7b759e7 <_PyEval_EvalFrameDefault+13879>, 0x7ffff7b74c97 <_PyEval_EvalFrameDefault+10471>, 0x7ffff7b76042 <_PyEval_EvalFrameDefault+15506>, 0x7ffff7b796c0 <_PyEval_EvalFrameDefault+29456>, 0x7ffff7b748f2 <_PyEval_EvalFrameDefault+9538>, 0x7ffff7b739a0 <_PyEval_EvalFrameDefault+5616>, 0x7ffff7b785fa <_PyEval_EvalFrameDefault+25162>, 0x7ffff7a52b72 <_PyEval_EvalFrameDefault-1177662>, 0x7ffff7b7ade7 <_PyEval_EvalFrameDefault+35383>, 0x7ffff7a5439d <_PyEval_EvalFrameDefault-1171475>, 0x7ffff7b7ae48 <_PyEval_EvalFrameDefault+35480>, 0x7ffff7b78cda <_PyEval_EvalFrameDefault+26922>, 0x7ffff7b7b622 <_PyEval_EvalFrameDefault+37490>, 0x7ffff7a548ce <_PyEval_EvalFrameDefault-1170146>, 0x7ffff7b76bfd <_PyEval_EvalFrameDefault+18509>, 0x7ffff7b73a81 <_PyEval_EvalFrameDefault+5841>, 0x7ffff7a546f2 <_PyEval_EvalFrameDefault-1170622>, 0x7ffff7b7b159 <_PyEval_EvalFrameDefault+36265>, 0x7ffff7b7b00f <_PyEval_EvalFrameDefault+35935>, 0x7ffff7b7494a <_PyEval_EvalFrameDefault+9626>, 0x7ffff7b72cd6 <_PyEval_EvalFrameDefault+2342>, 0x7ffff7b726bf <_PyEval_EvalFrameDefault+783>, 0x7ffff7b76317 <_PyEval_EvalFrameDefault+16231>, 0x7ffff7b7428b <_PyEval_EvalFrameDefault+7899>, 0x7ffff7b7a5f0 <_PyEval_EvalFrameDefault+33344>, 0x7ffff7b73ce7 <_PyEval_EvalFrameDefault+6455>, 0x7ffff7b725c6 <_PyEval_EvalFrameDefault+534>, 0x7ffff7b72c17 <_PyEval_EvalFrameDefault+2151>, 0x7ffff7b724a1 <_PyEval_EvalFrameDefault+241>, 0x7ffff7b78726 <_PyEval_EvalFrameDefault+25462>, 0x7ffff7b79c2b <_PyEval_EvalFrameDefault+30843>, 0x7ffff7b72a60 <_PyEval_EvalFrameDefault+1712>, 0x7ffff7b7b447 <_PyEval_EvalFrameDefault+37015>, 0x7ffff7a542dc <_PyEval_EvalFrameDefault-1171668>, 0x7ffff7b78a39 <_PyEval_EvalFrameDefault+26249>, 0x7ffff7b78777 <_PyEval_EvalFrameDefault+25543>, 0x7ffff7b7a14a <_PyEval_EvalFrameDefault+32154>, 0x7ffff7b769ec <_PyEval_EvalFrameDefault+17980>, 0x7ffff7b7906d <_PyEval_EvalFrameDefault+27837>, 0x7ffff7b7b241 <_PyEval_EvalFrameDefault+36497>, 0x7ffff7b72bb6 <_PyEval_EvalFrameDefault+2054>, 0x7ffff7b75279 <_PyEval_EvalFrameDefault+11977>, 0x7ffff7b74ea1 <_PyEval_EvalFrameDefault+10993>, 0x7ffff7b72c75 <_PyEval_EvalFrameDefault+2245>, 0x7ffff7b79e64 <_PyEval_EvalFrameDefault+31412>, 0x7ffff7b79ab6 <_PyEval_EvalFrameDefault+30470>, 0x7ffff7b73036 <_PyEval_EvalFrameDefault+3206>, 0x7ffff7b77529 <_PyEval_EvalFrameDefault+20857>, 0x7ffff7b771b9 <_PyEval_EvalFrameDefault+19977>, 0x7ffff7b76e69 <_PyEval_EvalFrameDefault+19129>, 0x7ffff7b7a88d <_PyEval_EvalFrameDefault+34013>, 0x7ffff7b7743a <_PyEval_EvalFrameDefault+20618>, 0x7ffff7b78f5a <_PyEval_EvalFrameDefault+27562>, 0x7ffff7b72539 <_PyEval_EvalFrameDefault+393>, 0x7ffff7b7408d <_PyEval_EvalFrameDefault+7389>, 0x7ffff7b746c9 <_PyEval_EvalFrameDefault+8985>, 0x7ffff7b7b5a0 <_PyEval_EvalFrameDefault+37360>, 0x7ffff7b77b2a <_PyEval_EvalFrameDefault+22394>, 0x7ffff7b755a7 <_PyEval_EvalFrameDefault+12791>, 0x7ffff7b7aa12 <_PyEval_EvalFrameDefault+34402>, 0x7ffff7b7a911 <_PyEval_EvalFrameDefault+34145>, 0x7ffff7b72622 <_PyEval_EvalFrameDefault+626>, 0x7ffff7a559c6 <_PyEval_EvalFrameDefault-1165802> <repeats 30 times>, 0x7ffff7b7724a <_PyEval_EvalFrameDefault+20122>, 0x7ffff7b764e3 <_PyEval_EvalFrameDefault+16691>, 0x7ffff7b744ff <_PyEval_EvalFrameDefault+8527>, 0x7ffff7b779b3 <_PyEval_EvalFrameDefault+22019>, 0x7ffff7b73902 <_PyEval_EvalFrameDefault+5458>, 0x7ffff7b76151 <_PyEval_EvalFrameDefault+15777>, 0x7ffff7b75c97 <_PyEval_EvalFrameDefault+14567>, 0x7ffff7b74f1d <_PyEval_EvalFrameDefault+11117>, 0x7ffff7b76adc <_PyEval_EvalFrameDefault+18220>, 0x7ffff7b794db <_PyEval_EvalFrameDefault+28971>, 0x7ffff7b752f1 <_PyEval_EvalFrameDefault+12097>, 0x7ffff7b7440c <_PyEval_EvalFrameDefault+8284>, 0x7ffff7b7781d <_PyEval_EvalFrameDefault+21613>, 0x7ffff7b79128 <_PyEval_EvalFrameDefault+28024>, 0x7ffff7b755f5 <_PyEval_EvalFrameDefault+12869>, 0x7ffff7b76c39 <_PyEval_EvalFrameDefault+18569>, 0x7ffff7b74fd8 <_PyEval_EvalFrameDefault+11304>, 0x7ffff7b7410f <_PyEval_EvalFrameDefault+7519>, 0x7ffff7b749c6 <_PyEval_EvalFrameDefault+9750>, 0x7ffff7b73216 <_PyEval_EvalFrameDefault+3686>, 0x7ffff7b745b1 <_PyEval_EvalFrameDefault+8705>, 0x7ffff7b747aa <_PyEval_EvalFrameDefault+9210>, 0x7ffff7b778ed <_PyEval_EvalFrameDefault+21821>, 0x7ffff7b73b51 <_PyEval_EvalFrameDefault+6049>, 0x7ffff7b7634e <_PyEval_EvalFrameDefault+16286>, 0x7ffff7b75ea0 <_PyEval_EvalFrameDefault+15088>, 0x7ffff7b77e6a <_PyEval_EvalFrameDefault+23226>, 0x7ffff7b73dbf <_PyEval_EvalFrameDefault+6671>, 0x7ffff7b734b8 <_PyEval_EvalFrameDefault+4360>, 0x7ffff7b753b4 <_PyEval_EvalFrameDefault+12292>, 0x7ffff7b77a8a <_PyEval_EvalFrameDefault+22234>, 0x7ffff7b79974 <_PyEval_EvalFrameDefault+30148>, 0x7ffff7b7438a <_PyEval_EvalFrameDefault+8154>, 0x7ffff7b772a3 <_PyEval_EvalFrameDefault+20211>, 0x7ffff7b72eb6 <_PyEval_EvalFrameDefault+2822>, 0x7ffff7b75d69 <_PyEval_EvalFrameDefault+14777>, 0x7ffff7b77ff2 <_PyEval_EvalFrameDefault+23618>, 0x7ffff7b78218 <_PyEval_EvalFrameDefault+24168>, 0x7ffff7b7811a <_PyEval_EvalFrameDefault+23914>, 0x7ffff7b73f55 <_PyEval_EvalFrameDefault+7077>, 0x7ffff7b73fe6 <_PyEval_EvalFrameDefault+7222>, 0x7ffff7b76fd4 <_PyEval_EvalFrameDefault+19492>, 0x7ffff7b79441 <_PyEval_EvalFrameDefault+28817>, 0x7ffff7a522da <_PyEval_EvalFrameDefault-1179862>, 0x7ffff7b733a3 <_PyEval_EvalFrameDefault+4083>, 0x7ffff7b76827 <_PyEval_EvalFrameDefault+17527>, 0x7ffff7b73440 <_PyEval_EvalFrameDefault+4240>, 0x7ffff7b73ebf <_PyEval_EvalFrameDefault+6927>, 0x7ffff7b751be <_PyEval_EvalFrameDefault+11790>, 0x7ffff7b7ad71 <_PyEval_EvalFrameDefault+35265>, 0x7ffff7b773a6 <_PyEval_EvalFrameDefault+20470>, 0x7ffff7b77d49 <_PyEval_EvalFrameDefault+22937>, 0x7ffff7b742f0 <_PyEval_EvalFrameDefault+8000>, 0x7ffff7b77c58 <_PyEval_EvalFrameDefault+22696>, 0x7ffff7b72adf <_PyEval_EvalFrameDefault+1839>, 0x7ffff7b72d67 <_PyEval_EvalFrameDefault+2487>, 0x7ffff7b7ab33 <_PyEval_EvalFrameDefault+34691>, 0x7ffff7b78813 <_PyEval_EvalFrameDefault+25699>, 0x7ffff7b724f2 <_PyEval_EvalFrameDefault+322>, 0x7ffff7b726fa <_PyEval_EvalFrameDefault+842>, 0x7ffff7b754d8 <_PyEval_EvalFrameDefault+12584>, 0x7ffff7b76286 <_PyEval_EvalFrameDefault+16086>, 0x7ffff7b7a836 <_PyEval_EvalFrameDefault+33926>, 0x7ffff7b765ae <_PyEval_EvalFrameDefault+16894>, 0x7ffff7b770ef <_PyEval_EvalFrameDefault+19775>, 0x7ffff7b7766a <_PyEval_EvalFrameDefault+21178>, 0x7ffff7b731cd <_PyEval_EvalFrameDefault+3613>, 0x7ffff7b7620d <_PyEval_EvalFrameDefault+15965>, 0x7ffff7b78b5f <_PyEval_EvalFrameDefault+26543>, 0x7ffff7b75fea <_PyEval_EvalFrameDefault+15418>, 0x7ffff7b77bd0 <_PyEval_EvalFrameDefault+22560>...}
        word = <optimized out>
        word = <optimized out>
#8  0x00007ffff7c4052b in PyEval_EvalCode (co=0x7fffe97651b0, globals=<optimized out>, locals=0x7fffe9734500) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/ceval.c:599
        tstate = 0x7ffff7f0e2e0 <_PyRuntime+280224>
        builtins = <optimized out>
        desc = {fc_globals = 0x7fffe9734500, fc_builtins = 0x7ffff76d5d00, fc_name = 0x7ffff7ed15f0 <_PyRuntime+31152>, fc_qualname = 0x7ffff7ed15f0 <_PyRuntime+31152>, fc_code = 0x7fffe97651b0, fc_defaults = 0x0, fc_kwdefaults = 0x0, fc_closure = 0x0}
        func = 0x7fffe9727240
        res = <optimized out>
#9  0x00007ffff7c628d0 in run_eval_code_obj (tstate=tstate@entry=0x7ffff7f0e2e0 <_PyRuntime+280224>, co=co@entry=0x7fffe97651b0, globals=globals@entry=0x7fffe9734500, locals=locals@entry=0x7fffe9734500) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:1292
        v = <optimized out>
        has_builtins = <optimized out>
#10 0x00007ffff7c5cf33 in run_mod (mod=mod@entry=0x5555556130f0, filename=filename@entry=0x7fffe9756a30, globals=globals@entry=0x7fffe9734500, locals=locals@entry=0x7fffe9734500, flags=flags@entry=0x7fffffffde68, arena=arena@entry=0x7ffff7647cf0, interactive_src=0x0, generate_new_source=0) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:1377
        tstate = 0x7ffff7f0e2e0 <_PyRuntime+280224>
        interactive_filename = <optimized out>
        co = 0x7fffe97651b0
        v = <optimized out>
#11 0x00007ffff7c7d016 in pyrun_file (fp=fp@entry=0x5555556069c0, filename=filename@entry=0x7fffe9756a30, start=start@entry=257, globals=globals@entry=0x7fffe9734500, locals=locals@entry=0x7fffe9734500, closeit=closeit@entry=1, flags=0x7fffffffde68) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:1210
        arena = 0x7ffff7647cf0
        mod = <optimized out>
        ret = <optimized out>
#12 0x00007ffff7c7c18f in _PyRun_SimpleFileObject (fp=fp@entry=0x5555556069c0, filename=filename@entry=0x7fffe9756a30, closeit=closeit@entry=1, flags=flags@entry=0x7fffffffde68) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:459
        ret = <optimized out>
        main_module = 0x7fffe97076f0
        dict = 0x7fffe9734500
        set_file_name = 1
        has_file = <optimized out>
        pyc = <optimized out>
        v = <optimized out>
#13 0x00007ffff7c7bfb1 in _PyRun_AnyFileObject (fp=fp@entry=0x5555556069c0, filename=filename@entry=0x7fffe9756a30, closeit=closeit@entry=1, flags=flags@entry=0x7fffffffde68) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:77
        decref_filename = 0
        res = <optimized out>
#14 0x00007ffff7c756b7 in pymain_run_file_obj (program_name=0x7fffe9734630, filename=0x7fffe9756a30, skip_source_first_line=0) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:357
        fp = 0x5555556069c0
        sb = {st_dev = 64770, st_ino = 319713036, st_nlink = 1, st_mode = 33188, st_uid = 1000, st_gid = 1000, __pad0 = 0, st_rdev = 0, st_size = 430, st_blksize = 4096, st_blocks = 8, st_atim = {tv_sec = 1718826771, tv_nsec = 28229381}, st_mtim = {tv_sec = 1718826762, tv_nsec = 618238214}, st_ctim = {tv_sec = 1718826762, tv_nsec = 625238206}, __glibc_reserved = {0, 0, 0}}
        cf = {cf_flags = 0, cf_feature_version = 13}
        run = <optimized out>
        fp = <optimized out>
        sb = <optimized out>
        cf = <optimized out>
        run = <optimized out>
        ch = <optimized out>
#15 pymain_run_file (config=0x7ffff7ee09d8 <_PyRuntime+93592>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:376
        filename = 0x7fffe9756a30
        program_name = 0x7fffe9734630
        res = <optimized out>
        filename = <optimized out>
        program_name = <optimized out>
        res = <optimized out>
#16 pymain_run_python (exitcode=0x7fffffffde5c) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:639
        main_importer_path = <optimized out>
        interp = 0x7ffff7edeaa0 <_PyRuntime+85600>
        config = 0x7ffff7ee09d8 <_PyRuntime+93592>
        path0 = 0x7fffe9759ca0
        main_importer_path = <optimized out>
        interp = <optimized out>
        config = <optimized out>
        error = <optimized out>
        path0 = <optimized out>
        done = <optimized out>
        res = <optimized out>
        _tmp_op_ptr = <optimized out>
        _tmp_old_op = <optimized out>
        wstr = <optimized out>
        res = <optimized out>
#17 Py_RunMain () at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:718
        exitcode = 0
#18 0x00007ffff7c2c89c in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:772
        args = {argc = 2, use_bytes_argv = 1, bytes_argv = 0x7fffffffe0c8, wchar_argv = 0x0}
#19 0x00007ffff7838248 in __libc_start_call_main (main=main@entry=0x555555555160 <main>, argc=argc@entry=2, argv=argv@entry=0x7fffffffe0c8) at ../sysdeps/nptl/libc_start_call_main.h:58
        self = <optimized out>
        result = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140737488347336, 2062329613095650748, 2, 0, 140737354125312, 93824992247152, 2062329613152273852, 2062311233837319612}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x2, 0x7fffffffe0c0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 2}}}
        not_first_call = <optimized out>
#20 0x00007ffff783830b in __libc_start_main_impl (main=0x555555555160 <main>, argc=2, argv=0x7fffffffe0c8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe0b8) at ../csu/libc-start.c:360
No locals.
#21 0x0000555555555095 in _start ()
No symbol table info available.
quit
#0  framelocalsproxy_getitem (self=<optimized out>, key=0x7ffff7ed4b98 <_PyRuntime+44888>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Objects/frameobject.c:117
#1  0x00007ffff7b5cb2b in dict_merge (interp=<optimized out>, a=<optimized out>, b=0x7fffe9613460, override=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Objects/dictobject.c:3839
#2  dict_merge (interp=<optimized out>, a=<optimized out>, b=0x7fffe9613460, override=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Objects/dictobject.c:3771
#3  0x00007ffff7ca5a72 in _PyEval_GetFrameLocals () at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/ceval.c:2511
#4  0x00007ffff7b61abf in cfunction_vectorcall_NOARGS (func=0x7ffff76c37e0, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Include/cpython/methodobject.h:50
#5  0x00007ffff7b60dc7 in _PyObject_VectorcallTstate (tstate=0x7ffff7f0e2e0 <_PyRuntime+280224>, callable=0x7ffff76c37e0, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Include/internal/pycore_call.h:168
#6  PyObject_Vectorcall (callable=0x7ffff76c37e0, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Objects/call.c:327
#7  0x00007ffff7b737f4 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/generated_cases.c.h:813
#8  0x00007ffff7c4052b in PyEval_EvalCode (co=0x7fffe97651b0, globals=<optimized out>, locals=0x7fffe9734500) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/ceval.c:599
#9  0x00007ffff7c628d0 in run_eval_code_obj (tstate=tstate@entry=0x7ffff7f0e2e0 <_PyRuntime+280224>, co=co@entry=0x7fffe97651b0, globals=globals@entry=0x7fffe9734500, locals=locals@entry=0x7fffe9734500) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:1292
#10 0x00007ffff7c5cf33 in run_mod (mod=mod@entry=0x555555612720, filename=filename@entry=0x7fffe9756a30, globals=globals@entry=0x7fffe9734500, locals=locals@entry=0x7fffe9734500, flags=flags@entry=0x7fffffffde68, arena=arena@entry=0x7ffff7647cf0, interactive_src=0x0, generate_new_source=0) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:1377
#11 0x00007ffff7c7d016 in pyrun_file (fp=fp@entry=0x5555555815c0, filename=filename@entry=0x7fffe9756a30, start=start@entry=257, globals=globals@entry=0x7fffe9734500, locals=locals@entry=0x7fffe9734500, closeit=closeit@entry=1, flags=0x7fffffffde68) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:1210
#12 0x00007ffff7c7c18f in _PyRun_SimpleFileObject (fp=fp@entry=0x5555555815c0, filename=filename@entry=0x7fffe9756a30, closeit=closeit@entry=1, flags=flags@entry=0x7fffffffde68) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:459
#13 0x00007ffff7c7bfb1 in _PyRun_AnyFileObject (fp=fp@entry=0x5555555815c0, filename=filename@entry=0x7fffe9756a30, closeit=closeit@entry=1, flags=flags@entry=0x7fffffffde68) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:77
#14 0x00007ffff7c756b7 in pymain_run_file_obj (program_name=0x7fffe9734630, filename=0x7fffe9756a30, skip_source_first_line=0) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:357
#15 pymain_run_file (config=0x7ffff7ee09d8 <_PyRuntime+93592>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:376
#16 pymain_run_python (exitcode=0x7fffffffde5c) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:639
#17 Py_RunMain () at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:718
#18 0x00007ffff7c2c89c in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:772
#19 0x00007ffff7838248 in __libc_start_call_main (main=main@entry=0x555555555160 <main>, argc=argc@entry=2, argv=argv@entry=0x7fffffffe0c8) at ../sysdeps/nptl/libc_start_call_main.h:58
#20 0x00007ffff783830b in __libc_start_main_impl (main=0x555555555160 <main>, argc=2, argv=0x7fffffffe0c8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe0b8) at ../csu/libc-start.c:360
#21 0x0000555555555095 in _start ()
#0  framelocalsproxy_getitem (self=<optimized out>, key=0x7ffff7ed4b98 <_PyRuntime+44888>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Objects/frameobject.c:117
        value = 0x8
        i = <optimized out>
        frame = 0x7fffe95df6b0
        co = 0x7fffe945a0b0
        extra = <optimized out>
#1  0x00007ffff7b5cb2b in dict_merge (interp=<optimized out>, a=<optimized out>, b=0x7fffe9613460, override=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Objects/dictobject.c:3839
        keys = <optimized out>
        iter = 0x7fffe9429f00
        key = <optimized out>
        value = <optimized out>
        status = <optimized out>
        mp = <optimized out>
        other = <optimized out>
        res = <optimized out>
        slow_exit = <optimized out>
        mp = <optimized out>
        other = <optimized out>
        res = <optimized out>
        slow_exit = <optimized out>
        res = <optimized out>
        keys = <optimized out>
        iter = <optimized out>
        key = <optimized out>
        value = <optimized out>
        status = <optimized out>
#2  dict_merge (interp=<optimized out>, a=<optimized out>, b=0x7fffe9613460, override=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Objects/dictobject.c:3771
        mp = <optimized out>
        other = <optimized out>
        res = 0
        slow_exit = <optimized out>
        keys = <optimized out>
        iter = <optimized out>
        key = <optimized out>
        value = <optimized out>
        status = <optimized out>
#3  0x00007ffff7ca5a72 in _PyEval_GetFrameLocals () at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/ceval.c:2511
        ret = 0x7fffe95e7780
        op = <optimized out>
        dealloc = <optimized out>
        op = <optimized out>
        dealloc = <optimized out>
        op = <optimized out>
        dealloc = <optimized out>
        tstate = <optimized out>
        current_frame = <optimized out>
        locals = 0x7fffe9613460
#4  0x00007ffff7b61abf in cfunction_vectorcall_NOARGS (func=0x7ffff76c37e0, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Include/cpython/methodobject.h:50
        tstate = 0x7ffff7f0e2e0 <_PyRuntime+280224>
        nargs = <optimized out>
        meth = <optimized out>
        result = <optimized out>
#5  0x00007ffff7b60dc7 in _PyObject_VectorcallTstate (tstate=0x7ffff7f0e2e0 <_PyRuntime+280224>, callable=0x7ffff76c37e0, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Include/internal/pycore_call.h:168
        func = <optimized out>
        res = <optimized out>
        func = <optimized out>
        res = <optimized out>
        nargs = <optimized out>
#6  PyObject_Vectorcall (callable=0x7ffff76c37e0, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Objects/call.c:327
        tstate = 0x7ffff7f0e2e0 <_PyRuntime+280224>
#7  0x00007ffff7b737f4 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/generated_cases.c.h:813
        total_args = <optimized out>
        self = <optimized out>
        method = <optimized out>
        op = <optimized out>
        dealloc = <optimized out>
        self_or_null = <optimized out>
        callable = 0x7ffff76c37e0
        this_instr = <optimized out>
        args = 0x7ffff7fbb170
        res = <optimized out>
        opcode = <optimized out>
        oparg = <optimized out>
        entry_frame = {f_executable = 0x7ffff7ec1130 <_Py_NoneStruct>, previous = 0x0, f_funcobj = 0x7fffe97651b0, f_globals = 0x7fffe9734500, f_builtins = 0x7fffffffdba0, f_locals = 0xa7675715f612ed00, frame_obj = 0x7fffffffdbb0, instr_ptr = 0x7ffff7dafbc2 <_Py_INTERPRETER_TRAMPOLINE_INSTRUCTIONS+2>, stacktop = 0, return_offset = 0, owner = 3 '\003', localsplus = {0x7ffff7f0e2e0 <_PyRuntime+280224>}}
        next_instr = 0x7fffe945a198
        stack_pointer = <optimized out>
        exception_unwind = <optimized out>
        dying = <optimized out>
        __func__ = "_PyEval_EvalFrameDefault"
        opcode_targets = {0x7ffff7a5590b <_PyEval_EvalFrameDefault-1165989>, 0x7ffff7a51d4c <_PyEval_EvalFrameDefault-1181284>, 0x7ffff7b78bdc <_PyEval_EvalFrameDefault+26668>, 0x7ffff7b79739 <_PyEval_EvalFrameDefault+29577>, 0x7ffff7b7674b <_PyEval_EvalFrameDefault+17307>, 0x7ffff7b75bb3 <_PyEval_EvalFrameDefault+14339>, 0x7ffff7a54d18 <_PyEval_EvalFrameDefault-1169048>, 0x7ffff7b78684 <_PyEval_EvalFrameDefault+25300>, 0x7ffff7b7a671 <_PyEval_EvalFrameDefault+33473>, 0x7ffff7b79a2b <_PyEval_EvalFrameDefault+30331>, 0x7ffff7a549ef <_PyEval_EvalFrameDefault-1169857>, 0x7ffff7b7b7aa <_PyEval_EvalFrameDefault+37882>, 0x7ffff7b7a714 <_PyEval_EvalFrameDefault+33636>, 0x7ffff7b7901d <_PyEval_EvalFrameDefault+27757>, 0x7ffff7b78fc8 <_PyEval_EvalFrameDefault+27672>, 0x7ffff7b7962e <_PyEval_EvalFrameDefault+29310>, 0x7ffff7a533eb <_PyEval_EvalFrameDefault-1175493>, 0x7ffff7a5555c <_PyEval_EvalFrameDefault-1166932>, 0x7ffff7a53304 <_PyEval_EvalFrameDefault-1175724>, 0x7ffff7b758ae <_PyEval_EvalFrameDefault+13566>, 0x7ffff7b7a396 <_PyEval_EvalFrameDefault+32742>, 0x7ffff7b7a32a <_PyEval_EvalFrameDefault+32634>, 0x7ffff7b72e70 <_PyEval_EvalFrameDefault+2752>, 0x7ffff7a5512e <_PyEval_EvalFrameDefault-1168002>, 0x7ffff7b7b51a <_PyEval_EvalFrameDefault+37226>, 0x7ffff7b7b3ef <_PyEval_EvalFrameDefault+36927>, 0x7ffff7b76680 <_PyEval_EvalFrameDefault+17104>, 0x7ffff7b7b1d2 <_PyEval_EvalFrameDefault+36386>, 0x7ffff7b7ac2b <_PyEval_EvalFrameDefault+34939>, 0x7ffff7b7a591 <_PyEval_EvalFrameDefault+33249>, 0x7ffff7b75b80 <_PyEval_EvalFrameDefault+14288>, 0x7ffff7b782f5 <_PyEval_EvalFrameDefault+24389>, 0x7ffff7b72e22 <_PyEval_EvalFrameDefault+2674>, 0x7ffff7b78379 <_PyEval_EvalFrameDefault+24521>, 0x7ffff7b72d27 <_PyEval_EvalFrameDefault+2423>, 0x7ffff7b768aa <_PyEval_EvalFrameDefault+17658>, 0x7ffff7b72fa9 <_PyEval_EvalFrameDefault+3065>, 0x7ffff7b7b310 <_PyEval_EvalFrameDefault+36704>, 0x7ffff7b79c87 <_PyEval_EvalFrameDefault+30935>, 0x7ffff7b7893a <_PyEval_EvalFrameDefault+25994>, 0x7ffff7b75928 <_PyEval_EvalFrameDefault+13688>, 0x7ffff7b7aaaa <_PyEval_EvalFrameDefault+34554>, 0x7ffff7b7857e <_PyEval_EvalFrameDefault+25038>, 0x7ffff7b7991c <_PyEval_EvalFrameDefault+30060>, 0x7ffff7b7a786 <_PyEval_EvalFrameDefault+33750>, 0x7ffff7b730d7 <_PyEval_EvalFrameDefault+3367>, 0x7ffff7b7a418 <_PyEval_EvalFrameDefault+32872>, 0x7ffff7b7705d <_PyEval_EvalFrameDefault+19629>, 0x7ffff7b76db2 <_PyEval_EvalFrameDefault+18946>, 0x7ffff7b79d96 <_PyEval_EvalFrameDefault+31206>, 0x7ffff7b79b55 <_PyEval_EvalFrameDefault+30629>, 0x7ffff7b78d7f <_PyEval_EvalFrameDefault+27087>, 0x7ffff7b7513e <_PyEval_EvalFrameDefault+11662>, 0x7ffff7b76ec4 <_PyEval_EvalFrameDefault+19220>, 0x7ffff7b783ee <_PyEval_EvalFrameDefault+24638>, 0x7ffff7b7af78 <_PyEval_EvalFrameDefault+35784>, 0x7ffff7b7aece <_PyEval_EvalFrameDefault+35614>, 0x7ffff7b759e7 <_PyEval_EvalFrameDefault+13879>, 0x7ffff7b74c97 <_PyEval_EvalFrameDefault+10471>, 0x7ffff7b76042 <_PyEval_EvalFrameDefault+15506>, 0x7ffff7b796c0 <_PyEval_EvalFrameDefault+29456>, 0x7ffff7b748f2 <_PyEval_EvalFrameDefault+9538>, 0x7ffff7b739a0 <_PyEval_EvalFrameDefault+5616>, 0x7ffff7b785fa <_PyEval_EvalFrameDefault+25162>, 0x7ffff7a52b72 <_PyEval_EvalFrameDefault-1177662>, 0x7ffff7b7ade7 <_PyEval_EvalFrameDefault+35383>, 0x7ffff7a5439d <_PyEval_EvalFrameDefault-1171475>, 0x7ffff7b7ae48 <_PyEval_EvalFrameDefault+35480>, 0x7ffff7b78cda <_PyEval_EvalFrameDefault+26922>, 0x7ffff7b7b622 <_PyEval_EvalFrameDefault+37490>, 0x7ffff7a548ce <_PyEval_EvalFrameDefault-1170146>, 0x7ffff7b76bfd <_PyEval_EvalFrameDefault+18509>, 0x7ffff7b73a81 <_PyEval_EvalFrameDefault+5841>, 0x7ffff7a546f2 <_PyEval_EvalFrameDefault-1170622>, 0x7ffff7b7b159 <_PyEval_EvalFrameDefault+36265>, 0x7ffff7b7b00f <_PyEval_EvalFrameDefault+35935>, 0x7ffff7b7494a <_PyEval_EvalFrameDefault+9626>, 0x7ffff7b72cd6 <_PyEval_EvalFrameDefault+2342>, 0x7ffff7b726bf <_PyEval_EvalFrameDefault+783>, 0x7ffff7b76317 <_PyEval_EvalFrameDefault+16231>, 0x7ffff7b7428b <_PyEval_EvalFrameDefault+7899>, 0x7ffff7b7a5f0 <_PyEval_EvalFrameDefault+33344>, 0x7ffff7b73ce7 <_PyEval_EvalFrameDefault+6455>, 0x7ffff7b725c6 <_PyEval_EvalFrameDefault+534>, 0x7ffff7b72c17 <_PyEval_EvalFrameDefault+2151>, 0x7ffff7b724a1 <_PyEval_EvalFrameDefault+241>, 0x7ffff7b78726 <_PyEval_EvalFrameDefault+25462>, 0x7ffff7b79c2b <_PyEval_EvalFrameDefault+30843>, 0x7ffff7b72a60 <_PyEval_EvalFrameDefault+1712>, 0x7ffff7b7b447 <_PyEval_EvalFrameDefault+37015>, 0x7ffff7a542dc <_PyEval_EvalFrameDefault-1171668>, 0x7ffff7b78a39 <_PyEval_EvalFrameDefault+26249>, 0x7ffff7b78777 <_PyEval_EvalFrameDefault+25543>, 0x7ffff7b7a14a <_PyEval_EvalFrameDefault+32154>, 0x7ffff7b769ec <_PyEval_EvalFrameDefault+17980>, 0x7ffff7b7906d <_PyEval_EvalFrameDefault+27837>, 0x7ffff7b7b241 <_PyEval_EvalFrameDefault+36497>, 0x7ffff7b72bb6 <_PyEval_EvalFrameDefault+2054>, 0x7ffff7b75279 <_PyEval_EvalFrameDefault+11977>, 0x7ffff7b74ea1 <_PyEval_EvalFrameDefault+10993>, 0x7ffff7b72c75 <_PyEval_EvalFrameDefault+2245>, 0x7ffff7b79e64 <_PyEval_EvalFrameDefault+31412>, 0x7ffff7b79ab6 <_PyEval_EvalFrameDefault+30470>, 0x7ffff7b73036 <_PyEval_EvalFrameDefault+3206>, 0x7ffff7b77529 <_PyEval_EvalFrameDefault+20857>, 0x7ffff7b771b9 <_PyEval_EvalFrameDefault+19977>, 0x7ffff7b76e69 <_PyEval_EvalFrameDefault+19129>, 0x7ffff7b7a88d <_PyEval_EvalFrameDefault+34013>, 0x7ffff7b7743a <_PyEval_EvalFrameDefault+20618>, 0x7ffff7b78f5a <_PyEval_EvalFrameDefault+27562>, 0x7ffff7b72539 <_PyEval_EvalFrameDefault+393>, 0x7ffff7b7408d <_PyEval_EvalFrameDefault+7389>, 0x7ffff7b746c9 <_PyEval_EvalFrameDefault+8985>, 0x7ffff7b7b5a0 <_PyEval_EvalFrameDefault+37360>, 0x7ffff7b77b2a <_PyEval_EvalFrameDefault+22394>, 0x7ffff7b755a7 <_PyEval_EvalFrameDefault+12791>, 0x7ffff7b7aa12 <_PyEval_EvalFrameDefault+34402>, 0x7ffff7b7a911 <_PyEval_EvalFrameDefault+34145>, 0x7ffff7b72622 <_PyEval_EvalFrameDefault+626>, 0x7ffff7a559c6 <_PyEval_EvalFrameDefault-1165802> <repeats 30 times>, 0x7ffff7b7724a <_PyEval_EvalFrameDefault+20122>, 0x7ffff7b764e3 <_PyEval_EvalFrameDefault+16691>, 0x7ffff7b744ff <_PyEval_EvalFrameDefault+8527>, 0x7ffff7b779b3 <_PyEval_EvalFrameDefault+22019>, 0x7ffff7b73902 <_PyEval_EvalFrameDefault+5458>, 0x7ffff7b76151 <_PyEval_EvalFrameDefault+15777>, 0x7ffff7b75c97 <_PyEval_EvalFrameDefault+14567>, 0x7ffff7b74f1d <_PyEval_EvalFrameDefault+11117>, 0x7ffff7b76adc <_PyEval_EvalFrameDefault+18220>, 0x7ffff7b794db <_PyEval_EvalFrameDefault+28971>, 0x7ffff7b752f1 <_PyEval_EvalFrameDefault+12097>, 0x7ffff7b7440c <_PyEval_EvalFrameDefault+8284>, 0x7ffff7b7781d <_PyEval_EvalFrameDefault+21613>, 0x7ffff7b79128 <_PyEval_EvalFrameDefault+28024>, 0x7ffff7b755f5 <_PyEval_EvalFrameDefault+12869>, 0x7ffff7b76c39 <_PyEval_EvalFrameDefault+18569>, 0x7ffff7b74fd8 <_PyEval_EvalFrameDefault+11304>, 0x7ffff7b7410f <_PyEval_EvalFrameDefault+7519>, 0x7ffff7b749c6 <_PyEval_EvalFrameDefault+9750>, 0x7ffff7b73216 <_PyEval_EvalFrameDefault+3686>, 0x7ffff7b745b1 <_PyEval_EvalFrameDefault+8705>, 0x7ffff7b747aa <_PyEval_EvalFrameDefault+9210>, 0x7ffff7b778ed <_PyEval_EvalFrameDefault+21821>, 0x7ffff7b73b51 <_PyEval_EvalFrameDefault+6049>, 0x7ffff7b7634e <_PyEval_EvalFrameDefault+16286>, 0x7ffff7b75ea0 <_PyEval_EvalFrameDefault+15088>, 0x7ffff7b77e6a <_PyEval_EvalFrameDefault+23226>, 0x7ffff7b73dbf <_PyEval_EvalFrameDefault+6671>, 0x7ffff7b734b8 <_PyEval_EvalFrameDefault+4360>, 0x7ffff7b753b4 <_PyEval_EvalFrameDefault+12292>, 0x7ffff7b77a8a <_PyEval_EvalFrameDefault+22234>, 0x7ffff7b79974 <_PyEval_EvalFrameDefault+30148>, 0x7ffff7b7438a <_PyEval_EvalFrameDefault+8154>, 0x7ffff7b772a3 <_PyEval_EvalFrameDefault+20211>, 0x7ffff7b72eb6 <_PyEval_EvalFrameDefault+2822>, 0x7ffff7b75d69 <_PyEval_EvalFrameDefault+14777>, 0x7ffff7b77ff2 <_PyEval_EvalFrameDefault+23618>, 0x7ffff7b78218 <_PyEval_EvalFrameDefault+24168>, 0x7ffff7b7811a <_PyEval_EvalFrameDefault+23914>, 0x7ffff7b73f55 <_PyEval_EvalFrameDefault+7077>, 0x7ffff7b73fe6 <_PyEval_EvalFrameDefault+7222>, 0x7ffff7b76fd4 <_PyEval_EvalFrameDefault+19492>, 0x7ffff7b79441 <_PyEval_EvalFrameDefault+28817>, 0x7ffff7a522da <_PyEval_EvalFrameDefault-1179862>, 0x7ffff7b733a3 <_PyEval_EvalFrameDefault+4083>, 0x7ffff7b76827 <_PyEval_EvalFrameDefault+17527>, 0x7ffff7b73440 <_PyEval_EvalFrameDefault+4240>, 0x7ffff7b73ebf <_PyEval_EvalFrameDefault+6927>, 0x7ffff7b751be <_PyEval_EvalFrameDefault+11790>, 0x7ffff7b7ad71 <_PyEval_EvalFrameDefault+35265>, 0x7ffff7b773a6 <_PyEval_EvalFrameDefault+20470>, 0x7ffff7b77d49 <_PyEval_EvalFrameDefault+22937>, 0x7ffff7b742f0 <_PyEval_EvalFrameDefault+8000>, 0x7ffff7b77c58 <_PyEval_EvalFrameDefault+22696>, 0x7ffff7b72adf <_PyEval_EvalFrameDefault+1839>, 0x7ffff7b72d67 <_PyEval_EvalFrameDefault+2487>, 0x7ffff7b7ab33 <_PyEval_EvalFrameDefault+34691>, 0x7ffff7b78813 <_PyEval_EvalFrameDefault+25699>, 0x7ffff7b724f2 <_PyEval_EvalFrameDefault+322>, 0x7ffff7b726fa <_PyEval_EvalFrameDefault+842>, 0x7ffff7b754d8 <_PyEval_EvalFrameDefault+12584>, 0x7ffff7b76286 <_PyEval_EvalFrameDefault+16086>, 0x7ffff7b7a836 <_PyEval_EvalFrameDefault+33926>, 0x7ffff7b765ae <_PyEval_EvalFrameDefault+16894>, 0x7ffff7b770ef <_PyEval_EvalFrameDefault+19775>, 0x7ffff7b7766a <_PyEval_EvalFrameDefault+21178>, 0x7ffff7b731cd <_PyEval_EvalFrameDefault+3613>, 0x7ffff7b7620d <_PyEval_EvalFrameDefault+15965>, 0x7ffff7b78b5f <_PyEval_EvalFrameDefault+26543>, 0x7ffff7b75fea <_PyEval_EvalFrameDefault+15418>, 0x7ffff7b77bd0 <_PyEval_EvalFrameDefault+22560>...}
        word = <optimized out>
        word = <optimized out>
#8  0x00007ffff7c4052b in PyEval_EvalCode (co=0x7fffe97651b0, globals=<optimized out>, locals=0x7fffe9734500) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/ceval.c:599
        tstate = 0x7ffff7f0e2e0 <_PyRuntime+280224>
        builtins = <optimized out>
        desc = {fc_globals = 0x7fffe9734500, fc_builtins = 0x7ffff76d5d00, fc_name = 0x7ffff7ed15f0 <_PyRuntime+31152>, fc_qualname = 0x7ffff7ed15f0 <_PyRuntime+31152>, fc_code = 0x7fffe97651b0, fc_defaults = 0x0, fc_kwdefaults = 0x0, fc_closure = 0x0}
        func = 0x7ffff76fd4e0
        res = <optimized out>
#9  0x00007ffff7c628d0 in run_eval_code_obj (tstate=tstate@entry=0x7ffff7f0e2e0 <_PyRuntime+280224>, co=co@entry=0x7fffe97651b0, globals=globals@entry=0x7fffe9734500, locals=locals@entry=0x7fffe9734500) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:1292
        v = <optimized out>
        has_builtins = <optimized out>
#10 0x00007ffff7c5cf33 in run_mod (mod=mod@entry=0x555555612720, filename=filename@entry=0x7fffe9756a30, globals=globals@entry=0x7fffe9734500, locals=locals@entry=0x7fffe9734500, flags=flags@entry=0x7fffffffde68, arena=arena@entry=0x7ffff7647cf0, interactive_src=0x0, generate_new_source=0) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:1377
        tstate = 0x7ffff7f0e2e0 <_PyRuntime+280224>
        interactive_filename = <optimized out>
        co = 0x7fffe97651b0
        v = <optimized out>
#11 0x00007ffff7c7d016 in pyrun_file (fp=fp@entry=0x5555555815c0, filename=filename@entry=0x7fffe9756a30, start=start@entry=257, globals=globals@entry=0x7fffe9734500, locals=locals@entry=0x7fffe9734500, closeit=closeit@entry=1, flags=0x7fffffffde68) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:1210
        arena = 0x7ffff7647cf0
        mod = <optimized out>
        ret = <optimized out>
#12 0x00007ffff7c7c18f in _PyRun_SimpleFileObject (fp=fp@entry=0x5555555815c0, filename=filename@entry=0x7fffe9756a30, closeit=closeit@entry=1, flags=flags@entry=0x7fffffffde68) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:459
        ret = <optimized out>
        main_module = 0x7fffe97076f0
        dict = 0x7fffe9734500
        set_file_name = 1
        has_file = <optimized out>
        pyc = <optimized out>
        v = <optimized out>
#13 0x00007ffff7c7bfb1 in _PyRun_AnyFileObject (fp=fp@entry=0x5555555815c0, filename=filename@entry=0x7fffe9756a30, closeit=closeit@entry=1, flags=flags@entry=0x7fffffffde68) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Python/pythonrun.c:77
        decref_filename = 0
        res = <optimized out>
#14 0x00007ffff7c756b7 in pymain_run_file_obj (program_name=0x7fffe9734630, filename=0x7fffe9756a30, skip_source_first_line=0) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:357
        fp = 0x5555555815c0
        sb = {st_dev = 64770, st_ino = 302687996, st_nlink = 1, st_mode = 33188, st_uid = 1000, st_gid = 1000, __pad0 = 0, st_rdev = 0, st_size = 392, st_blksize = 4096, st_blocks = 8, st_atim = {tv_sec = 1718827209, tv_nsec = 152769371}, st_mtim = {tv_sec = 1718827204, tv_nsec = 111774661}, st_ctim = {tv_sec = 1718827204, tv_nsec = 119774653}, __glibc_reserved = {0, 0, 0}}
        cf = {cf_flags = 0, cf_feature_version = 13}
        run = <optimized out>
        fp = <optimized out>
        sb = <optimized out>
        cf = <optimized out>
        run = <optimized out>
        ch = <optimized out>
#15 pymain_run_file (config=0x7ffff7ee09d8 <_PyRuntime+93592>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:376
        filename = 0x7fffe9756a30
        program_name = 0x7fffe9734630
        res = <optimized out>
        filename = <optimized out>
        program_name = <optimized out>
        res = <optimized out>
#16 pymain_run_python (exitcode=0x7fffffffde5c) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:639
        main_importer_path = <optimized out>
        interp = 0x7ffff7edeaa0 <_PyRuntime+85600>
        config = 0x7ffff7ee09d8 <_PyRuntime+93592>
        path0 = 0x7fffe9759ca0
        main_importer_path = <optimized out>
        interp = <optimized out>
        config = <optimized out>
        error = <optimized out>
        path0 = <optimized out>
        done = <optimized out>
        res = <optimized out>
        _tmp_op_ptr = <optimized out>
        _tmp_old_op = <optimized out>
        wstr = <optimized out>
        res = <optimized out>
#17 Py_RunMain () at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:718
        exitcode = 0
#18 0x00007ffff7c2c89c in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/python3.13-3.13.0~b2-3.fc41.x86_64/Modules/main.c:772
        args = {argc = 2, use_bytes_argv = 1, bytes_argv = 0x7fffffffe0c8, wchar_argv = 0x0}
#19 0x00007ffff7838248 in __libc_start_call_main (main=main@entry=0x555555555160 <main>, argc=argc@entry=2, argv=argv@entry=0x7fffffffe0c8) at ../sysdeps/nptl/libc_start_call_main.h:58
        self = <optimized out>
        result = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140737488347336, -5186364730400193682, 2, 0, 140737354125312, 93824992247152, -5186364729089473682, -5186382907729525906}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x2, 0x7fffffffe0c0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 2}}}
        not_first_call = <optimized out>
#20 0x00007ffff783830b in __libc_start_main_impl (main=0x555555555160 <main>, argc=2, argv=0x7fffffffe0c8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe0b8) at ../csu/libc-start.c:360
No locals.
#21 0x0000555555555095 in _start ()
No symbol table info available.

Should be reliably reproducible in a fresh fedora:rawhide container.

I suspect that some changes in 3.13 weren't compatible with the way kgb works and require corresponding fixes here. I suppose this could be a Python bug instead, but even in that case I won't be able to debug that and will need your help.

alebastr avatar Jun 19 '24 20:06 alebastr

Thanks for the report! Shame this is busted...

My initial hunch is that it has to do with the new locals() changes (https://peps.python.org/pep-0667/). Of course, it could be something else (JIT stuff, maybe?).

I'm going to need to spend some time figuring out exactly how this would impact bytecode mutation, and whether a workaround is possible.

chipx86 avatar Jun 19 '24 21:06 chipx86

Yeah, it's locals handling. Any call to locals() within our compiled function breaks. This indicates a problem building our CodeType, which may help narrow down the cause.

chipx86 avatar Jun 19 '24 23:06 chipx86

Testing a fix.

chipx86 avatar Jun 19 '24 23:06 chipx86

Can you test the attached patch locally?

0001-Fix-a-crash-when-accessing-locals-on-Python-3.13.patch

chipx86 avatar Jun 20 '24 02:06 chipx86

Thanks!

The patch works for me both locally and in the package build environment.

alebastr avatar Jun 20 '24 02:06 alebastr

Thanks for testing that so quickly!

I want to hold off on any release until 3.13 is further along (we haven't begun any official testing on 3.13 yet), in case anything regresses from this fix. We'll want to test it a while for existing releases. Would this be a blocker for you?

chipx86 avatar Jun 20 '24 03:06 chipx86

That is fine, I'll just skip the testcase in the RBTools package spec and reenable it when we get a fix. No other packages were affected so we can wait.

alebastr avatar Jun 20 '24 03:06 alebastr

Sounds good. Out of curiosity, is this for a Linux distro, or in-house build management?

chipx86 avatar Jun 25 '24 23:06 chipx86

It's for Fedora Linux. I took ownership of the RBTools package a few months ago.

alebastr avatar Jun 26 '24 03:06 alebastr