Bug 392590

Summary: System settings crash when I leave "launch feedback"
Product: [Applications] systemsettings Reporter: Patrick Silva <bugseforuns>
Component: kcm_launchAssignee: Eike Hein <hein>
Status: RESOLVED DUPLICATE    
Severity: crash CC: diaz.fredi, fmuro, kde, kde, me, oysstu, public
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Neon   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Patrick Silva 2018-04-01 00:30:27 UTC
Reproducible on neon dev unstable.
open system settings > applications > launch feedback
back to all settings... crash


Thread 3 (Thread 0x7fffd1c91700 (LWP 23819)):
#0  0x00007ffff381174d in poll () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007fffeceb138c in g_main_context_poll (priority=2147483647, n_fds=1, 
    fds=0x7fffcc003070, timeout=<optimized out>, context=0x7fffcc000990)
    at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gmain.c:4135
#2  g_main_context_iterate (context=context@entry=0x7fffcc000990, 
    block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gmain.c:3835
#3  0x00007fffeceb149c in g_main_context_iteration (context=0x7fffcc000990, 
    may_block=may_block@entry=1)
    at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gmain.c:3901
#4  0x00007ffff41445af in QEventDispatcherGlib::processEvents (
    this=0x7fffcc0008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#5  0x00007ffff40eb64a in QEventLoop::exec (this=this@entry=0x7fffd1c90ca0, 
---Type <return> to continue, or q <return> to quit---
    gs=..., flags@entry=...) at kernel/qeventloop.cpp:212                                              
#6  0x00007ffff3f0b554 in QThread::exec (this=this@entry=0xa8d3a0) at thread/qthread.cpp:522           
#7  0x00007ffff1a49a35 in QQmlThreadPrivate::run (this=0xa8d3a0) at qml/ftw/qqmlthread.cpp:147         
#8  0x00007ffff3f106eb in QThreadPrivate::start (arg=0xa8d3a0) at thread/qthread_unix.cpp:376          
#9  0x00007fffef1c56ba in start_thread (arg=0x7fffd1c91700) at pthread_create.c:333                    
#10 0x00007ffff381d41d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109                    
                                                                                                       
Thread 2 (Thread 0x7fffe1698700 (LWP 23021)):                                                          
#0  0x00007ffff381174d in poll () at ../sysdeps/unix/syscall-template.S:84                             
#1  0x00007fffeceb138c in g_main_context_poll (priority=2147483647, n_fds=2, fds=0x7fffdc003220, 
    timeout=<optimized out>, context=0x7fffdc000990)
    at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gmain.c:4135
#2  g_main_context_iterate (context=context@entry=0x7fffdc000990, block=block@entry=1, 
    dispatch=dispatch@entry=1, self=<optimized out>)
    at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gmain.c:3835
#3  0x00007fffeceb149c in g_main_context_iteration (context=0x7fffdc000990, 
    may_block=may_block@entry=1) at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gmain.c:3901
#4  0x00007ffff41445cb in QEventDispatcherGlib::processEvents (this=0x7fffdc0008c0, flags=...)
    at kernel/qeventdispatcher_glib.cpp:425
#5  0x00007ffff40eb64a in QEventLoop::exec (this=this@entry=0x7fffe1697c90, flags=..., 
    flags@entry=...) at kernel/qeventloop.cpp:212
#6  0x00007ffff3f0b554 in QThread::exec (
    this=this@entry=0x7ffff47dbd60 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>)
    at thread/qthread.cpp:522
---Type <return> to continue, or q <return> to quit---
#7  0x00007ffff45672c5 in QDBusConnectionManager::run (
    this=0x7ffff47dbd60 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>)
    at qdbusconnection.cpp:178
#8  0x00007ffff3f106eb in QThreadPrivate::start (
    arg=0x7ffff47dbd60 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>)
    at thread/qthread_unix.cpp:376
#9  0x00007fffef1c56ba in start_thread (arg=0x7fffe1698700) at pthread_create.c:333
#10 0x00007ffff381d41d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 1 (Thread 0x7ffff7f27900 (LWP 22025)):
#0  QQmlData::isSignalConnected (d=0x6d006f0063006f, index=7) at qml/qqmlengine.cpp:864
#1  0x00007ffff4119e7b in QObjectPrivate::isDeclarativeSignalConnected (signal_index=7, 
    this=<optimized out>) at kernel/qobject_p.h:267
