Simulator crashes with create_circbyline in ngpsice
Description
It looks like we made ngspice crash. I am not sure if this is because KiCad does not behave or this is a bug in ngspice. The circuit I am trying to simulate is probably wrong in some aspect, but I don't like the crash.
Backtrace:
(gdb) bt
#0 0x00007ff25e5cdd98 in create_circbyline () at /usr/lib/libngspice.so.0
#1 0x00007ff25e5a8773 in ngSpice_Circ () at /usr/lib/libngspice.so.0
#2 0x00007ff25f3f2952 in NGSPICE::LoadNetlist(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () at /tmp/kicad/usr/local/bin/_eeschema.kiface
#3 0x00007ff25f4002f7 in SIM_PLOT_FRAME::StartSimulation(wxString const&) () at /tmp/kicad/usr/local/bin/_eeschema.kiface
#4 0x00007ff25f4007eb in SIM_PLOT_FRAME::onSimulate(wxCommandEvent&) () at /tmp/kicad/usr/local/bin/_eeschema.kiface
#5 0x00007ff268e534c1 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () at /usr/lib/libwx_baseu-3.0.so.0
#6 0x00007ff268e5384b in wxEvtHandler::SearchDynamicEventTable(wxEvent&) () at /usr/lib/libwx_baseu-3.0.so.0
#7 0x00007ff268e538e1 in wxEvtHandler::TryHereOnly(wxEvent&) () at /usr/lib/libwx_baseu-3.0.so.0
#8 0x00007ff268e53994 in wxEvtHandler::ProcessEventLocally(wxEvent&) () at /usr/lib/libwx_baseu-3.0.so.0
#9 0x00007ff268e53a32 in wxEvtHandler::ProcessEvent(wxEvent&) () at /usr/lib/libwx_baseu-3.0.so.0
#10 0x00007ff25f57f20a in EDA_BASE_FRAME::ProcessEvent(wxEvent&) () at /tmp/kicad/usr/local/bin/_eeschema.kiface
#11 0x00007ff2693b9f4a in wxWindowBase::TryAfter(wxEvent&) () at /usr/lib/libwx_gtk3u_core-3.0.so.0
#12 0x00007ff268e537c7 in wxEvtHandler::SafelyProcessEvent(wxEvent&) () at /usr/lib/libwx_baseu-3.0.so.0
#13 0x00007ff26936c28f in wxMenuBase::SendEvent(int, int) () at /usr/lib/libwx_gtk3u_core-3.0.so.0
#14 0x00007ff2692572e0 in () at /usr/lib/libwx_gtk3u_core-3.0.so.0
#15 0x00007ff267374052 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#16 0x00007ff26739c685 in () at /usr/lib/libgobject-2.0.so.0
#17 0x00007ff26739041d in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#18 0x00007ff267390980 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#19 0x00007ff2677ed995 in gtk_widget_activate () at /usr/lib/libgtk-3.so.0
#20 0x00007ff2676b0d6d in gtk_menu_shell_activate_item () at /usr/lib/libgtk-3.so.0
#21 0x00007ff2676b1044 in () at /usr/lib/libgtk-3.so.0
#22 0x00007ff26753c249 in () at /usr/lib/libgtk-3.so.0
#23 0x00007ff26739080a in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#24 0x00007ff267390980 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#25 0x00007ff2678014a5 in () at /usr/lib/libgtk-3.so.0
#26 0x00007ff26769ac55 in () at /usr/lib/libgtk-3.so.0
#27 0x00007ff26769bfad in gtk_main_do_event () at /usr/lib/libgtk-3.so.0
#28 0x00007ff2673f5793 in () at /usr/lib/libgdk-3.so.0
#29 0x00007ff267445f94 in () at /usr/lib/libgdk-3.so.0
#30 0x00007ff2670d543c in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#31 0x00007ff2671231d9 in () at /usr/lib/libglib-2.0.so.0
#32 0x00007ff2670d3c03 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#33 0x00007ff26769908f in gtk_main () at /usr/lib/libgtk-3.so.0
#34 0x00007ff2691d6856 in wxGUIEventLoop::DoRun() () at /usr/lib/libwx_gtk3u_core-3.0.so.0
#35 0x00007ff268d09e0e in wxEventLoopBase::Run() () at /usr/lib/libwx_baseu-3.0.so.0
#36 0x00007ff268ccef27 in wxAppConsoleBase::MainLoop() () at /usr/lib/libwx_baseu-3.0.so.0
#37 0x0000563e44ed9049 in ()
#38 0x00007ff268d5d7f9 in wxEntry(int&, wchar_t**) () at /usr/lib/libwx_baseu-3.0.so.0
#39 0x0000563e44ed2188 in ()
#40 0x00007ff267c84002 in __libc_start_main () at /usr/lib/libc.so.6
#41 0x0000563e44ed3bbe in _start ()
Steps to reproduce
- Open test.kicad_sch (from https://gitlab.com/kicad/code/kicad/uploads/1a214c1d1bc66342af82daac5921c01a/test.zip)
- Open the simulator
- Run the simulation (some error messages are printed in the log)
- Run the simulation again and observe the crash
The issue can be reproduced always. It also happened on a build from last week.
The ngspice is unmodified from the arch repo.
The same crash happens with 5.1.6, although you need to fix the model in the currently attached test.sch. Use the test.kicad_sch instead if on nightly.
KiCad Version
Application: Eeschema
Version: (5.99.0-2352-gba9041609), release build
Libraries:
wxWidgets 3.0.5
Platform: Linux 5.7.7-arch1-1 x86_64, 64 bit, Little endian, wxGTK
wxWidgets: 3.0.5 (wchar_t,wx containers,compatible with 2.8) GTK+ 3.24
Boost: 1.72.0
OCC: 7.4.0
Curl: 7.71.1
ngspice: 32
Compiler: GCC 10.1.0 with C++ ABI 1014
Build settings:
KICAD_SCRIPTING=ON
KICAD_SCRIPTING_MODULES=ON
KICAD_SCRIPTING_PYTHON3=ON
KICAD_SCRIPTING_WXPYTHON=ON
KICAD_SCRIPTING_WXPYTHON_PHOENIX=ON
KICAD_SCRIPTING_ACTION_MENU=ON
BUILD_GITHUB_PLUGIN=ON
KICAD_USE_OCC=ON
KICAD_SPICE=ON