Bug 2393850 - kicad crashes during python runtime initialization
Summary: kicad crashes during python runtime initialization
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: kicad
Version: rawhide
Hardware: x86_64
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Steven A. Falco
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 2416523
Blocks:
TreeView+ depends on / blocked
 
Reported: 2025-09-08 12:30 UTC by Anton Guda
Modified: 2025-12-10 01:33 UTC (History)
7 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2025-12-07 16:11:32 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github python cpython pull 141944 0 None open [3.14] GH-139653: Only raise an exception (or fatal error) when the stack pointer is about to overflow the stack. (GH-14... 2025-11-25 15:04:22 UTC

Description Anton Guda 2025-09-08 12:30:03 UTC
When I try to open schematics, PCB, footprint editor, kicad crashes with information about python runtime.

Reproducible: Always

Steps to Reproduce:
1. Launch kicad
2. Try to open any schematics or PCB

Actual Results:
Fatal Python error: _Py_CheckRecursiveCall: Unrecoverable stack overflow (used -406047 kB) while calling a Python object
Python runtime state: initialized

Current thread 0x00007f2e05523040 [kicad] (most recent call first):
<no Python frame>
[1]+  Aborted                    (core dumped) kicad

Expected Results:
Just works withot crashes

Additional Information:
kicad-9.0.4-1.fc44.x86_64
python3-3.14.0~rc2-1.fc44.x86_64

Comment 1 Steven A. Falco 2025-09-08 13:43:01 UTC
I've started a discussion with the upstream KiCad developers.  My suspicion is that it is related to Rawhide having switched to python 3.14, while older Fedoras still use python 3.13.

Comment 2 Anton Guda 2025-10-02 16:20:40 UTC
kicad-9.0.5-1.fc44 - the same result.
flatpack org.kicad.KiCad  - works.

Comment 3 Steven A. Falco 2025-10-02 20:41:26 UTC
I've done some experiments to build KiCad without python scripting, but while that lets eeschema and the symbol editor run, we still get a crash on pcbnew and the footprint editor.

I talked with the lead developers, who tell me it would be a big job to disentangle python from KiCad.  And of course there would be a loss of functionality.

For now, I think the flatpak, which embeds an older python, is the only practical option.  If other environments also force an upgrade to python 3.14 with similar crashing behavior then that will motivate a different solution.

I'll leave this bug open as a reminder, but we may have to close it as "can't fix" at some point.

Comment 4 Scott Talbert 2025-10-02 22:09:46 UTC
This should in theory be fixable.  It could very well be a bug in Python.  The problem is narrowing down the problem to make a simple reproducer that the Python folks would look at.  Either that or find that the bug is in some other component.  :-)

Comment 5 Dr. David Alan Gilbert 2025-10-03 13:50:41 UTC
We don't seem to have a stack trace recorded, so:

(gdb) bt full
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
        tid = <optimized out>
        ret = 0
        pd = <optimized out>
        old_mask = {__val = {140050293587970}}
        ret = <optimized out>
#1  0x00007f60eff8c493 in __pthread_kill_internal (threadid=<optimized out>, signo=6) at pthread_kill.c:89
#2  0x00007f60eff3218e in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
        ret = <optimized out>
#3  0x00007f60eff196d0 in __GI_abort () at abort.c:77
        act = {__sigaction_handler = {sa_handler = 0x7f60ef385ef0 <_PyRuntime+51952>, sa_sigaction = 0x7f60ef385ef0 <_PyRuntime+51952>}, sa_mask = {__val = {4, 0, 1626620595453486592, 140054306764480, 140054307300584, 140052375925792, 140054320226652, 206158430256, 140052375925816, 140052375925616, 1626620595453486592, 140052375925664, 140054302672507, 94574515853664, 140054307075688, 140054307036912}}, sa_flags = -1244241, sa_restorer = 0x7f607c1df430}
#4  0x00007f60eef1afa8 in fatal_error_exit (status=-1)
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Python/pylifecycle.c:3155
#5  fatal_error
    (fd=<optimized out>, header=header@entry=1, prefix=prefix@entry=0x7f60ef232e40 <__func__.4> "_Py_CheckRecursiveCall", msg=msg@entry=0x7f607c1df440 "Unrecoverable stack overflow (used -1244241 kB) while calling a Python object", status=status@entry=-1)
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Python/pylifecycle.c:3301
        runtime = <optimized out>
        tstate = <optimized out>
        interp = <optimized out>
        tss_tstate = <optimized out>
        has_tstate_and_gil = <optimized out>
        reentrant = 1
