Bug 430740

Summary: kded5 crashes on logout from Wayland session
Product: [Plasma] plasmashell Reporter: Patrick Silva <bugseforuns>
Component: generic-crashAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED UPSTREAM    
Severity: crash CC: nate, plasma-bugs
Priority: NOR Keywords: wayland
Version: master   
Target Milestone: 1.0   
Platform: Neon   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=424408
https://bugs.kde.org/show_bug.cgi?id=430739
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Patrick Silva 2020-12-23 10:54:33 UTC
SUMMARY
Sometimes my system generates coredump of kded5 after logout from Wayland session.

STEPS TO REPRODUCE
1. start Wayland session
2. logout
3. 

EXPECTED RESULT
no coredump after logout

SOFTWARE/OS VERSIONS
Operating System: KDE neon Unstable Edition
KDE Plasma Version: 5.20.80
KDE Frameworks Version: 5.78.0
Qt Version: 5.15.2


Thread 7 (Thread 0x7f03bee0c700 (LWP 11935)):
#0  g_mutex_unlock (mutex=0x7f03b4000c20) at ../../../glib/gthread-posix.c:1493
#1  0x00007f03eada7277 in g_main_context_acquire (context=0x7f03b4000c20) at ../../../glib/gmain.c:3389
#2  0x00007f03eada8065 in g_main_context_iterate (context=context@entry=0x7f03b4000c20, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:3997
#3  0x00007f03eada82e3 in g_main_context_iteration (context=0x7f03b4000c20, may_block=may_block@entry=1) at ../../../glib/gmain.c:4108
#4  0x00007f03ec1aafbb in QEventDispatcherGlib::processEvents (this=0x7f03b4000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:425
#5  0x00007f03ec14f1ab in QEventLoop::exec (this=this@entry=0x7f03bee0bd60, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
#6  0x00007f03ebf69a12 in QThread::exec (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#7  0x00007f03ebf6abac in QThreadPrivate::start (arg=0x55f9c6ef1740) at thread/qthread_unix.cpp:329
#8  0x00007f03eb709609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#9  0x00007f03ebbec293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 6 (Thread 0x7f03d5782700 (LWP 11835)):
#0  0x00007f03ebbdfaff in __GI___poll (fds=0x55f9c6e2f470, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f03eada81ae in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x55f9c6e2f470, timeout=<optimized out>, context=0x55f9c6e2f380) at ../../../glib/gmain.c:4346
#2  g_main_context_iterate (context=context@entry=0x55f9c6e2f380, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4042
#3  0x00007f03eada82e3 in g_main_context_iteration (context=context@entry=0x55f9c6e2f380, may_block=may_block@entry=1) at ../../../glib/gmain.c:4108
#4  0x00007f03d5fce99d in dconf_gdbus_worker_thread (user_data=0x55f9c6e2f380) at ../gdbus/dconf-gdbus-thread.c:82
#5  0x00007f03eadd1931 in g_thread_proxy (data=0x55f9c6e354c0) at ../../../glib/gthread.c:807
#6  0x00007f03eb709609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007f03ebbec293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 5 (Thread 0x7f03e643e700 (LWP 11764)):
#0  0x00007f03ebbdfaff in __GI___poll (fds=0x7f03e00450f0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f03eada81ae in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7f03e00450f0, timeout=<optimized out>, context=0x7f03e0000c20) at ../../../glib/gmain.c:4346
#2  g_main_context_iterate (context=context@entry=0x7f03e0000c20, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4042
#3  0x00007f03eada82e3 in g_main_context_iteration (context=0x7f03e0000c20, may_block=may_block@entry=1) at ../../../glib/gmain.c:4108
#4  0x00007f03ec1aafbb in QEventDispatcherGlib::processEvents (this=0x7f03e0000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:425
#5  0x00007f03ec14f1ab in QEventLoop::exec (this=this@entry=0x7f03e643dd30, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
#6  0x00007f03ebf69a12 in QThread::exec (this=this@entry=0x7f03ec541d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#7  0x00007f03ec4bdf4b in QDBusConnectionManager::run (this=0x7f03ec541d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:179
#8  0x00007f03ebf6abac in QThreadPrivate::start (arg=0x7f03ec541d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:329
#9  0x00007f03eb709609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#10 0x00007f03ebbec293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 4 (Thread 0x7f03d5f83700 (LWP 11818)):
#0  0x00007f03ebbdfaff in __GI___poll (fds=0x55f9c6e48fc0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f03eada81ae in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x55f9c6e48fc0, timeout=<optimized out>, context=0x55f9c6e48ed0) at ../../../glib/gmain.c:4346
#2  g_main_context_iterate (context=context@entry=0x55f9c6e48ed0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4042
#3  0x00007f03eada82e3 in g_main_context_iteration (context=0x55f9c6e48ed0, may_block=may_block@entry=1) at ../../../glib/gmain.c:4108
#4  0x00007f03eada8331 in glib_worker_main (data=<optimized out>) at ../../../glib/gmain.c:5996
#5  0x00007f03eadd1931 in g_thread_proxy (data=0x7f03cc001b60) at ../../../glib/gthread.c:807
#6  0x00007f03eb709609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007f03ebbec293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7f03d6ccd700 (LWP 11781)):
#0  0x00007f03ebbdfaff in __GI___poll (fds=0x7f03cc004a60, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f03eada81ae in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7f03cc004a60, timeout=<optimized out>, context=0x7f03cc000c20) at ../../../glib/gmain.c:4346
#2  g_main_context_iterate (context=context@entry=0x7f03cc000c20, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4042
#3  0x00007f03eada82e3 in g_main_context_iteration (context=0x7f03cc000c20, may_block=may_block@entry=1) at ../../../glib/gmain.c:4108
#4  0x00007f03ec1aafa2 in QEventDispatcherGlib::processEvents (this=0x7f03cc000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#5  0x00007f03ec14f1ab in QEventLoop::exec (this=this@entry=0x7f03d6cccd60, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
#6  0x00007f03ebf69a12 in QThread::exec (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#7  0x00007f03ebf6abac in QThreadPrivate::start (arg=0x55f9c6d19710) at thread/qthread_unix.cpp:329
#8  0x00007f03eb709609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#9  0x00007f03ebbec293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7f03d4f81700 (LWP 11854)):
#0  0x00007f03ebbdfaff in __GI___poll (fds=0x7f03c0017550, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f03eada81ae in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7f03c0017550, timeout=<optimized out>, context=0x7f03c00147a0) at ../../../glib/gmain.c:4346
#2  g_main_context_iterate (context=0x7f03c00147a0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4042
#3  0x00007f03eada8533 in g_main_loop_run (loop=0x7f03c0014890) at ../../../glib/gmain.c:4241
#4  0x00007f03d6305eda in gdbus_shared_thread_func (user_data=0x7f03c0014770) at ../../../gio/gdbusprivate.c:279
#5  0x00007f03eadd1931 in g_thread_proxy (data=0x7f03c0002ea0) at ../../../glib/gthread.c:807
#6  0x00007f03eb709609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007f03ebbec293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7f03e8d9f840 (LWP 11763)):
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007f03ecc82f9b in KCrash::defaultCrashHandler (sig=6) at ./src/kcrash.cpp:577
#2  <signal handler called>
#3  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#4  0x00007f03ebaef859 in __GI_abort () at abort.c:79
#5  0x00007f03ebf2fbe7 in qt_message_fatal (context=..., message=<synthetic pointer>...) at global/qlogging.cpp:1914
#6  QMessageLogger::fatal (this=this@entry=0x7fff4e28ea10, msg=msg@entry=0x7f03e87d00b8 "The Wayland connection broke. Did the Wayland compositor die?") at global/qlogging.cpp:893
#7  0x00007f03e8713d65 in QtWaylandClient::QWaylandDisplay::checkError (this=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qlogging.h:90
#8  QtWaylandClient::QWaylandDisplay::checkError (this=<optimized out>) at qwaylanddisplay.cpp:204
#9  0x00007f03e872516c in QtWaylandClient::QWaylandDisplay::flushRequests (this=0x55f9c6b30160) at qwaylanddisplay.cpp:222
#10 0x00007f03ec1876f0 in doActivate<false> (sender=0x55f9c6bb26f0, signal_index=4, argv=0x7fff4e28eb20) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:395
#11 0x00007f03ec180a87 in QMetaObject::activate (sender=sender@entry=0x55f9c6bb26f0, m=m@entry=0x7f03ec3ea1e0 <QAbstractEventDispatcher::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x0) at kernel/qobject.cpp:3946
#12 0x00007f03ec14d247 in QAbstractEventDispatcher::awake (this=this@entry=0x55f9c6bb26f0) at .moc/moc_qabstracteventdispatcher.cpp:149
#13 0x00007f03ec1aafdc in QEventDispatcherGlib::processEvents (this=0x55f9c6bb26f0, flags=...) at kernel/qeventdispatcher_glib.cpp:430
#14 0x00007f03ec14f1ab in QEventLoop::exec (this=this@entry=0x7fff4e28ec40, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
#15 0x00007f03ec157354 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#16 0x000055f9c68a2cf9 in main (argc=<optimized out>, argv=<optimized out>) at ./src/kded.cpp:795
Comment 1 Nate Graham 2020-12-23 15:29:18 UTC
#6  QMessageLogger::fatal (this=this@entry=0x7fff4e28ea10, msg=msg@entry=0x7f03e87d00b8 "The Wayland connection broke. Did the Wayland compositor die?") at global/qlogging.cpp:893
Comment 2 Nate Graham 2021-01-13 18:44:55 UTC
#6  QMessageLogger::fatal (this=this@entry=0x7fffd70c5ba0, msg=msg@entry=0x7ff994ac00b8 "The Wayland connection broke. Did the Wayland compositor die?") at global/qlogging.cpp:893

This means that the compositor crashed. Due to a Qt issue, when this happens, the app using it will crash too. KDE developers submitted a fix, but sadly it was not merged. See https://codereview.qt-project.org/c/qt/qtwayland/+/308984.

Until we get better handling of this in Qt, the best we can do is debug why the compositor crashed in the first place. So can you please get a backtrace of the crash in kwin_wayland and then file a new bug report with it on kwin | wayland-generic? Thanks!

You may be able to use the `coredumpctl` utility to retrieve the backtrace. See https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports#Retrieving_a_backtrace_using_coredumpctl