Eeschema: crashes when adding new symbol in stand alone mode
Adding a new symbol in Eeschema in stand alone mode with the default unnamed file crashes due to an invalid settings pointer when parsing the symbol libraries. This only happens on the first launch after installing a new version build from source (it may also apply to installs but I'm not sure). Note that all subsequent launches of KiCad in the stand alone mode will not crash.
Description
Steps to reproduce
- Build a more recent commit of KiCad from source and use
[sudo ]make install
. - Run Eeschema in the stand alone mode.
- Click the add symbol button on the right toolbar. KiCad crashes here, see backtrace below.
KiCad Version
Application: KiCad Schematic Editor
Version: (5.99.0-12793-ge574594260), debug build
Libraries:
wxWidgets 3.0.5
libcurl/7.74.0 GnuTLS/3.7.2 zlib/1.2.11 brotli/1.0.9 libidn2/2.3.2 libpsl/0.21.0 (+libidn2/2.3.0) libssh2/1.9.0 nghttp2/1.43.0 librtmp/2.3
Platform: Linux 5.14.0-2-amd64 x86_64, 64 bit, Little endian, wxGTK, default, x11
Build Info:
Date: Oct 14 2021 09:13:12
wxWidgets: 3.0.5 (wchar_t,wx containers,compatible with 2.8) GTK+ 3.24
Boost: 1.74.0
OCC: 7.5.1
Curl: 7.74.0
ngspice: 34
Compiler: GCC 10.3.0 with C++ ABI 1014
Build settings:
KICAD_USE_OCC=ON
KICAD_SPICE=ON
KICAD_STDLIB_DEBUG=OFF
KICAD_STDLIB_LIGHT_DEBUG=OFF
KICAD_SANITIZE_ADDRESS=OFF
KICAD_SANITIZE_THREADS=OFF
Click to show/hide backtrace.
0x00007ffff0c14d6d in LIB_PIN::LIB_PIN (this=0x7fffa8008800, aParent=0x0)
at /home/wayne/src/kicad-trunk/eeschema/lib_pin.cpp:108
108 m_length = Mils2iu( settings->m_Defaults.pin_length );
(gdb) bt
#0 0x00007ffff0c14d6d in LIB_PIN::LIB_PIN(LIB_SYMBOL*)
(this=0x7fffa8008800, aParent=0x0)
at /home/wayne/src/kicad-trunk/eeschema/lib_pin.cpp:108
#1 0x00007ffff0cf5868 in std::make_unique<LIB_PIN, decltype(nullptr)>(decltype(nullptr)&&) () at /usr/include/c++/10/bits/unique_ptr.h:962
#2 0x00007ffff0ceb110 in SCH_SEXPR_PARSER::parsePin() (this=0x7fffb5ffa8e0)
at /home/wayne/src/kicad-trunk/eeschema/sch_plugins/kicad/sch_sexpr_parser.cpp:1210
#3 0x00007ffff0ce7088 in SCH_SEXPR_PARSER::ParseDrawItem()
(this=0x7fffb5ffa8e0)
at /home/wayne/src/kicad-trunk/eeschema/sch_plugins/kicad/sch_sexpr_parser.cpp:398
#4 0x00007ffff0ce68a5 in SCH_SEXPR_PARSER::ParseSymbol(std::map<wxString, LIB_SYMBOL*, LibSymbolMapSort, std::allocator<std::pair<wxString const, LIB_SYMBOL*> > >&, int)
(this=0x7fffb5ffa8e0, aSymbolLibMap=std::map with 0 elements, aFileVersion=20201005)
at /home/wayne/src/kicad-trunk/eeschema/sch_plugins/kicad/sch_sexpr_parser.cpp:335
#5 0x00007ffff0ce52ab in SCH_SEXPR_PARSER::ParseLib(std::map<wxString, LIB_SYMBOL*, LibSymbolMapSort, std::allocator<std::pair<wxString const, LIB_SYMBOL*> > >&) (this=0x7fffb5ffa8e0, aSymbolLibMap=std::map with 0 elements)
at /home/wayne/src/kicad-trunk/eeschema/sch_plugins/kicad/sch_sexpr_parser.cpp:135
#6 0x00007ffff0d029ff in SCH_SEXPR_PLUGIN_CACHE::Load() (this=0x7fffa8001450)
at /home/wayne/src/kicad-trunk/eeschema/sch_plugins/kicad/sch_sexpr_plugin.cpp:1537
#7 0x00007ffff0d06fb9 in SCH_SEXPR_PLUGIN::cacheLib(wxString const&, PROPERTIES const*) (this=0x7fffa8000b80, aLibraryFileName=..., aProperties=0x0)
at /home/wayne/src/kicad-trunk/eeschema/sch_plugins/kicad/sch_sexpr_plugin.cpp:2134
#8 0x00007ffff0d0745c in SCH_SEXPR_PLUGIN::EnumerateSymbolLib(std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> >&, wxString const&, PROPERTIES const*)
(this=0x7fffa8000b80, aSymbolList=std::vector of length 0, capacity 0, aLibraryPath=..., aProperties=0x0)
at /home/wayne/src/kicad-trunk/eeschema/sch_plugins/kicad/sch_sexpr_plugin.cpp:2185
#9 0x00007ffff0d6baa8 in SYMBOL_LIB_TABLE::LoadSymbolLib(std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> >&, wxString const&, bool) (this=
0x555558c096f0, aSymbolList=std::vector of length 0, capacity 0, aNickname=..., aPowerSymbolsOnly=false)
at /home/wayne/src/kicad-trunk/eeschema/symbol_lib_table.cpp:333
--Type <RET> for more, q to quit, c to continue without paging--
#10 0x00007ffff0d634bb in SYMBOL_ASYNC_LOADER::worker() (this=0x55555984e010)
at /home/wayne/src/kicad-trunk/eeschema/symbol_async_loader.cpp:121
#11 0x00007ffff0d6a07c in std::__invoke_impl<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > >, std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*>(std::__invoke_memfun_deref, std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*&&)(), SYMBOL_ASYNC_LOADER*&&)
(__f=@0x555559959980: (std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(SYMBOL_ASYNC_LOADER * const)) 0x7ffff0d6338a <SYMBOL_ASYNC_LOADER::worker()>, __t=@0x555559959978: 0x55555984e010) at /usr/include/c++/10/bits/invoke.h:73
#12 0x00007ffff0d69fb0 in std::__invoke<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*>(std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*&&)(), SYMBOL_ASYNC_LOADER*&&)
(__fn=@0x555559959980: (std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(SYMBOL_ASYNC_LOADER * const)) 0x7ffff0d6338a <SYMBOL_ASYNC_LOADER::worker()>)
at /usr/include/c++/10/bits/invoke.h:96
#13 0x00007ffff0d69ebb in std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) (this=0x555559959978)
at /usr/include/c++/10/thread:264
#14 0x00007ffff0d69d81 in std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >::operator()()
(this=0x555559959978) at /usr/include/c++/10/thread:271
#15 0x00007ffff0d69bae in std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, --Type <RET> for more, q to quit, c to continue without paging--
std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >, std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >::operator()() const (this=0x7fffb5ffb7d0) at /usr/include/c++/10/future:1374
#16 0x00007ffff0d69a84 in std::__invoke_impl<std::unique_ptr<std::__future_base::_Result<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >, std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >&>(std::__invoke_other, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >, std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >&) (__f=...)
at /usr/include/c++/10/bits/invoke.h:60
#17 0x00007ffff0d697bc in std::__invoke_r<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allo--Type <RET> for more, q to quit, c to continue without paging--
cator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >, std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >&>(std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >, std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >&) (__fn=...) at /usr/include/c++/10/bits/invoke.h:142
#18 0x00007ffff0d6958c in std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >, std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > > >::_M_invoke(std::_Any_data const&)
(__functor=...) at /usr/include/c++/10/bits/std_function.h:292
#19 0x00007ffff0b6f1bf in std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const
(this=0x7fffb5ffb7d0) at /usr/include/c++/10/bits/std_function.h:622
#20 0x00007ffff0b6d9fb in std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)
(this=0x555559959940, __f=0x7fffb5ffb7d0, __did_set=0x7fffb5ffb747)
at /usr/include/c++/10/future:572
#21 0x00007ffff0b7b6d1 in std::__invoke_impl<void, void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::__invoke_memfun_deref, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*--Type <RET> for more, q to quit, c to continue without paging--
, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) (__f=
@0x7fffb5ffb760: (void (std::__future_base::_State_baseV2::*)(std::__future_base::_State_baseV2 * const, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()> *, bool *)) 0x7ffff0b6d9d4 <std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>, __t=@0x7fffb5ffb758: 0x555559959940)
at /usr/include/c++/10/bits/invoke.h:73
#22 0x00007ffff0b7402d in std::__invoke<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) (__fn=
@0x7fffb5ffb760: (void (std::__future_base::_State_baseV2::*)(std::__future_base::_State_baseV2 * const, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()> *, bool *)) 0x7ffff0b6d9d4 <std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>) at /usr/include/c++/10/bits/invoke.h:95
#23 0x00007ffff0b6efa2 in std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::{lambda()#1}::operator()() const (this=0x7fffb5ffb6d0)
at /usr/include/c++/10/mutex:717
#24 0x00007ffff0b6efd5 in std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Re--Type <RET> for more, q to quit, c to continue without paging--
sult_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::{lambda()#2}::operator()() const (this=0x0) at /usr/include/c++/10/mutex:722
#25 0x00007ffff0b6efe6 in std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::{lambda()#2}::_FUN() () at /usr/include/c++/10/mutex:722
#26 0x00007ffff5c32a7f in __pthread_once_slow
(once_control=0x555559959958, init_routine=0x7ffff5e74960 <__once_proxy>)
at pthread_once.c:116
#27 0x00007ffff0b5461c in __gthread_once(__gthread_once_t*, void (*)())
(__once=0x555559959958, __func=0x7ffff5e74960 <__once_proxy>)
at /usr/include/x86_64-linux-gnu/c++/10/bits/gthr-default.h:700
#28 0x00007ffff0b6f090 in std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)
(__once=..., __f=
@0x7fffb5ffb760: (void (std::__future_base::_State_baseV2::*)(std::__future_base::_State_baseV2 * const, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()> *, bool *)) 0x7ffff0b6d9d4 <std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>) at /usr/include/c++/10/mutex:729
#29 0x00007ffff0b6d7d4 in std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>, bool)
(this=0x555559959940, __res=..., __ignore_failure=false)
at /usr/include/c++/10/future:412
#30 0x00007ffff0d68f35 in std::__future_base::_Async_state_impl<std::thread::_In--Type <RET> for more, q to quit, c to continue without paging--
voker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >, std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >::_Async_state_impl(std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >&&)::{lambda()#1}::operator()() const (this=0x555559961c58)
at /usr/include/c++/10/future:1706
#31 0x00007ffff0d6a810 in std::__invoke_impl<void, std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >, std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >::_Async_state_impl(std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >&&)::{lambda()#1}>(std::__invoke_other, std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >, std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >::_Async_state_impl(std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >&&)::{lambda()#1}&&) (__f=...) at /usr/include/c++/10/bits/invoke.h:60
#32 0x00007ffff0d6a7c5 in std::__invoke<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >, std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >::_Async_state_impl(std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::--Type <RET> for more, q to quit, c to continue without paging--
vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >&&)::{lambda()#1}>(std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >, std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >::_Async_state_impl(std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >&&)::{lambda()#1}&&) (__fn=...)
at /usr/include/c++/10/bits/invoke.h:95
#33 0x00007ffff0d6a716 in std::thread::_Invoker<std::tuple<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >, std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >::_Async_state_impl(std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >&&)::{lambda()#1}> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (this=0x555559961c58)
at /usr/include/c++/10/thread:264
#34 0x00007ffff0d6a66a in std::thread::_Invoker<std::tuple<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >, std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >::_Async_state_impl(std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >&&)::{lambda()#1}> >::operator()() (this=0x555559961c58) at /usr/include/c++/10/thread:271
#35 0x00007ffff0d6a196 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator
LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >, std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > >::_Async_state_impl(std::thread::_Invoker<std::tuple<std::vector<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > >, std::allocator<std::pair<wxString, std::vector<LIB_SYMBOL*, std::allocator<LIB_SYMBOL*> > > > > (SYMBOL_ASYNC_LOADER::*)(), SYMBOL_ASYNC_LOADER*> >&&)::{lambda()#1}> > >::_M_run() (this=0x555559961c50) at /usr/include/c++/10/thread:215
#36 0x00007ffff5e758c4 in () at /lib/x86_64-linux-gnu/libstdc++.so.6
#37 0x00007ffff5c2aeae in start_thread (arg=0x7fffb5ffc640)
at pthread_create.c:463
#38 0x00007ffff5b5aa5f in clone ()
at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95