#6  0x00007f60eef1b31a in _Py_FatalErrorFunc
    (func=func@entry=0x7f60ef232e40 <__func__.4> "_Py_CheckRecursiveCall", msg=msg@entry=0x7f607c1df440 "Unrecoverable stack overflow (used -1244241 kB) while calling a Python object")
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Python/pylifecycle.c:3387
#7  0x00007f60eee235bc in _Py_CheckRecursiveCall (tstate=0x7f60ef3c64e8 <_PyRuntime+315624>, where=<optimized out>)
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Python/ceval.c:491
        kbytes_used = <optimized out>
        buffer = "Unrecoverable stack overflow (used -1244241 kB) while calling a Python object\000\000"
        _tstate = 0x7f60ef3c64e8 <_PyRuntime+315624>
        here_addr = 140052375925936
#8  0x00007f60eee3511e in _Py_EnterRecursiveCallTstate
    (tstate=<optimized out>, where=0x7f60ef16b918 " while calling a Python object")
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Include/internal/pycore_ceval.h:216
#9  method_enter_call (tstate=<optimized out>, func=0x7f60dc5f5da0)
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Objects/descrobject.c:300
#10 method_vectorcall_NOARGS (func=<optimized out>, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>)
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Objects/descrobject.c:444
        tstate = <optimized out>
        nargs = <optimized out>
        meth = <optimized out>
        result = <optimized out>
#11 0x00007f60eefed330 in _PyObject_VectorcallTstate
    (tstate=0x7f60ef3c64e8 <_PyRuntime+315624>, callable=0x7f60dc5f5da0, args=0x7f607c1df560, nargsf=<optimized out>, kwnames=0x0)
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Include/internal/pycore_call.h:169
        func = <optimized out>
        res = <optimized out>
        nargs = <optimized out>
#12 PyObject_VectorcallMethod (name=<optimized out>, args=0x7f607c1df560, nargsf=<optimized out>, kwnames=0x0)
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Objects/call.c:856
        tstate = 0x7f60ef3c64e8 <_PyRuntime+315624>
        callable = 0x7f60dc5f5da0
        unbound = <optimized out>
        result = <optimized out>
#13 0x00007f60ef0835c2 in PyObject_CallMethodNoArgs (self=<optimized out>, name=<optimized out>)
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Include/cpython/abstract.h:65
#14 _PyFile_Flush (file=<optimized out>) at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Objects/fileobject.c:542
        tmp = <optimized out>
#15 0x00007f60ef0a204f in flush_std_files () at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Python/pylifecycle.c:1820
        file = 0x7f60dc517060
        status = <optimized out>
#16 0x00007f60eef1b2aa in fatal_error
    (fd=2, header=header@entry=1, prefix=prefix@entry=0x7f60ef232e40 <__func__.4> "_Py_CheckRecursiveCall", msg=msg@entry=0x7f607c1df630 "Unrecoverable stack overflow (used -1244241 kB) while calling a Python object", status=status@entry=-1)
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Python/pylifecycle.c:3364
        runtime = <optimized out>
        tstate = <optimized out>
        interp = 0x7f60ef38f668 <_PyRuntime+90728>
        tss_tstate = 0x7f60ef3c64e8 <_PyRuntime+315624>
        has_tstate_and_gil = 1
        reentrant = 1
#17 0x00007f60eef1b31a in _Py_FatalErrorFunc
    (func=func@entry=0x7f60ef232e40 <__func__.4> "_Py_CheckRecursiveCall", msg=msg@entry=0x7f607c1df630 "Unrecoverable stack overflow (used -1244241 kB) while calling a Python object")
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Python/pylifecycle.c:3387
#18 0x00007f60eee235bc in _Py_CheckRecursiveCall (tstate=0x7f60ef3c64e8 <_PyRuntime+315624>, where=<optimized out>)
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Python/ceval.c:491
        kbytes_used = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--/rh
        buffer = "Unrecoverable stack overflow (used -1244241 kB) while calling a Python object\000\000"
        _tstate = 0x7f60ef3c64e8 <_PyRuntime+315624>
        here_addr = 140052375926432
