A bit more information on this bug. I ran kstars throught gdb and loaded a custom test catalog. Once it crashed, i issued bt and got this:
terminate called after throwing an instance of 'std::out_of_range'
what(): _Map_base::at
Thread 1 "kstars" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50 ../sysdeps/unix/sysv/linux/raise.c: Aucun fichier ou dossier de ce type.
(gdb) bt
#0 0xb3a28f14 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0xb3a14230 in __GI_abort () at abort.c:79
#2 0xb3c6e8d8 in __gnu_cxx::__verbose_terminate_handler() () at /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
#3 0xb3c6c5b0 in () at /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
#4 0xb3c6c624 in () at /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
#5 0xb3c6c990 in __cxa_rethrow () at /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
#6 0xb3c953b4 in std::__throw_out_of_range(char const*) () at /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
#7 0x00577430 in std::__detail::_Map_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, SkyObject::TYPE>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, SkyObject::TYPE> >, std::__detail::_Select1st, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true>, true>::at(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const (this=this@entry=0xbeffd7b0, __k="default") at /usr/include/c++/8/bits/char_traits.h:312
#8 0x0057a936 in std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, SkyObject::TYPE, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, SkyObject::TYPE> > >::at(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const (__k="default", this=0xbeffd7b0) at /usr/include/c++/8/bits/unordered_map.h:994
#9 0x0057a936 in CatalogCSVImport::parse_type(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, SkyObject::TYPE, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, SkyObject::TYPE> > > const&)Python Exception <class 'IndexError'> list index out of range:
and
(this=<optimized out>, type_map=std::unordered_map with 1 element, type="Galaxy") at ./kstars/dialogs/catalogcsvimport.cpp:412
#10 0x0057a936 in CatalogCSVImport::read_n_objects(unsigned int) (this=0xbeffe4e8, n=n@entry=10) at ./kstars/dialogs/catalogcsvimport.cpp:390
#11 0x0057b366 in CatalogCSVImport::<lambda()>::operator() (__closure=0x2fe5b38) at ./kstars/dialogs/catalogcsvimport.cpp:80
#12 0x0057b366 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, CatalogCSVImport::CatalogCSVImport(QWidget*)::<lambda()> >::call
(arg=<optimized out>, f=...) at /usr/include/arm-linux-gnueabihf/qt5/QtCore/qobjectdefs_impl.h:128
#13 0x0057b366 in QtPrivate::Functor<CatalogCSVImport::CatalogCSVImport(QWidget*)::<lambda()>, 0>::call<QtPrivate::List<>, void> (arg=<optimized out>, f=...)
at /usr/include/arm-linux-gnueabihf/qt5/QtCore/qobjectdefs_impl.h:238
#14 0x0057b366 in QtPrivate::QFunctorSlotObject<CatalogCSVImport::CatalogCSVImport(QWidget*)::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x2fe5b30, r=<optimized out>, a=<optimized out>, ret=0x0)
at /usr/include/arm-linux-gnueabihf/qt5/QtCore/qobjectdefs_impl.h:421
#15 0xb458c380 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5
#16 0xb4e00104 in QAbstractButton::clicked(bool) () at /usr/lib/arm-linux-gnueabihf/libQt5Widgets.so.5
#17 0xb4e00340 in () at /usr/lib/arm-linux-gnueabihf/libQt5Widgets.so.5
So it's an out of range problem.
Looking at kstars/dialogs/catalogcsvimport.cpp, we see on ligne 403:
m_objects.emplace_back(CatalogObject::oid{}, type, ra, dec, mag, name, long_name,
identifier, -1, a, b, pa, flux);
Notice the -1 after the 'identifier' field. I'm no developer but the field after 'identifier' should be 'a' (major axis), so everything after that will be shifted by 1 and might therefore trigger the out of range message.
There are also some 'for' loops in the code that might be the problem.
What do you think?