#2  QMetaObject::activate (sender=0xafee50, signalOffset=<optimized out>, 
    local_signal_index=<optimized out>, argv=0x7fffffffd1d0) at kernel/qobject.cpp:3641
#3  0x00007ffff6dedd7f in KCModule::changed(bool) ()
   from /usr/lib/x86_64-linux-gnu/libKF5ConfigWidgets.so.5
#4  0x00007ffff411a7b6 in QtPrivate::QSlotObjectBase::call (a=0x7fffffffd2c0, r=0xae3c20, 
    this=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:378
#5  QMetaObject::activate (sender=0xae3c20, signalOffset=<optimized out>, 
    local_signal_index=<optimized out>, argv=<optimized out>) at kernel/qobject.cpp:3749
#6  0x00007fffd1c95c7f in LaunchFeedback::updateNeedsSave (this=0xae3c20)
    at /workspace/build/kcms/launch/launchfeedback.cpp:199
#7  0x00007fffd1c9836b in LaunchFeedback::qt_metacall (this=0xae3c20, _c=QMetaObject::WriteProperty, 
---Type <return> to continue, or q <return> to quit---
    _id=0, _a=0x7fffffffd4d0)
    at /workspace/build/obj-x86_64-linux-gnu/kcms/launch/moc_launchfeedback.cpp:202
#8  0x00007ffff197d02f in QV4::QObjectWrapper::setProperty (engine=engine@entry=0xb28ba0, 
    object=object@entry=0xae3c20, property=0xbfa9a8, value=...) at jsruntime/qv4qobjectwrapper.cpp:498
#9  0x00007ffff197dd1b in QV4::QObjectWrapper::setQmlProperty (engine=0xb28ba0, 
    qmlContext=<optimized out>, object=0xae3c20, name=<optimized out>, 
    revisionMode=QV4::QObjectWrapper::IgnoreRevision, value=...)
    at jsruntime/qv4qobjectwrapper.cpp:423
#10 0x00007ffff197de1d in QV4::QObjectWrapper::put (m=0x7fffd0c523f0, name=0x7fffd0c523e8, value=...)
    at jsruntime/qv4qobjectwrapper.cpp:697
#11 0x00007ffff198ce1d in QV4::Object::put (v=..., name=<optimized out>, this=<optimized out>)
    at jsruntime/qv4object_p.h:386
#12 QV4::Runtime::method_setProperty (engine=0xb28ba0, object=..., nameIndex=<optimized out>, 
    value=...) at jsruntime/qv4runtime.cpp:601
#13 0x00007fffe000f2be in ?? ()
#14 0x3fe0000000000010 in ?? ()
#15 0x00000000000000f8 in ?? ()
#16 0x00007fffffffd740 in ?? ()
#17 0x0003200000000003 in ?? ()
#18 0x000000000179af00 in ?? ()
#19 0x00007fffffffd6e0 in ?? ()
#20 0x00007fffffffd6c0 in ?? ()
#21 0x00007fffd0c52378 in ?? ()
#22 0x0000000000b28ba0 in ?? ()
---Type <return> to continue, or q <return> to quit---
#23 0x00007fffffffd740 in ?? ()
#24 0x0000000000b28ba0 in ?? ()
#25 0x00007ffff18e788b in QV4::ExecutionContext::simpleCall (this=<optimized out>, scope=..., 
    callData=<optimized out>, function=0xb82770) at jsruntime/qv4context.cpp:302
#26 0x00007ffff1909ca5 in QV4::ScriptFunction::call (that=<optimized out>, scope=..., 
    callData=<optimized out>) at jsruntime/qv4functionobject.cpp:409
#27 0x00007ffff1a472af in QV4::Object::call (d=<optimized out>, scope=..., this=<optimized out>)
    at ../../include/QtQml/5.10.0/QtQml/private/../../../../../src/qml/jsruntime/qv4object_p.h:445
#28 QQmlDelayedCallQueue::DelayedFunctionCall::execute (this=0x1790fb0, engine=<optimized out>)
    at qml/qqmldelayedcallqueue.cpp:76