#19 0x00007f60eee2781a in _Py_EnterRecursiveCallTstate
    (tstate=<optimized out>, where=0x7f60ef16b918 " while calling a Python object")
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Include/internal/pycore_ceval.h:216
#20 cfunction_enter_call (tstate=<optimized out>, func=0x7f60dc5a7ab0)
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Objects/methodobject.c:428
#21 cfunction_vectorcall_FASTCALL_KEYWORDS (func=0x7f60dc5a7ab0, args=0x7f607c1df720, nargsf=5, kwnames=0x0)
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Objects/methodobject.c:461
        tstate = <optimized out>
        nargs = 5
        meth = <optimized out>
        result = <optimized out>
#22 0x00007f60eef537c4 in _PyObject_VectorcallTstate
    (tstate=0x7f60ef3c64e8 <_PyRuntime+315624>, callable=0x7f60dc5a7ab0, args=0x7f607c1df720, nargsf=1, kwnames=0x0)
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Include/internal/pycore_call.h:169
        func = <optimized out>
        res = <optimized out>
        nargs = <optimized out>
#23 _PyObject_CallFunctionVa
    (tstate=0x7f60ef3c64e8 <_PyRuntime+315624>, callable=0x7f60dc5a7ab0, format=<optimized out>, va=0x7f607c1df700)
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Objects/call.c:552
        small_stack = {0x7f60dc4bb130, 0x7f60dc4a0cc0, 0x7f60dc4a0cc0, 0x7f60dc5e1a80, 0x7f60ef37cb78 <_PyRuntime+14200>}
        stack = 0x7f607c1df720
        nargs = 5
        i = <optimized out>
        result = <optimized out>
#24 PyObject_CallFunction (callable=0x7f60dc5a7ab0, format=<optimized out>)
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Objects/call.c:574
        va = {{gp_offset = 16, fp_offset = 48, overflow_arg_area = 0x7f607c1df840, reg_save_area = 0x7f607c1df750}}
        result = <optimized out>
        tstate = 0x7f60ef3c64e8 <_PyRuntime+315624>
#25 0x00007f60eefea0ef in PyImport_Import (module_name=0x7f60dc4bb130)
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Python/import.c:4000
        tstate = 0x7f60ef3c64e8 <_PyRuntime+315624>
        globals = 0x7f60dc4a0cc0
        import = <optimized out>
        builtins = 0x7f60dc5a7a10
        r = 0x0
        from_list = 0x7f60dc5e1a80
        err = <optimized out>
#26 0x00007f60ef082460 in PyImport_ImportModule (name=<optimized out>)
    at /usr/src/debug/python3.14-3.14.0~rc3-1.fc43.x86_64/Python/import.c:3423
        pname = 0x7f60dc4bb130
        result = <optimized out>
#27 0x00007f60f18e1c2c in pybind11::module_::import (name=0x7f60f1c2b2ca "__main__")
    at /usr/src/debug/kicad-9.0.5-1.fc43.x86_64/thirdparty/pybind11/include/pybind11/pybind11.h:1201
        obj = <optimized out>
#28 pybind11::globals () at /usr/src/debug/kicad-9.0.5-1.fc43.x86_64/thirdparty/pybind11/include/pybind11/pybind11.h:1290
        p = 0x0
#29 SCRIPTING::IsModuleLoaded (aModule="_pcbnew") at /usr/src/debug/kicad-9.0.5-1.fc43.x86_64/scripting/python_scripting.cpp:216
        lock = {gil_state = PyGILState_LOCKED}
        locals = {<pybind11::object> = {<pybind11::handle> = {<pybind11::detail::object_api<pybind11::handle>> = {<pybind11::detail::pyobject_tag> = {<No data fields>}, <No data fields>}, m_ptr = 0x7f60dc4391c0}, <No data fields>}, <No data fields>}
#30 0x00007f5f8a2fbbf8 in SCRIPTING_TOOL::Init (this=0x5603d9d261f0)
    at /usr/src/debug/kicad-9.0.5-1.fc43.x86_64/pcbnew/python/scripting/pcb_scripting_tool.cpp:65
        lock = {gil_state = PyGILState_UNLOCKED}
        pymodule = "_pcbnew"
