Bug 363109 - systemsettings crash when selecting touchpad when run in a wayland session
Summary: systemsettings crash when selecting touchpad when run in a wayland session
Status: RESOLVED FIXED
Alias: None
Product: systemsettings
Classification: Applications
Component: kcm_touchpad (show other bugs)
Version: 5.17.5
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords:
: 365738 365790 369355 371014 372137 372363 373794 375315 (view as bug list)
Depends on:
Blocks:
 
Reported: 2016-05-15 21:58 UTC by tones111
Modified: 2020-01-22 21:34 UTC (History)
15 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description tones111 2016-05-15 21:58:59 UTC
From a wayland plasma session the systemsettings5 application crashes due to a null pointer exception when clicking on the "Input Devices" -> Touchpad page.  Looking through the plasma-desktop source (kcms/touchpad/src/touchpadbackend.cpp) there is a comment stating "There will be multiple backends later".  Unfortunately, when running within wayland TouchpadBackend::implementation returns a null pointer which is dereferenced by systemsettings5, causing the seg fault.

Note: the touchpad settings works correctly when running from an X11 session.
Comment 1 Rajeesh K V 2016-05-16 09:44:06 UTC
Can you provide the crash trace?
Comment 2 tones111 2016-05-16 13:46:16 UTC
built from git sources
plasma-desktop: bdf2bf8f0...
systemsettings: fa9dd8f4...

Thread 1 "systemsettings5" received signal SIGSEGV, Segmentation fault.
0x00007fffd15e6b91 in TouchpadConfig::TouchpadConfig (this=0xaba9e0, parent=0xa9b4b0, args=...) at /home/paul/src/plasma-desktop/kcms/touchpad/src/kcm/touchpadconfig.cpp:185
(gdb) bt
#0  0x00007fffd15e6b91 in TouchpadConfig::TouchpadConfig (this=0xaba9e0, parent=0xa9b4b0, args=...) at /home/paul/src/plasma-desktop/kcms/touchpad/src/kcm/touchpadconfig.cpp:185
#1  0x00007fffd15e2acb in KPluginFactory::createInstance<TouchpadConfig, QWidget> (parentWidget=0x0, parent=0xa9b4b0, args=...) at /usr/include/KF5/KCoreAddons/kpluginfactory.h:477
#2  0x00007ffff36278c8 in KPluginFactory::create(char const*, QWidget*, QObject*, QList<QVariant> const&, QString const&) () from /usr/lib/libKF5CoreAddons.so.5
#3  0x00007ffff797d42a in KCModuleLoader::loadModule(KCModuleInfo const&, KCModuleLoader::ErrorReporting, QWidget*, QStringList const&) () from /usr/lib/libKF5KCMUtils.so.5
#4  0x00007ffff798612f in ?? () from /usr/lib/libKF5KCMUtils.so.5
#5  0x00007ffff7986d25 in KCModuleProxy::realModule() const () from /usr/lib/libKF5KCMUtils.so.5
#6  0x00007ffff7987303 in KCModuleProxy::showEvent(QShowEvent*) () from /usr/lib/libKF5KCMUtils.so.5
#7  0x00007ffff4da5298 in QWidget::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
#8  0x00007ffff4d607bc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#9  0x00007ffff4d6595f in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#10 0x00007ffff2f57280 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#11 0x00007ffff4da1fb8 in QWidgetPrivate::show_helper() () from /usr/lib/libQt5Widgets.so.5
#12 0x00007ffff4da1ef7 in QWidgetPrivate::showChildren(bool) () from /usr/lib/libQt5Widgets.so.5
#13 0x00007ffff4da1f8f in QWidgetPrivate::show_helper() () from /usr/lib/libQt5Widgets.so.5
#14 0x00007ffff4da4ce5 in QWidget::setVisible(bool) () from /usr/lib/libQt5Widgets.so.5
#15 0x00007ffff4da1f08 in QWidgetPrivate::showChildren(bool) () from /usr/lib/libQt5Widgets.so.5
#16 0x00007ffff4da1f8f in QWidgetPrivate::show_helper() () from /usr/lib/libQt5Widgets.so.5
#17 0x00007ffff4da4ce5 in QWidget::setVisible(bool) () from /usr/lib/libQt5Widgets.so.5
#18 0x00007ffff4d86205 in QStackedLayout::setCurrentIndex(int) () from /usr/lib/libQt5Widgets.so.5
#19 0x00007ffff4d86414 in QStackedLayout::setCurrentWidget(QWidget*) () from /usr/lib/libQt5Widgets.so.5
#20 0x00007ffff4f012a1 in QStackedWidget::setCurrentWidget(QWidget*) () from /usr/lib/libQt5Widgets.so.5
#21 0x00007ffff5585104 in ?? () from /usr/lib/libKF5WidgetsAddons.so.5
#22 0x00007ffff5585db1 in ?? () from /usr/lib/libKF5WidgetsAddons.so.5
#23 0x00007ffff2f84679 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#24 0x00007ffff2f06c87 in QItemSelectionModel::selectionChanged(QItemSelection const&, QItemSelection const&) () from /usr/lib/libQt5Core.so.5
#25 0x00007ffff2f0b37c in QItemSelectionModel::emitSelectionChanged(QItemSelection const&, QItemSelection const&) () from /usr/lib/libQt5Core.so.5
#26 0x00007ffff2f0ed9c in QItemSelectionModel::select(QItemSelection const&, QFlags<QItemSelectionModel::SelectionFlag>) () from /usr/lib/libQt5Core.so.5
#27 0x00007ffff4fde051 in QListView::setSelection(QRect const&, QFlags<QItemSelectionModel::SelectionFlag>) () from /usr/lib/libQt5Widgets.so.5
#28 0x00007ffff4fc0dd0 in QAbstractItemView::mousePressEvent(QMouseEvent*) () from /usr/lib/libQt5Widgets.so.5
#29 0x00007ffff4da5aff in QWidget::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
#30 0x00007ffff4ea173e in QFrame::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
#31 0x00007ffff4fc7153 in QAbstractItemView::viewportEvent(QEvent*) () from /usr/lib/libQt5Widgets.so.5
#32 0x00007ffff2f56fe1 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#33 0x00007ffff4d60795 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#34 0x00007ffff4d66727 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#35 0x00007ffff2f57280 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#36 0x00007ffff4d64ee5 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib/libQt5Widgets.so.5
#37 0x00007ffff4dbf2c3 in ?? () from /usr/lib/libQt5Widgets.so.5
#38 0x00007ffff4dc1793 in ?? () from /usr/lib/libQt5Widgets.so.5
#39 0x00007ffff4d607bc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#40 0x00007ffff4d6595f in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#41 0x00007ffff2f57280 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#42 0x00007ffff4584693 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib/libQt5Gui.so.5
#43 0x00007ffff4585ea5 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/libQt5Gui.so.5
#44 0x00007ffff456318b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Gui.so.5
#45 0x00007fffe5f984d0 in ?? () from /usr/lib/libQt5WaylandClient.so.5
#46 0x00007fffee706dd7 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#47 0x00007fffee707040 in ?? () from /usr/lib/libglib-2.0.so.0
#48 0x00007fffee7070ec in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#49 0x00007ffff2fad6cf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#50 0x00007ffff2f5546a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#51 0x00007ffff2f5da0c in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
#52 0x0000000000419bfe in main (argc=1, argv=0x7fffffffe608) at /home/paul/src/systemsettings/app/main.cpp:55
(gdb) p m_backend
$1 = (TouchpadBackend *) 0x0
Comment 3 Rajeesh K V 2016-05-16 14:05:59 UTC
Adding Martin Gräßlin to cc; to check how best to handle this for Wayland platform.
Comment 4 Martin Flöser 2016-05-17 05:38:48 UTC
I had already investigated a little bit last week on this issue. The main reason for the crash is that no backend gets loaded and this isn't handled gracefully (crash instead of "unsupported" message).