#29 0x00007ffff1a476c8 in QQmlDelayedCallQueue::executeAllExpired_Later (this=0xa8d698)
    at qml/qqmldelayedcallqueue.cpp:201
#30 0x00007ffff411b4c9 in QObject::event (this=0xa8d698, e=<optimized out>) at kernel/qobject.cpp:1246
#31 0x00007ffff50b9acc in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#32 0x00007ffff50c1417 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#33 0x00007ffff40ed3c8 in QCoreApplication::notifyInternal2 (receiver=0xa8d698, 
    event=event@entry=0xb0fdd0) at kernel/qcoreapplication.cpp:1044
#34 0x00007ffff40effcb in QCoreApplication::sendEvent (event=0xb0fdd0, receiver=<optimized out>)
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:234
#35 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, 
    event_type=event_type@entry=0, data=0x6354f0) at kernel/qcoreapplication.cpp:1719
#36 0x00007ffff40f0438 in QCoreApplication::sendPostedEvents (receiver=receiver@entry=0x0, 
---Type <return> to continue, or q <return> to quit---
    event_type=event_type@entry=0) at kernel/qcoreapplication.cpp:1573
#37 0x00007ffff4144fa3 in postEventSourceDispatch (s=0x6734c0) at kernel/qeventdispatcher_glib.cpp:276
#38 0x00007fffeceb1197 in g_main_dispatch (context=0x69c800)
    at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gmain.c:3154
#39 g_main_context_dispatch (context=context@entry=0x69c800)
    at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gmain.c:3769
#40 0x00007fffeceb13f0 in g_main_context_iterate (context=context@entry=0x69c800, 
    block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gmain.c:3840
#41 0x00007fffeceb149c in g_main_context_iteration (context=0x69c800, may_block=may_block@entry=1)
    at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gmain.c:3901
#42 0x00007ffff41445af in QEventDispatcherGlib::processEvents (this=0x68f6c0, flags=...)
    at kernel/qeventdispatcher_glib.cpp:423
#43 0x00007fffe640ea91 in QPAEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
    () from /usr/lib/x86_64-linux-gnu/libQt5WaylandClient.so.5
#44 0x00007ffff40eb64a in QEventLoop::exec (this=this@entry=0x7fffffffdd10, flags=..., 
    flags@entry=...) at kernel/qeventloop.cpp:212
#45 0x00007ffff40f4854 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1332
#46 0x000000000040b7c0 in main (argc=1, argv=<optimized out>) at /workspace/build/app/main.cpp:71
Comment 1 Patrick Silva 2018-04-01 23:14:09 UTC
Crash also reproducible under X11.
Comment 2 Kai Uwe Broulik 2018-05-24 09:51:40 UTC
Can confirm.

When I change a setting and then leave it without saving, choosing "Discard" at the prompt makes it crash.
System Settings calls "load()" when you do so and this will cause it to reload settings, updating QML stuff and eventually crashing in needsSave() because it's already being torn down.

I just tried to find the exact cause for it but haven't succeeded so far. It doesn't seem to be the Qt.callLater, though.
Comment 3 Patrick Silva 2018-06-12 19:53:52 UTC
no crash no Arch Linux running plasma 5.13.
Comment 4 Marco Martin 2018-07-20 16:09:58 UTC
*** Bug 396105 has been marked as a duplicate of this bug. ***
Comment 5 Christoph Feck 2018-08-04 12:26:29 UTC
*** Bug 396489 has been marked as a duplicate of this bug. ***
Comment 6 Christoph Feck 2018-09-05 00:41:51 UTC
*** Bug 397324 has been marked as a duplicate of this bug. ***
Comment 7 Fabio Forni 2018-10-28 22:41:57 UTC
This is also happening on Solus with Plasma 5.14.2. Clicking on the OK button makes the module crash, even when it's open "alone" (not via Settings).
Comment 8 Christoph Feck 2018-11-06 01:37:58 UTC
*** Bug 400472 has been marked as a duplicate of this bug. ***
Comment 9 David Edmundson 2018-11-06 09:45:13 UTC

*** This bug has been marked as a duplicate of bug 397894 ***