#31 0x00007f5f8a8a81df in TOOL_MANAGER::InitTools (this=0x5603d97aca20)
    at /usr/src/debug/kicad-9.0.5-1.fc43.x86_64/common/tool/tool_manager.cpp:654
        tool = 0x5603d9d261f0
        state = 0x5603d9d27c50
        it = 0x5603d9d284e0
#32 0x00007f5f89db6c33 in PCB_EDIT_FRAME::setupTools (this=this@entry=0x5603d96f6be0)
    at /usr/src/debug/kicad-9.0.5-1.fc43.x86_64/pcbnew/pcb_edit_frame.cpp:767
#33 0x00007f5f89db7cb1 in PCB_EDIT_FRAME::PCB_EDIT_FRAME
    (this=0x5603d96f6be0, aKiway=<optimized out>, aParent=<optimized out>, this=<optimized out>, aKiway=<optimized out>, aParent=<optimized out>) at /usr/src/debug/kicad-9.0.5-1.fc43.x86_64/pcbnew/pcb_edit_frame.cpp:272
        canvas = <optimized out>
        auiFlags = <optimized out>
        icon = {<wxBitmap> = {<wxBitmapBase> = {<wxGDIObject> = {<wxObject> = {_vptr.wxObject = 0x5603d7250170 <vtable for wxIcon+16>, static ms_classInfo = {m_className = 0x7f60f27dea08 L"wxObject", m_objectSize = 16, m_objectConstructor = 0x0, m_baseInfo1 = 0x0, m_baseInfo2 = 0x0, static sm_first = 0x7f5ff01e3100 <wxFileSystemInternetModule::ms_classInfo>, m_next = 0x7f60f284a8c0 <wxProcessEvent::ms_classInfo>, static sm_classTable = 0x5603d7dea980}, m_refData = 0x5603d9c74d00}, static ms_classInfo = {m_className = 0x7f60f3042548 L"wxGDIObject", m_objectSize = 16, m_objectConstructor = 0x0, m_baseInfo1 = 0x7f60f284ab00 <wxObject::ms_classInfo>, m_baseInfo2 = 0x0, static sm_first = 0x7f5ff01e3100 <wxFileSystemInternetModule::ms_classInfo>, m_next = 0x7f60f31e9800 <wxGraphicsRenderer::ms_classInfo>}}, <wxBitmapHelpers> = {<No data fields>}, static sm_handlers = {<wxObjectList> = {<wxListBase> = {_vptr.wxListBase = 0x7f60f282d480 <vtable for wxList+16>, m_count = 0, m_destroy = false, m_nodeFirst = 0x0, m_nodeLast = 0x0, m_keyType = wxKEY_NONE}, <No data fields>}, <No data fields>}, static ms_classInfo = {m_className = 0x7f60f3038c90 L"wxBitmapBase", m_objectSize = 16, m_objectConstructor = 0x0, m_baseInfo1 = 0x7f60f31e81e0 <wxGDIObject::ms_classInfo>, m_baseInfo2 = 0x0, static sm_first = 0x7f5ff01e3100 <wxFileSystemInternetModule::ms_classInfo>, m_next = 0x7f60f31e81a0 <wxBitmapButton::ms_classInfo>}}, static ms_classInfo = {m_className = 0x7f60f3037a90 L"wxBitmap", m_objectSize = 16, m_objectConstructor = 0x7f60f2aadea0 <wxBitmap::wxCreateObject()>, m_baseInfo1 = 0x7f60f31e81e0 <wxGDIObject::ms_classInfo>, m_baseInfo2 = 0x0, static sm_first = 0x7f5ff01e3100 <wxFileSystemInternetModule::ms_classInfo>, m_next = 0x7f60f31df4a0 <wxMask::ms_classInfo>}}, static ms_classInfo = {m_className = 0x7f60f3059230 L"wxIcon", m_objectSize = 16, m_objectConstructor = 0x7f60f2ab1aa0 <wxIcon::wxCreateObject()>, m_baseInfo1 = 0x7f60f31df460 <wxBitmap::ms_classInfo>, m_baseInfo2 = 0x0, static sm_first = 0x7f5ff01e3100 <wxFileSystemInternetModule::ms_classInfo>, m_next = 0x7f60f31df520 <wxPalette::ms_classInfo>}}
        icon_bundle = {<wxGDIObject> = {<wxObject> = {_vptr.wxObject = 0x7f60f31476a8 <vtable for wxIconBundle+16>, static ms_classInfo = {m_className = 0x7f60f27dea08 L"wxObject", m_objectSize = 16, m_objectConstructor = 0x0, m_baseInfo1 = 0x0, m_baseInfo2 = 0x0, static sm_first = 0x7f5ff01e3100 <wxFileSystemInternetModule::ms_classInfo>, m_next = 0x7f60f284a8c0 <wxProcessEvent::ms_classInfo>, static sm_classTable = 0x5603d7dea980}, m_refData = 0x5603d9c8b900}, static ms_classInfo = {m_className = 0x7f60f3042548 L"wxGDIObject", m_objectSize = 16, m_objectConstructor = 0x0, m_baseInfo1 = 0x7f60f284ab00 <wxObject::ms_classInfo>, m_baseInfo2 = 0x0, static sm_first = 0x7f5ff01e3100 <wxFileSystemInternetModule::ms_classInfo>, m_next = 0x7f60f31e9800 <wxGraphicsRenderer::ms_classInfo>}}, static ms_classInfo = {m_className = 0x7f60f3053e98 L"wxIconBundle", m_objectSize = 16, m_objectConstructor = 0x7f60f2c22cc0 <wxIconBundle::wxCreateObject()>, m_baseInfo1 = 0x7f60f31e81e0 <wxGDIObject::ms_classInfo>, m_baseInfo2 = 0x0, static sm_first = 0x7f5ff01e3100 <wxFileSystemInternetModule::ms_classInfo>, m_next = 0x7f60f31e9ce0 <wxANIHandler::ms_classInfo>}}
        aui_cfg = {appearance_panel_tab = <optimized out>, appearance_expand_layer_display = <optimized out>, appearance_expand_net_display = <optimized out>, right_panel_width = <optimized out>, properties_panel_width = <optimized out>, net_inspector_width = <optimized out>, properties_splitter = <optimized out>, search_panel_height = <optimized out>, search_panel_width = <optimized out>, search_panel_dock_direction = <optimized out>, show_layer_manager = <optimized out>, show_properties = <optimized out>, show_search = <optimized out>, show_net_inspector = <optimized out>}
        strK2S = {static npos = 18446744073709551615, m_impl = L"", m_convertedToChar = {m_str = 0x0, m_len = 0}}
        appK2S = {m_volume = {static npos = 18446744073709551615, m_impl = L"\000\000\000\000\001\000\000\000\000", m_convertedToChar = {m_str = 0x0, m_len = 0}}, m_dirs = {m_compareFunction = 0x0, m_nSize = 3608, m_nCount = 140054321179328, m_pItems = 0x0, m_autoSort = 192}, m_name = {static npos = 18446744073709551615, m_impl = <error reading variable: Cannot create a lazy string with address 0x0, and a non-zero length.>, m_convertedToChar = {m_str = 0x7f60f0102ac0 <main_arena> "", m_len = 3616}}, m_ext = {static npos = 18446744073709551615, m_impl = <error: Cannot access memory at address 0x580>, m_convertedToChar = {m_str = 0x0, m_len = 94574494665408}}, m_relative = false, m_hasExt = false, m_dontFollowLinks = false}
        canvas = <optimized out>
        icon = {<wxBitmap> = {<wxBitmapBase> = {<wxGDIObject> = {<wxObject> = {_vptr.wxObject = <optimized out>, static ms_classInfo = {m_className = 0x7f60f27dea08 L"wxObject", m_objectSize = 16, m_objectConstructor = 0x0, m_baseInfo1 = 0x0, m_baseInfo2 = 0x0, static sm_first = 0x7f5ff01e3100 <wxFileSystemInternetModule::ms_classInfo>, m_next = 0x7f60f284a8c0 <wxProcessEvent::ms_classInfo>, static sm_classTable = 0x5603d7dea980}, m_refData = <optimized out>}, static ms_classInfo = {m_className = 0x7f60f3042548 L"wxGDIObject", m_objectSize = 16, m_objectConstructor = 0x0, m_baseInfo1 = 0x7f60f284ab00 <wxObject::ms_classInfo>, m_baseInfo2 = 0x0, static sm_first = 0x7f5ff01e3100 <wxFileSystemInternetModule::ms_classInfo>, m_next = 0x7f60f31e9800 <wxGraphicsRenderer::ms_classInfo>}}, <wxBitmapHelpers> = {<No data fields>}, static sm_handlers = {<wxObjectList> = {<wxListBase> = {_vptr.wxListBase = 0x7f60f282d480 <vtable for wxList+16>, m_count = 0, m_destroy = false, m_nodeFirst = 0x0, m_nodeLast = 0x0, m_keyType = wxKEY_NONE}, <No data fields>}, <No data fields>}, static ms_classInfo = {m_className = 0x7f60f3038c90 L"wxBitmapBase", m_objectSize = 16, m_objectConstructor = 0x0, m_baseInfo1 = 0x7f60f31e81e0 <wxGDIObject::ms_classInfo>, m_baseInfo2 = 0x0, static sm_first = 0x7f5ff01e3100 <wxFileSystemInternetModule::ms_classInfo>, m_next = 0x7f60f31e81a0 <wxBitmapButton::ms_classInfo>}}, static ms_classInfo = {m_className = 0x7f60f3037a90 L"wxBitmap", m_objectSize = 16, m_objectConstructor = 0x7f60f2aadea0 <wxBitmap::wxCreateObject()>, m_baseInfo1 = 0x7f60f31e81e0 <wxGDIObject::ms_classInfo>, m_baseInfo2 = 0x0, static sm_first = 0x7f5ff01e3100 <wxFileSystemInternetModule::ms_classInfo>, m_next = 0x7f60f31df4a0 <wxMask::ms_classInfo>}}, static ms_classInfo = {m_className = 0x7f60f3059230 L"wxIcon", m_objectSize = 16, m_objectConstructor = 0x7f60f2ab1aa0 <wxIcon::wxCreateObject()>, m_baseInfo1 = 0x7f60f31df460 <wxBitmap::ms_classInfo>, m_baseInfo2 = 0x0, static sm_first = 0x7f5ff01e3100 <wxFileSystemInternetModule::ms_classInfo>, m_next = 0x7f60f31df520 <wxPalette::ms_classInfo>}}
        icon_bundle = {<wxGDIObject> = {<wxObject> = {_vptr.wxObject = <optimized out>, static ms_classInfo = {m_className = 0x7f60f27dea08 L"wxObject", m_objectSize = 16, m_objectConstructor = 0x0, m_baseInfo1 = 0x0, m_baseInfo2 = 0x0, static sm_first = 0x7f5ff01e3100 <wxFileSystemInternetModule::ms_classInfo>, m_next = 0x7f60f284a8c0 <wxProcessEvent::ms_classInfo>, static sm_classTable = 0x5603d7dea980}, m_refData = <optimized out>}, static ms_classInfo = {m_className = 0x7f60f3042548 L"wxGDIObject", m_objectSize = 16, m_objectConstructor = 0x0, m_baseInfo1 = 0x7f60f284ab00 <wxObject::ms_classInfo>, m_baseInfo2 = 0x0, static sm_first = 0x7f5ff01e3100 <wxFileSystemInternetModule::ms_classInfo>, m_next = 0x7f60f31e9800 <wxGraphicsRenderer::ms_classInfo>}}, static ms_classInfo = {m_className = 0x7f60f3053e98 L"wxIconBundle", m_objectSize = 16, m_objectConstructor = 0x7f60f2c22cc0 <wxIconBundle::wxCreateObject()>, m_baseInfo1 = 0x7f60f31e81e0 <wxGDIObject::ms_classInfo>, m_baseInfo2 = 0x0, static sm_first = 0x7f5ff01e3100 <wxFileSystemInternetModule::ms_classInfo>, m_next = 0x7f60f31e9ce0 <wxANIHandler::ms_classInfo>}}
        aui_cfg = {appearance_panel_tab = <optimized out>, appearance_expand_layer_display = <optimized out>, appearance_expand_net_display = <optimized out>, right_panel_width = <optimized out>, properties_panel_width = <optimized out>, net_inspector_width = <optimized out>, properties_splitter = <optimized out>, search_panel_height = <optimized out>, search_panel_width = <optimized out>, search_panel_dock_direction = <optimized out>, show_layer_manager = <optimized out>, show_properties = <optimized out>, show_search = <optimized out>, show_net_inspector = <optimized out>}
        auiFlags = <optimized out>
        strK2S = Python Exception <class 'gdb.error'>: value has been optimized out
{static npos = 18446744073709551615, m_impl = , m_convertedToChar = {m_str = <optimized out>, m_len = <optimized out>}}
        appK2S = Python Exception <class 'gdb.error'>: value has been optimized out