To properly implement support, we need to write a KWin/Wayland specific backend. The big question is how to communicate with KWin. I thought of exposing all found devices through DBus, so that the configuration module can use most of the existing detection code and also allows to modify the settings for the preview area.
Comment 5 Rajeesh K V 2016-09-28 03:32:20 UTC
*** Bug 369355 has been marked as a duplicate of this bug. ***
Comment 6 itl 2016-10-15 18:42:44 UTC
Still a problem in 5.8.1.
Comment 7 Roman Gilg 2016-10-15 20:23:39 UTC
It's known to Martin that this is still not working. He already did some work on the touchpad Wayland integration. He reported about his work in Bug 366605, which  covers the problem of no tap-to-click on Wayland.
Comment 8 Christoph Feck 2016-10-18 01:19:46 UTC
*** Bug 371014 has been marked as a duplicate of this bug. ***
Comment 9 Christoph Feck 2016-10-18 01:21:04 UTC
*** Bug 365738 has been marked as a duplicate of this bug. ***
Comment 10 Alivema4ever 2016-10-19 11:45:32 UTC
Let me know when this bug is fixed.
Comment 11 Christoph Feck 2016-11-08 21:09:01 UTC
*** Bug 372137 has been marked as a duplicate of this bug. ***
Comment 12 Christoph Feck 2016-11-14 03:01:53 UTC
*** Bug 372363 has been marked as a duplicate of this bug. ***
Comment 13 Rajeesh K V 2016-12-18 15:16:42 UTC
*** Bug 373794 has been marked as a duplicate of this bug. ***
Comment 14 Roman Gilg 2017-01-12 23:00:46 UTC
Fixed by new Wayland Touchpad KCM with Plasma 5.9:
https://phabricator.kde.org/R119:3db456588d0df6c7fe8d227608bde4dcd4255f23
Comment 15 Christoph Feck 2017-01-25 16:53:09 UTC
*** Bug 375315 has been marked as a duplicate of this bug. ***
Comment 16 Christoph Feck 2017-07-27 20:51:01 UTC
*** Bug 365790 has been marked as a duplicate of this bug. ***