Crashes every time. Some debugging I've done: Thread 1 "ktp-text-ui" received signal SIGSEGV, Segmentation fault. 0x00007ffff7da4dbc in KCModuleProxy::d_func (this=0x0) at /var/tmp/portage/kde-frameworks/kcmutils-5.43.0/work/kcmutils-5.43.0/src/kcmoduleproxy.h:68 68 Q_DECLARE_PRIVATE(KCModuleProxy) (gdb) list 63 * @author Matthias Kretz <kretz@kde.org> 64 * 65 */ 66 class KCMUTILS_EXPORT KCModuleProxy : public QWidget 67 { 68 Q_DECLARE_PRIVATE(KCModuleProxy) 69 Q_OBJECT 70 public: 71 /** 72 * Constructs a KCModuleProxy from a KCModuleInfo class. (gdb) up #1 0x00007ffff7da31d1 in KCModuleProxy::realModule (this=0x0) at /var/tmp/portage/kde-frameworks/kcmutils-5.43.0/work/kcmutils-5.43.0/src/kcmoduleproxy.cpp:66 66 Q_D(const KCModuleProxy); (gdb) up #2 0x000055555557862d in ChatWindow::showSettingsDialog (this=0x5555559510d0) at /var/tmp/portage/kde-apps/ktp-text-ui-17.12.2/work/ktp-text-ui-17.12.2/app/chat-window.cpp:766 766 connect(proxy->realModule(), SIGNAL(reloadTheme()), (gdb) p proxy $1 = (KCModuleProxy *) 0x0 (gdb) list 761 762 KPageWidgetItem *configPage = dialog->addModule(QLatin1String("kcm_ktp_chat_appearance")); 763 KCModuleProxy *proxy = qobject_cast<KCModuleProxy*>(configPage->widget()); 764 Q_ASSERT(proxy); 765 766 connect(proxy->realModule(), SIGNAL(reloadTheme()), 767 this, SLOT(onReloadTheme())); 768 769 dialog->addModule(QLatin1String("kcm_ktp_chat_behavior")); 770 dialog->addModule(QLatin1String("kcm_ktp_chat_messages")); (gdb) p configPage $2 = (KPageWidgetItem *) 0x555557dfb300 (gdb) p this $3 = (ChatWindow * const) 0x5555559510d0 Stack trace: (gdb) bt #0 0x00007ffff7da4dbc in KCModuleProxy::d_func (this=0x0) at /var/tmp/portage/kde-frameworks/kcmutils-5.43.0/work/kcmutils-5.43.0/src/kcmoduleproxy.h:68 #1 0x00007ffff7da31d1 in KCModuleProxy::realModule (this=0x0) at /var/tmp/portage/kde-frameworks/kcmutils-5.43.0/work/kcmutils-5.43.0/src/kcmoduleproxy.cpp:66 #2 0x000055555557862d in ChatWindow::showSettingsDialog (this=0x5555559510d0) at /var/tmp/portage/kde-apps/ktp-text-ui-17.12.2/work/ktp-text-ui-17.12.2/app/chat-window.cpp:766 #3 0x0000555555589f62 in ChatWindow::qt_static_metacall (_o=0x5555559510d0, _c=QMetaObject::InvokeMetaMethod, _id=47, _a=0x7fffffffc270) at /var/tmp/portage/kde-apps/ktp-text-ui-17.12.2/work/ktp-text-ui-17.12.2_build/app/ktp-text-ui_autogen/EWIEGA46WW/moc_chat-window.cpp:321 #4 0x00007ffff64e7173 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib64/libQt5Core.so.5 #5 0x00007ffff6d25762 in QAction::triggered(bool) () from /usr/lib64/libQt5Widgets.so.5 #6 0x00007ffff6d27e4c in QAction::activate(QAction::ActionEvent) () from /usr/lib64/libQt5Widgets.so.5 #7 0x00007ffff6ea4a7c in ?? () from /usr/lib64/libQt5Widgets.so.5 #8 0x00007ffff6eabf2b in ?? () from /usr/lib64/libQt5Widgets.so.5 #9 0x00007ffff6eacd3f in QMenu::mouseReleaseEvent(QMouseEvent*) () from /usr/lib64/libQt5Widgets.so.5 #10 0x00007ffff6d6a6f8 in QWidget::event(QEvent*) () from /usr/lib64/libQt5Widgets.so.5 #11 0x00007ffff6eaf08b in QMenu::event(QEvent*) () from /usr/lib64/libQt5Widgets.so.5 #12 0x00007ffff6d2be1c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5 #13 0x00007ffff6d33c2f in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5 #14 0x00007ffff64be517 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib64/libQt5Core.so.5 #15 0x00007ffff6d32c02 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib64/libQt5Widgets.so.5 #16 0x00007ffff6d85415 in ?? () from /usr/lib64/libQt5Widgets.so.5 #17 0x00007ffff6d87cea in ?? () from /usr/lib64/libQt5Widgets.so.5 #18 0x00007ffff6d2be1c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5 #19 0x00007ffff6d336d4 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5 #20 0x00007ffff64be517 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib64/libQt5Core.so.5 #21 0x00007ffff680fa7b in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib64/libQt5Gui.so.5 #22 0x00007ffff6811665 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib64/libQt5Gui.so.5 #23 0x00007ffff67eb08b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Gui.so.5 #24 0x00007fffe6a44430 in ?? () from /usr/lib64/libQt5XcbQpa.so.5 #25 0x00007ffff3b54ab7 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0 #26 0x00007ffff3b54ce8 in ?? () from /usr/lib64/libglib-2.0.so.0 #27 0x00007ffff3b54d7c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0 #28 0x00007ffff650fc3f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5 #29 0x00007ffff64bd29a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5 #30 0x00007ffff64c5a14 in QCoreApplication::exec() () from /usr/lib64/libQt5Core.so.5 #31 0x0000555555567044 in main (argc=1, argv=0x7fffffffd1e8) at /var/tmp/portage/kde-apps/ktp-text-ui-17.12.2/work/ktp-text-ui-17.12.2/app/main.cpp:72
Confirm this bug on Arch Linux, on fresh built from git master. Crashes every time.
Created attachment 111119 [details] 0001-app-Fix-crash-while-displaying-Settings-dialog.patch The crash is due to the fact that the KPageWidgetItem does no longer hold a reference to KCModuleProxy instance. The KCModuleProxy instance is rather wrapped in a QScrollArea instance. Tentative patch attached.
@CapSel: Could you please check whether the attached patch fixes the bug for you? If it does, I'll post it to Phabricator for review, commit it and close the bug eventually. Thanks.
Your patch works. Thank You!
(In reply to David Strobach from comment #3) Thanks for the patch! Could you, please, look into ktp-log-viewer too? It crashes in the very same way.
Thanks for the fix, David. Was the patch already added to Phabricator?
> Thanks for the fix, David. Was the patch already added to Phabricator? Hi Christoph, no, unfortunately not yet. I somehow can't digest the idea, that the change my patch does is the right(TM) way to integrate KCMs after the recent KCM refactoring. I would like to first check other KDE projects to see how they made their way through the KCM refactoring before submitting the fix. I expect to be able to move ahead during this week.
Fixed by commits d55f70722af76015dd79b278618fdbf9972c29ff 0862d220c9042baa25200b0e178cc9ce44525a13
I use KdeNEON and it is frustrating that this package is not updated, to avoid this error, along with the text-ui viewer, I run the following script. apt install pidgin-sipe kde-telepathy # (you need activate "dep-src" en /etc/apt/source.list) mkdir ktp-text-ui-fix cd ktp-text-ui-fix apt install build-essential devscripts apt source kde-telepathy-text-ui apt build-dep kde-telepathy-text-ui cd ktp-text-ui-* patch -p1 << "EOF" --- a/lib/adium-theme-view.cpp +++ b/lib/adium-theme-view.cpp @@ -68,6 +68,8 @@ bool AdiumThemePage::acceptNavigationRequest(const QUrl &url, QWebEnginePage::Na Q_EMIT nextConversation(); } else if (url.fragment() == QLatin1String("x-prevConversation")) { Q_EMIT prevConversation(); + } else if (url.scheme() == QLatin1String("data")) { + return true; } else { QDesktopServices::openUrl(url); } EOF patch -p1 << "EOF" --- a/app/chat-window.cpp +++ b/app/chat-window.cpp @@ -53,6 +53,7 @@ #include <QLabel> #include <QLineEdit> #include <QMouseEvent> +#include <QScrollArea> #include <TelepathyQt/Account> #include <TelepathyQt/ContactCapabilities> @@ -760,7 +761,9 @@ void ChatWindow::showSettingsDialog() KSettings::Dialog *dialog = new KSettings::Dialog(this); KPageWidgetItem *configPage = dialog->addModule(QLatin1String("kcm_ktp_chat_appearance")); - KCModuleProxy *proxy = qobject_cast<KCModuleProxy*>(configPage->widget()); + QScrollArea *moduleScroll = qobject_cast<QScrollArea*>(configPage->widget()); + Q_ASSERT(moduleScroll); + KCModuleProxy *proxy = qobject_cast<KCModuleProxy*>(moduleScroll->widget()); Q_ASSERT(proxy); connect(proxy->realModule(), SIGNAL(reloadTheme()), @@ -770,7 +773,9 @@ void ChatWindow::showSettingsDialog() dialog->addModule(QLatin1String("kcm_ktp_chat_messages")); KPageWidgetItem *otrConfigPage = dialog->addModule(QLatin1String("kcm_ktp_chat_otr")); - proxy = qobject_cast<KCModuleProxy*>(otrConfigPage->widget()); + moduleScroll = qobject_cast<QScrollArea*>(otrConfigPage->widget()); + Q_ASSERT(moduleScroll); + proxy = qobject_cast<KCModuleProxy*>(moduleScroll->widget()); Q_ASSERT(proxy); QVariant value; value.setValue(m_proxyService); EOF debchange -i # (you need change the first line with: ktp-text-ui (4:17.12.3-0ubuntu2) bionic; urgency=medium) dpkg-source --commit debuild -us -uc -i -I cd .. dpkg -i kde-telepathy-text-ui_*.deb