Python Exception <class 'gdb.error'>: value has been optimized out
Python Exception <class 'gdb.error'>: value has been optimized out
{m_volume = {static npos = 18446744073709551615, m_impl = , m_convertedToChar = {m_str = <optimized out>, m_len = <optimized out>}}, m_dirs = {m_compareFunction = <optimized out>, m_nSize = <optimized out>, m_nCount = <optimized out>, m_pItems = <optimized out>, m_autoSort = <optimized out>}, m_name = {static npos = 18446744073709551615, m_impl = , m_convertedToChar = {m_str = <optimized out>, m_len = <optimized out>}}, m_ext = {static npos = 18446744073709551615, m_impl = , m_convertedToChar = {m_str = <optimized out>, m_len = <optimized out>}}, m_relative = <optimized out>, m_hasExt = <optimized out>, m_dontFollowLinks = <optimized out>}
        layersManager = <optimized out>
        propertiesPanel = <optimized out>
        searchPane = <optimized out>
        searchPane = <optimized out>
#34 0x00007f5f89912880 in PCB::IFACE::CreateKiWindow
    (this=0x7f5f8b4d6a80 <_ZN3PCBL6kifaceE.lto_priv.0>, aParent=0x0, aClassId=<optimized out>, aKiway=0x5603d728cac0 <Kiway>, aCtlBits=<optimized out>) at /usr/src/debug/kicad-9.0.5-1.fc43.x86_64/pcbnew/pcbnew.cpp:99
        frame = <optimized out>
