Segfault in libedit on footprint Save As...
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
KiCad |
Fix Released
|
High
|
Unassigned |
Bug Description
I hit a segfault in libmodedit when doing "Save As..." on a footprint to a different library.
I can't reproduce (at least not yet), but I do have a backtrace. I am unclear on exactly what steps are needed to get into this state, but perhaps the backtrace is meaningful to someone(?).
At frame #7, aNickName is the library name, which is the same as s in frame #1, but looks like something gets deleted, as #1's this pointer looks decidedly dodgy.
----
#0 0x00007fdeee6471e1 in wxString:
#1 0x00007fdee4ac4471 in wxString:
at /usr/include/
#2 0x00007fdee4be9851 in operator<(wxString const&, wxString const&) (s1=..., s2=...)
at /usr/include/
#3 0x00007fdee4beedc3 in std::less<
(this=
#4 0x00007fdee4dd7d84 in std::_Rb_
(this=
at /usr/include/
#5 0x00007fdee4dd69d6 in std::_Rb_
(this=
#6 0x00007fdee4dd5ca3 in std::map<wxString, int, std::less<
#7 0x00007fdee54e813c in LIB_TABLE:
at /home/john/
#8 0x00007fdee54e7fd2 in LIB_TABLE:
(this=
#9 0x00007fdee4d23554 in FP_TREE_
at /home/john/
#10 0x00007fdee4d29f61 in FOOTPRINT_
at /home/john/
#11 0x00007fdee4d1858b in FOOTPRINT_
(this=
#12 0x00007fdeee6f889e in wxEvtHandler:
#13 0x00007fdeee6f89a4 in wxEventHashTabl
#14 0x00007fdeee6f8cde in wxEvtHandler:
#15 0x00007fdee54b69f8 in EDA_BASE_
at /home/john/
#16 0x00007fdeee6f8b63 in wxEvtHandler:
#17 0x00007fdeee6f8e02 in wxEvtHandler:
#18 0x00007fdeeec4ee6b in wxWindowBase:
#19 0x00007fdeeec4ee6b in wxWindowBase:
#20 0x00007fdeee6f8ba7 in wxEvtHandler:
#21 0x00007fdeeec05569 in wxMenuBase:
#22 0x00007fdeeeafe6dc in () at /usr/lib/
#23 0x00007fdeec6d83d5 in g_closure_invoke () at /usr/lib/
#24 0x00007fdeec6c5195 in () at /usr/lib/
#25 0x00007fdeec6c901e in g_signal_
#26 0x00007fdeec6c9a80 in g_signal_emit () at /usr/lib/
#27 0x00007fdeecbfff38 in gtk_widget_activate () at /usr/lib/
#28 0x00007fdeecaf8e71 in gtk_menu_
#29 0x00007fdeecaf9140 in () at /usr/lib/
#30 0x00007fdeecae67cc in () at /usr/lib/
#31 0x00007fdeec6d83d5 in g_closure_invoke () at /usr/lib/
#32 0x00007fdeec6c499f in () at /usr/lib/
#33 0x00007fdeec6c85ed in g_signal_
#34 0x00007fdeec6c9a80 in g_signal_emit () at /usr/lib/
#35 0x00007fdeecc01235 in () at /usr/lib/
#36 0x00007fdeecae4a0e in gtk_propagate_event () at /usr/lib/
#37 0x00007fdeecae4e43 in gtk_main_do_event () at /usr/lib/
#38 0x00007fdeec759d5e in () at /usr/lib/
#39 0x00007fdeec4333cf in g_main_
#40 0x00007fdeec434f89 in () at /usr/lib/
#41 0x00007fdeec434fce in g_main_
#42 0x00007fdeecae4032 in gtk_main_iteration () at /usr/lib/
#43 0x00007fdeeea99c86 in wxWindow:
#44 0x00007fdeeec52774 in wxWindowBase:
#45 0x00007fdee4ba62fb in wxWindowBase:
(this=
#46 0x00007fdee54578da in LIB_TREE:
at /home/john/
#47 0x00007fdeee6f889e in wxEvtHandler:
#48 0x00007fdeee6f8c1b in wxEvtHandler:
#49 0x00007fdeee6f8cb1 in wxEvtHandler:
#50 0x00007fdeee6f8d64 in wxEvtHandler:
#51 0x00007fdeee6f8e02 in wxEvtHandler:
#52 0x00007fdeee6f8ba7 in wxEvtHandler:
#53 0x00007fdeef0867d6 in () at /usr/lib/
#54 0x00007fdeecae67cc in () at /usr/lib/
#55 0x00007fdeec6d83d5 in g_closure_invoke () at /usr/lib/
#56 0x00007fdeec6c5195 in () at /usr/lib/
#57 0x00007fdeec6c85ed in g_signal_
#58 0x00007fdeec6c9a80 in g_signal_emit () at /usr/lib/
#59 0x00007fdeecc01235 in () at /usr/lib/
#60 0x00007fdeecae4a0e in gtk_propagate_event () at /usr/lib/
#61 0x00007fdeecae4e43 in gtk_main_do_event () at /usr/lib/
#62 0x00007fdeec759d5e in () at /usr/lib/
#63 0x00007fdeec4333cf in g_main_
#64 0x00007fdeec434f89 in () at /usr/lib/
#65 0x00007fdeec435f62 in g_main_loop_run () at /usr/lib/
#66 0x00007fdeecae3df3 in gtk_main () at /usr/lib/
#67 0x00007fdeeea7e1b6 in wxGUIEventLoop:
#68 0x00007fdeee5c5bae in wxEventLoopBase
#69 0x00007fdeee58a517 in wxAppConsoleBas
#70 0x0000560c315a876f in APP_SINGLE_
at /home/john/
#71 0x00007fdeee6124c8 in wxEntry(int&, wchar_t**) () at /usr/lib/
#72 0x0000560c315a3e20 in main(int, char**) (argc=1, argv=0x7fff4ae2
at /home/john/
----
Application: pcbnew
Version: (6.0.0-
Libraries:
wxWidgets 3.0.4
libcurl/7.62.0 OpenSSL/1.1.1 zlib/1.2.11 libidn2/2.0.5 libpsl/0.20.2 (+libidn2/2.0.4) libssh2/1.8.0 nghttp2/1.34.0
Platform: Linux 4.18.16-
Build Info:
wxWidgets: 3.0.4 (wchar_t,wx containers,
Boost: 1.68.0
OpenCASCADE Community Edition: 6.9.1
Curl: 7.62.0
Compiler: GCC 8.2.1 with C++ ABI 1013
Build settings:
USE_
USE_
KICAD_
KICAD_
KICAD_
KICAD_
KICAD_
KICAD_
BUILD_
KICAD_
KICAD_
KICAD_SPICE=ON
Changed in kicad: | |
status: | Fix Committed → Fix Released |
Why do we have two copies of LIB_TABLE: :findRow( ) (one const and one not)? Surely the const one is sufficient, or am I missing something?