Update: This was due to using an invalid (misspelled) source for a widget. Hence get a null pointer on IKAROS.cc::627. But is it possible to avoid a crash here and give an error message instead?
A somewhat hard to determine bug where ikaros crashes due to content of xml file (ie adding a slider or a table to webui), but difficult to see pattern. Unfortunately dont have a good example xml file right now to reproduce. But error appeared when running pupil model which I guess contains a lot of text. Perhaps a buffer overflow problem?
Update: This was due to using an invalid (misspelled) source for a widget. Hence get a null pointer on IKAROS.cc::627. But is it possible to avoid a crash here and give an error message instead?
A somewhat hard to determine bug where ikaros crashes due to content of xml file (ie adding a slider or a table to webui), but difficult to see pattern. Unfortunately dont have a good example xml file right now to reproduce. But error appeared when running pupil model which I guess contains a lot of text. Perhaps a buffer overflow problem?
Stack trace from debug:
std::_Hashtable<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::pair<std:: cxx11::basic_string<char, std::char_traits, std::allocator > const, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std:: cxx11::basic_string<char, std::char_traits, std::allocator > const, std::cxx11::basic_string<char, std::char_traits, std::allocator > > >, std:: detail::_Select1st, std::equal_to<std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::hash<std:: cxx11::basic_string<char, std::char_traits, std::allocator > >, std::detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::detail::_Prime_rehash_policy, std::detail::_Hashtable_traits<true, false, true> >::_M_begin(const std::_Hashtable<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::pair<std:: cxx11::basic_string<char, std::char_traits, std::allocator > const, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std:: cxx11::basic_string<char, std::char_traits, std::allocator > const, std::cxx11::basic_string<char, std::char_traits, std::allocator > > >, std:: detail::_Select1st, std::equal_to<std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::hash<std:: cxx11::basic_string<char, std::char_traits, std::allocator > >, std::__detail::_Mod_range_hashing, std:: detail::_Default_ranged_hash, std::detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> > * const this) (/usr/include/c++/7/bits/hashtable.h:377)
std::_Hashtable<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator > const, std:: cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator > const, std:: cxx11::basic_string<char, std::char_traits, std::allocator > > >, std::detail::_Select1st, std::equal_to<std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::hash<std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std:: detail::_Mod_range_hashing, std::detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::detail::_Hashtable_traits<true, false, true> >::begin(std::_Hashtable<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::pair<std:: cxx11::basic_string<char, std::char_traits, std::allocator > const, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std:: cxx11::basic_string<char, std::char_traits, std::allocator > const, std::cxx11::basic_string<char, std::char_traits, std::allocator > > >, std:: detail::_Select1st, std::equal_to<std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::hash<std:: cxx11::basic_string<char, std::char_traits, std::allocator > >, std::detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::detail::_Prime_rehash_policy, std::detail::_Hashtable_traits<true, false, true> > * const this) (/usr/include/c++/7/bits/hashtable.h:492)
std::unordered_map<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std:: cxx11::basic_string<char, std::char_traits, std::allocator >, std::hash<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::equal_to<std:: cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator > const, std:: cxx11::basic_string<char, std::char_traits, std::allocator > > > >::begin(std::unordered_map<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std:: cxx11::basic_string<char, std::char_traits, std::allocator >, std::hash<std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::equal_to<std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std:: cxx11::basic_string<char, std::char_traits, std::allocator > const, std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > > const this) (/usr/include/c++/7/bits/unordered_map.h:324)
Element::JSONAttributeStringabi:cxx11(Element const this, int d) (/home/trondarild/ikaros/ikaros/Source/Kernel/IKAROS.cc:253)
OutputElement::JSONStringabi:cxx11(OutputElement const this, int d) (/home/trondarild/ikaros/ikaros/Source/Kernel/IKAROS.cc:343)
GroupElement::JSONStringabi:cxx11(GroupElement const this, int d) (/home/trondarild/ikaros/ikaros/Source/Kernel/IKAROS.cc:627)
GroupElement::JSONStringabi:cxx11(GroupElement const this, int d) (/home/trondarild/ikaros/ikaros/Source/Kernel/IKAROS.cc:678)
Kernel::JSONString[abi:cxx11]()(Kernel const this) (/home/trondarild/ikaros/ikaros/Source/Kernel/IKAROS.cc:2120)
Kernel::HandleControlChange(Kernel const this, char uri, char args) (/home/trondarild/ikaros/ikaros/Source/Kernel/IKAROS.cc:3979)
Kernel::HandleHTTPRequest(Kernel const this) (/home/trondarild/ikaros/ikaros/Source/Kernel/IKAROS.cc:4044)
Kernel::HandleHTTPThread(Kernel const this) (/home/trondarild/ikaros/ikaros/Source/Kernel/IKAROS.cc:4212)
Kernel::StartHTTPThread(Kernel k) (/home/trondarild/ikaros/ikaros/Source/Kernel/IKAROS.cc:4222)
std:: invoke_impl<void, void ()(Kernel), Kernel>(void (&&)(Kernel ) f) (/usr/include/c++/7/bits/invoke.h:60)
std::invoke<void ()(Kernel), Kernel>(void (&&)(Kernel ) __fn) (/usr/include/c++/7/bits/invoke.h:96)
std::thread::_Invoker<std::tuple<void ()(Kernel), Kernel> >::_M_invoke<0ul, 1ul>(std::thread::_Invoker<std::tuple<void ()(Kernel), Kernel> > const this) (/usr/include/c++/7/thread:234)
std::thread::_Invoker<std::tuple<void ()(Kernel), Kernel> >::operator()(std::thread::_Invoker<std::tuple<void ()(Kernel), Kernel> > const this) (/usr/include/c++/7/thread:243)
std::thread::_State_impl<std::thread::_Invoker<std::tuple<void ()(Kernel), Kernel> > >::_M_run(std::thread::_State_impl<std::thread::_Invoker<std::tuple<void ()(Kernel), Kernel> > > const this) (/usr/include/c++/7/thread:186)
libstdc++.so.6![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libpthread.so.0!start_thread(void * arg) (/build/glibc-OTsEL5/glibc-2.27/nptl/pthread_create.c:463)
libc.so.6!clone() (/build/glibc-OTsEL5/glibc-2.27/sysdeps/unix/sysv/linux/x86_64/clone.S:95)