#35 0x00007f60f18817b8 in KIWAY::Player
    (this=0x5603d728cac0 <Kiway>, aFrameType=<optimized out>, doCreate=<optimized out>, aParent=0x0)
    at /usr/src/debug/kicad-9.0.5-1.fc43.x86_64/common/kiway.cpp:447
        face_type = <optimized out>
        kiface = <optimized out>
        frame = <optimized out>
#36 0x00005603d6f34fe0 in KICAD_MANAGER_CONTROL::ShowPlayer (this=0x5603d8c59c10, aEvent=<optimized out>)
    at /usr/src/debug/kicad-9.0.5-1.fc43.x86_64/kicad/tools/kicad_manager_control.cpp:803
        playerType = FRAME_PCB_EDITOR
--Type <RET> for more, q to quit, c to continue without paging--
        player = <optimized out>
        guard = {m_flag = 0x5603d8c59c58}
#37 0x00005603d6fbb28c in std::function<int(TOOL_EVENT const&)>::operator() (this=0x5603d987d118, __args#0=<optimized out>)
    at /usr/include/c++/15/bits/std_function.h:593
#38 COROUTINE<int, TOOL_EVENT const&>::callerStub (aData=<optimized out>)
    at /usr/src/debug/kicad-9.0.5-1.fc43.x86_64/include/tool/coroutine.h:513
        args = <optimized out>
        cor = 0x5603d987d100
