Summary: | Kleopatra crashing when looking up id on server | ||
---|---|---|---|
Product: | [Applications] kleopatra | Reporter: | Gerard Seibert <gerard.seibert> |
Component: | general | Assignee: | Andre Heinecke <aheinecke> |
Status: | RESOLVED FIXED | ||
Severity: | critical | CC: | gerard.seibert, groot, kdepim-bugs, mutz |
Priority: | NOR | ||
Version: | 3.1.8 | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | FreeBSD | ||
URL: | https://phabricator.kde.org/D26393 | ||
Latest Commit: | https://invent.kde.org/pim/libkleo/commit/44439dfa8454c0a86d194f6a777af003d7195212 | Version Fixed In: | |
Sentry Crash Report: | |||
Attachments: | De- Inline virtual dtor of Keylistmodelinterface and export it |
Description
Gerard Seibert
2019-12-14 12:29:02 UTC
I rebuild kleopatra with debug symbols. This is the output when run under 'gdb' when it crashes. GNU gdb (GDB) 8.3.1 [GDB v8.3.1 for FreeBSD] Copyright (C) 2019 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-portbld-freebsd11.3". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from kleopatra... run(gdb) run Starting program: /usr/local/bin/kleopatra [New LWP 100796 of process 85700] [New LWP 100797 of process 85700] [Detaching after fork from child process 85701] [Detaching after fork from child process 85702] [Detaching after fork from child process 85703] [Detaching after fork from child process 85705] [Detaching after fork from child process 85707] [Detaching after fork from child process 85709] [Detaching after fork from child process 85711] [Detaching after fork from child process 85713] [Detaching after fork from child process 85714] [Detaching after fork from child process 85716] [Detaching after fork from child process 85719] [Detaching after fork from child process 85722] [Detaching after fork from child process 85725] [Detaching after fork from child process 85728] [Detaching after fork from child process 85731] [New LWP 100799 of process 85700] [New LWP 100801 of process 85700] [Detaching after fork from child process 85733] [LWP 100801 of process 85700 exited] [New LWP 100802 of process 85700] [New LWP 100803 of process 85700] [Detaching after fork from child process 85735] [Detaching after fork from child process 85737] [LWP 100803 of process 85700 exited] [Detaching after fork from child process 85739] [LWP 100802 of process 85700 exited] qt.xkb.compose: failed to create compose table ASSERT: "model" in file /usr/ports/security/kleopatra/work/kleopatra-19.12.0/src/dialogs/lookupcertificatesdialog.cpp, line 103 Thread 1 received signal SIGABRT, Aborted. 0x0000000807b379ba in thr_kill () from /lib/libc.so.7 (gdb) bt full #0 0x0000000807b379ba in thr_kill () from /lib/libc.so.7 No symbol table info available. #1 0x0000000807b37984 in raise () from /lib/libc.so.7 No symbol table info available. #2 0x0000000807b378f9 in abort () from /lib/libc.so.7 No symbol table info available. #3 0x0000000806aa68c9 in ?? () from /usr/local/lib/qt5/libQt5Core.so.5 No symbol table info available. #4 0x0000000806aa7f2e in QMessageLogger::fatal(char const*, ...) const () from /usr/local/lib/qt5/libQt5Core.so.5 No symbol table info available. #5 0x0000000806aa26ad in qt_assert(char const*, char const*, int) () from /usr/local/lib/qt5/libQt5Core.so.5 No symbol table info available. #6 0x000000000050ec86 in Kleo::Dialogs::LookupCertificatesDialog::Private::selectedCertificates (this=0x81666e280) at /usr/ports/security/kleopatra/work/kleopatra-19.12.0/src/dialogs/lookupcertificatesdialog.cpp:103 view = 0x81ea3c300 model = 0x0 sm = 0x7fffffffcde0 #7 0x000000000050db33 in Kleo::Dialogs::LookupCertificatesDialog::selectedCertificates (this=0x81ec1e1c0) at /usr/ports/security/kleopatra/work/kleopatra-19.12.0/src/dialogs/lookupcertificatesdialog.cpp:202 No locals. #8 0x000000000050de38 in Kleo::Dialogs::LookupCertificatesDialog::Private::enableDisableWidgets (this=0x81666e280) at /usr/ports/security/kleopatra/work/kleopatra-19.12.0/src/dialogs/lookupcertificatesdialog.cpp:250 n = 8 #9 0x000000000050efb5 in Kleo::Dialogs::LookupCertificatesDialog::Private::slotSearchTextChanged (this=0x81666e280) at /usr/ports/security/kleopatra/work/kleopatra-19.12.0/src/dialogs/lookupcertificatesdialog.cpp:71 No locals. #10 0x000000000050e217 in Kleo::Dialogs::LookupCertificatesDialog::qt_static_metacall (_o=0x81ec1e1c0, _c=QMetaObject::InvokeMetaMethod, _id=5, _a=0x7fffffffd090) at src/kleopatra_bin_autogen/include/moc_lookupcertificatesdialog.cpp:118 _t = 0x81ec1e1c0 #11 0x0000000806cbd241 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/local/lib/qt5/libQt5Core.so.5 No symbol table info available. #12 0x0000000805abbe91 in ?? () from /usr/local/lib/qt5/libQt5Widgets.so.5 No symbol table info available. #13 0x0000000806cbd241 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/local/lib/qt5/libQt5Core.so.5 No symbol table info available. #14 0x0000000805abe237 in QWidgetLineControl::finishChange(int, bool, bool) () from /usr/local/lib/qt5/libQt5Widgets.so.5 No symbol table info available. #15 0x0000000805ac2974 in QWidgetLineControl::processKeyEvent(QKeyEvent*) () from /usr/local/lib/qt5/libQt5Widgets.so.5 No symbol table info available. #16 0x0000000805ab92b2 in QLineEdit::keyPressEvent(QKeyEvent*) () from /usr/local/lib/qt5/libQt5Widgets.so.5 No symbol table info available. #17 0x00000008059b59c3 in QWidget::event(QEvent*) () from /usr/local/lib/qt5/libQt5Widgets.so.5 No symbol table info available. #18 0x0000000805ab8650 in QLineEdit::event(QEvent*) () from /usr/local/lib/qt5/libQt5Widgets.so.5 No symbol table info available. #19 0x0000000805979f03 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/local/lib/qt5/libQt5Widgets.so.5 No symbol table info available. #20 0x000000080597b63b in QApplication::notify(QObject*, QEvent*) () from /usr/local/lib/qt5/libQt5Widgets.so.5 No symbol table info available. #21 0x0000000806c8a212 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/local/lib/qt5/libQt5Core.so.5 No symbol table info available. #22 0x00000008059d3d68 in ?? () from /usr/local/lib/qt5/libQt5Widgets.so.5 No symbol table info available. #23 0x0000000805979f03 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/local/lib/qt5/libQt5Widgets.so.5 No symbol table info available. #24 0x000000080597b44c in QApplication::notify(QObject*, QEvent*) () from /usr/local/lib/qt5/libQt5Widgets.so.5 No symbol table info available. #25 0x0000000806c8a212 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/local/lib/qt5/libQt5Core.so.5 No symbol table info available. --Type <RET> for more, q to quit, c to continue without paging-- #26 0x00000008063250b5 in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) () from /usr/local/lib/qt5/libQt5Gui.so.5 No symbol table info available. #27 0x000000080630a23c in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/lib/qt5/libQt5Gui.so.5 No symbol table info available. #28 0x0000000813d214df in ?? () from /usr/local/lib/qt5/libQt5XcbQpa.so.5 No symbol table info available. #29 0x000000080e60f417 in g_main_context_dispatch () from /usr/local/lib/libglib-2.0.so.0 No symbol table info available. #30 0x000000080e60f7a3 in ?? () from /usr/local/lib/libglib-2.0.so.0 No symbol table info available. #31 0x000000080e60f854 in g_main_context_iteration () from /usr/local/lib/libglib-2.0.so.0 No symbol table info available. #32 0x0000000806ce2cb6 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/lib/qt5/libQt5Core.so.5 No symbol table info available. #33 0x0000000806c858be in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/lib/qt5/libQt5Core.so.5 No symbol table info available. #34 0x0000000806c8a97e in QCoreApplication::exec() () from /usr/local/lib/qt5/libQt5Core.so.5 No symbol table info available. #35 0x000000000074f40e in main (argc=1, argv=0x7fffffffe5d8) at /usr/ports/security/kleopatra/work/kleopatra-19.12.0/src/main.cpp:254 app = {<QApplication> = {<QGuiApplication> = {<QCoreApplication> = {<QObject> = {_vptr$QObject = 0xb4bf30 <vtable for KleopatraApplication+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x807138900, data = 0x806e25250, static_metacall = 0x806cc07a0, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x811e47000}, static staticQtMetaObject = { d = {superdata = 0x0, stringdata = 0x80712cfe8, data = 0x806e22460, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = { superdata = 0x807116450 <QObject::staticMetaObject>, stringdata = 0x80712b198, data = 0x806e1f940, static_metacall = 0x806c8f4b0, relatedMetaObjects = 0x0, extradata = 0x0}}, static self = 0x7fffffffe558}, static staticMetaObject = {d = {superdata = 0x807115a38 <QCoreApplication::staticMetaObject>, stringdata = 0x806977298, data = 0x8066aea00, static_metacall = 0x80632b580, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x806966e30 <QGuiApplication::staticMetaObject>, stringdata = 0x806083670, data = 0x805d2c1e0, static_metacall = 0x8059800b0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = { superdata = 0x806051df8 <QApplication::staticMetaObject>, stringdata = 0xb6a280 <qt_meta_stringdata_KleopatraApplication>, data = 0x7be440 <qt_meta_data_KleopatraApplication>, static_metacall = 0x4510a0 <KleopatraApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d = {d = 0x811e44300}} timer = {mds = 17503153} service = {<QObject> = {_vptr$QObject = 0xb4cbe0 <vtable for KUniqueService+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x807138900, data = 0x806e25250, static_metacall = 0x806cc07a0, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x811e3bbd0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x80712cfe8, data = 0x806e22460, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x807116450 <QObject::staticMetaObject>, stringdata = 0xb6ae20 <qt_meta_stringdata_KUniqueService>, data = 0x7bec00 <qt_meta_data_KUniqueService>, static_metacall = 0x453800 <KUniqueService::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = 0x811e692a0} aboutData = {<KAboutData> = {static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x8053ea230, data = 0x8051cf240, static_metacall = 0x805172850, relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x811e70040}, <No data fields>} parser = {d = 0x811ea55e0} migrate = {d = 0x811f26100} gpgmeInitError = {mErr = 0, mMessage = ""} rc = 12039168 server = {<QObject> = {_vptr$QObject = 0xb4c5b0 <vtable for Kleo::UiServer+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x807138900, data = 0x806e25250, static_metacall = 0x806cc07a0, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x811e41970}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x80712cfe8, data = 0x806e22460, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x807116450 <QObject::staticMetaObject>, stringdata = 0xb6aa60 <qt_meta_stringdata_Kleo__UiServer>, data = 0x7be970 <qt_meta_data_Kleo__UiServer>, static_metacall = 0x452860 <Kleo::UiServer::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d = {d = 0x811f27100}} e = @0x800b75800: {_vptr$exception = 0xd550b87a} daemon = false Interestingly enough, when it crashes it pops up a notification window that asks if I want to report the crash. I go through the screens and then it tells me that there is no backtrace information available. The relevant bit of Gerard's stack trace is this: ``` #6 0x000000000050ec86 in Kleo::Dialogs::LookupCertificatesDialog::Private::selectedCertificates (this=0x81666e280) at /usr/ports/security/kleopatra/work/kleopatra-19.12.0/src/dialogs/lookupcertificatesdialog.cpp:103 view = 0x81ea3c300 model = 0x0 sm = 0x7fffffffcde0 ``` which is tripping the assert() on that line (model is null). Since this is a FreeBSD-specific thing, it seems, we'll track it at https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242670 in first instance. There's a fix for this in Phabricator. I can't tell if it's a clang problem or what, but the "double downcast" from QAbstractItemModel to KeyListModelInterface fails; doing it explicitly in two steps works. Created attachment 125893 [details] De- Inline virtual dtor of Keylistmodelinterface and export it The underlying reason is the "Invalid Model" from the debug output. So I followed volkers advice from: https://phabricator.kde.org/D26393 without completely understanding it. Could someone try to compile libkleo and then recompile kleopatra with the attached patch? I don't have a build setup for FreeBSD. For Linux it still works so I'm tempted to just push this but it would be better if someone could test it :-) *** Bug 417389 has been marked as a duplicate of this bug. *** (In reply to Andre Heinecke from comment #4) > Created attachment 125893 [details] > De- Inline virtual dtor of Keylistmodelinterface and export it > > The underlying reason is the "Invalid Model" from the debug output. > > So I followed volkers advice from: https://phabricator.kde.org/D26393 > without completely understanding it. > > Could someone try to compile libkleo and then recompile kleopatra with the > attached patch? > > I don't have a build setup for FreeBSD. For Linux it still works so I'm > tempted to just push this but it would be better if someone could test it :-) Thanks. I appreciate your efforts. @aheineke, your patch resolves the issue for me. I don't know how I missed notifications from when you posted it, though (and Phab doesn't know about this patch either, and .. sigh) A possibly relevant merge request was started @ https://invent.kde.org/pim/libkleo/-/merge_requests/8 I've filed a MR in invent for this patch, since it wasn't being applied from here. Same patch also applied in downstream packaging, https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242670 Git commit 44439dfa8454c0a86d194f6a777af003d7195212 by Ingo Klöcker, on behalf of Adriaan de Groot. Committed on 13/01/2021 at 17:12. Pushed by kloecker into branch 'master'. Avoid RTTI mix-ups by exporting KeyListModelInterface This attempts to fix a crash on FreeBSD. See: D26393 for more info. M +1 -0 src/CMakeLists.txt A +13 -0 src/models/keylistmodelinterface.cpp [License: GPL(v2.0+)] M +4 -2 src/models/keylistmodelinterface.h https://invent.kde.org/pim/libkleo/commit/44439dfa8454c0a86d194f6a777af003d7195212 |