see bt: Thread 1 "kmymoney" received signal SIGABRT, Aborted. 0x00007fffef81d0d0 in raise () from /lib64/libc.so.6 (gdb) bt #0 0x00007fffef81d0d0 in raise () at /lib64/libc.so.6 #1 0x00007fffef81e6b1 in abort () at /lib64/libc.so.6 #2 0x00007ffff052bb61 in () at /usr/lib64/libQt5Core.so.5 #3 0x00007ffff61000fb in KMyMoneySettings::self() () at /usr/src/debug/kmymoney-4.99.40/build/kmymoney/kmymoneysettings.cpp:22 #4 0x00007ffff60b0986 in KMyMoneySettings::expertMode() () at /usr/src/debug/kmymoney-4.99.40/build/kmymoney/kmymoneysettings.h:596 #5 0x00007ffff60b0986 in MyMoneyReport::MyMoneyReport(MyMoneyReport::ERowType, unsigned int, eMyMoney::TransactionFilter::Date, MyMoneyReport::EDetailLevel, QString const&, QString const&) (this=0x7fffffffc640, rt=MyMoneyReport::eAccount, ct=4111, dl=eMyMoney::TransactionFilter::Date::YearToDate, ss=<optimized out>, name=..., comment=...) at /usr/src/debug/kmymoney-4.99.40/kmymoney/mymoney/mymoneyreport.cpp:200 #6 0x0000555555689586 in KReportsViewPrivate::defaultReports(QList<ReportGroup>&) (this=this@entry=0x5555560c9470, groups=...) at /usr/src/debug/kmymoney-4.99.40/kmymoney/views/kreportsview_p.h:932 #7 0x000055555568c295 in KReportsViewPrivate::loadView() (this=this@entry=0x5555560c9470) at /usr/src/debug/kmymoney-4.99.40/kmymoney/views/kreportsview_p.h:595 #8 0x0000555555684f20 in KReportsView::refresh() (this=<optimized out>) at /usr/src/debug/kmymoney-4.99.40/kmymoney/views/kreportsview.cpp:119 #9 0x0000555555685c5b in KReportsView::showEvent(QShowEvent*) (this=0x555555fbff90, event=0x7fffffffcae0) at /usr/src/debug/kmymoney-4.99.40/kmymoney/views/kreportsview.cpp:135 #10 0x00007ffff1854088 in QWidget::event(QEvent*) () at /usr/lib64/libQt5Widgets.so.5 #11 0x00007ffff1817e6c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5 #12 0x00007ffff181f164 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5 #13 0x00007ffff0715c98 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5 #14 0x00007ffff1850d08 in QWidgetPrivate::show_helper() () at /usr/lib64/libQt5Widgets.so.5 #15 0x00007ffff1850bfe in QWidgetPrivate::showChildren(bool) () at /usr/lib64/libQt5Widgets.so.5 #16 0x00007ffff1850cdf in QWidgetPrivate::show_helper() () at /usr/lib64/libQt5Widgets.so.5 #17 0x00007ffff1853c6b in QWidget::setVisible(bool) () at /usr/lib64/libQt5Widgets.so.5 #18 0x00007ffff18393c7 in QStackedLayout::setCurrentIndex(int) () at /usr/lib64/libQt5Widgets.so.5 #19 0x00007ffff19d335e in QTabWidgetPrivate::_q_showTab(int) () at /usr/lib64/libQt5Widgets.so.5 #20 0x00007ffff19d513f in QTabWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) () at /usr/lib64/libQt5Widgets.so.5 #21 0x00007ffff0743dba in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib64/libQt5Core.so.5 #22 0x00007ffff19b64ce in QTabBar::currentChanged(int) () at /usr/lib64/libQt5Widgets.so.5 #23 0x00007ffff19ba7f7 in QTabBar::setCurrentIndex(int) () at /usr/lib64/libQt5Widgets.so.5 #24 0x00007ffff19bcca5 in QTabBar::mousePressEvent(QMouseEvent*) () at /usr/lib64/libQt5Widgets.so.5 #25 0x00007ffff1854a99 in QWidget::event(QEvent*) () at /usr/lib64/libQt5Widgets.so.5 #26 0x00007ffff19bb2dc in QTabBar::event(QEvent*) () at /usr/lib64/libQt5Widgets.so.5 #27 0x00007ffff1817e6c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5 #28 0x00007ffff181f6bf in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5 #29 0x00007ffff0715c98 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5 #30 0x00007ffff181e70f in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () at /usr/lib64/libQt5Widgets.so.5 #31 0x00007ffff186e3db in QWidgetWindow::handleMouseEvent(QMouseEvent*) () at /usr/lib64/libQt5Widgets.so.5 #32 0x00007ffff1870801 in QWidgetWindow::event(QEvent*) () at /usr/lib64/libQt5Widgets.so.5 #33 0x00007ffff1817e6c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5 #34 0x00007ffff181f164 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5 #35 0x00007ffff0715c98 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5 #36 0x00007ffff101a64c in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /usr/lib64/libQt5Gui.so.5 #37 0x00007ffff101bf95 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /usr/lib64/libQt5Gui.so.5 #38 0x00007ffff0ff5e5b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Gui.so.5 #39 0x00007fffdb038f6b in QPAEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5XcbQpa.so.5 #40 0x00007ffff07144aa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #41 0x00007ffff071cfe4 in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5 #42 0x000055555562a2e9 in runKMyMoney(std::unique_ptr<QSplashScreen, std::default_delete<QSplashScreen> >, QUrl const&, bool, QApplication*) (splash=std::unique_ptr<QSplashScreen> containing 0x0, file=..., noFile=<optimized out>, a=<optimized out>) at /usr/src/debug/kmymoney-4.99.40/kmymoney/main.cpp:316 #43 0x0000555555627d85 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kmymoney-4.99.40/kmymoney/main.cpp:235
I can duplicate the behavior by starting the application, opening the ledger and selecting "Account/Edit..." boom. It seems that some part of the code refers to a second (yet uninitialized) KMyMoneySettings object.
As far as my analysis goes this is caused some recent change that causes the kmm_config library to be included in a few shared objects. This causes the duplicates not to be initialized which results in the crash. Nothing we can bypass since this happens in generated code.
Git commit 0f9b4f8b927679339de77d447d98b168363da00b by Łukasz Wojniłowicz. Committed on 07/01/2018 at 16:08. Pushed by wojnilowicz into branch 'master'. Specify the config file before construction time It seems that KMyMoneySettings aren't as shared as I thought. It seems that call to KMyMoneySettings in every translational unit uses different instance. Remaining at old code would require to create instance of config file in every translational unit in which KMyMoneySettings is used and not only in main function. That misses the point, so config filename is hardcoded as before in kcfg file. FIXED-IN:5.0 M +1 -1 kmymoney/kmymoney.kcfg M +0 -3 kmymoney/main.cpp https://commits.kde.org/kmymoney/0f9b4f8b927679339de77d447d98b168363da00b