#39 0x00005603d71082a1 in make_fcontext ()
#40 0x0000000000000000 in ??? ()

Comment 6 Steven A. Falco 2025-10-03 20:22:08 UTC
The upstream devs tell me that their long-term plan is to remove python from the KiCad builds in favor of an IPC interface.  Fedora is not the only platform with python-related issues.

There should be development builds containing that removal available prior to the Fedora 44 branch point in Feb 2026.  So my plan is to incorporate a dev build into rawhide as soon as it becomes available.  Until then, folks should use a flatpak - there is one provided by the KiCad team, and I think there is one provided within Fedora itself, although I haven't tried that one.

Comment 7 Steven A. Falco 2025-10-03 20:45:23 UTC
Cross-linking https://bugzilla.redhat.com/show_bug.cgi?id=2401327

Comment 8 Dr. David Alan Gilbert 2025-10-03 20:52:34 UTC
(In reply to Steven A. Falco from comment #6)
> The upstream devs tell me that their long-term plan is to remove python from
> the KiCad builds in favor of an IPC interface.  Fedora is not the only
> platform with python-related issues.
> 
> There should be development builds containing that removal available prior
> to the Fedora 44 branch point in Feb 2026.  So my plan is to incorporate a
> dev build into rawhide as soon as it becomes available.  Until then, folks
> should use a flatpak - there is one provided by the KiCad team, and I think
> there is one provided within Fedora itself, although I haven't tried that
> one.

That's rather grim.

Is there any link to upstream discussion about what the problem is?

To me it looks like a confusion between threads; I don't think it's really
a recursion issue - it looks like it's comparing the current thread
pointer with something else entirely - maybe a thread pointer from a different thread?

Comment 9 Steven A. Falco 2025-10-03 21:00:21 UTC
Indeed it is grim.

The discussions so far have been on an internal Zulip thread.

Probably the best thing is to open a bug report on the KiCad site, where the discussion can be public.  I'll open a bug report there, and provide a link here.  Give me a few minutes...

Comment 10 Steven A. Falco 2025-10-03 21:10:23 UTC
Here is a link to the issue I just filed with the upstream KiCad devs.  Folks will likely need a gitlab account to comment on the bug:

https://gitlab.com/kicad/code/kicad/-/issues/21890

Comment 11 Dr. David Alan Gilbert 2025-10-03 21:49:09 UTC
(In reply to Steven A. Falco from comment #10)
> Here is a link to the issue I just filed with the upstream KiCad devs. 
> Folks will likely need a gitlab account to comment on the bug:
> 
> https://gitlab.com/kicad/code/kicad/-/issues/21890

Thanks I added a comment.

Comment 12 Dr. David Alan Gilbert 2025-10-04 17:26:41 UTC
Steven: Is there a way to raise a flag to the Fedora Python maintainers, just so they can see if this is happening on any other packages as well?

Comment 13 Steven A. Falco 2025-10-05 13:50:43 UTC
I had asked about this on the Fedora development mailing list but I'll again.

Comment 15 Steven A. Falco 2025-10-06 14:49:07 UTC
Victor Stinner (from the Python team) has determined what is going wrong.

Details here: https://github.com/python/cpython/issues/139653

Comment 16 Dr. David Alan Gilbert 2025-10-06 15:06:52 UTC
Thanks for raising that; I've thrown an idea into the ring.

Comment 17 Anton Guda 2025-11-04 21:05:12 UTC
kicad-9.0.6-1.fc44 - the same result ;-(

Comment 18 Steven A. Falco 2025-11-04 22:08:39 UTC
Yes. Not a surprise. I ran the builds mostly to keep everything consistent.

This will take a while to sort out, either by python providing a solution or by removing python from KiCad.

There are other projects with the same problem so hopefully that will raise the importance of the problem.

I suppose one could set up an F42 VM and run KiCad in that environment as another potential workaround.

Comment 19 Bas Mevissen 2025-11-04 22:38:30 UTC
Using the flatpak as advised multiple times here is probably the best solution for the time being.

Comment 20 Fedora Update System 2025-12-07 09:14:59 UTC
FEDORA-2025-e235793f10 (python3.14-3.14.2-1.fc43 and python3-docs-3.14.2-1.fc43) has been submitted as an update to Fedora 43.
https://bodhi.fedoraproject.org/updates/FEDORA-2025-e235793f10

Comment 21 Anton Guda 2025-12-07 10:14:41 UTC
Works for me with python3-3.14.2-1.fc44

Comment 22 Steven A. Falco 2025-12-07 16:11:32 UTC
I agree.  This is now working with the 3.14.2-1 build of python.

Comment 23 Fedora Update System 2025-12-10 01:33:40 UTC
FEDORA-2025-e235793f10 (python3.14-3.14.2-1.fc43 and python3-docs-3.14.2-1.fc43) has been pushed to the Fedora 43 stable repository.
If problem still persists, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.