Bug 416315

Summary: Kate aborted when its Wayland connection broke
Product: [Applications] kate Reporter: Matt Fagnani <matt.fagnani>
Component: generalAssignee: KWrite Developers <kwrite-bugs-null>
Status: RESOLVED NOT A BUG    
Severity: crash CC: christoph
Priority: NOR Keywords: drkonqi
Version: 19.12.1   
Target Milestone: ---   
Platform: Fedora RPMs   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Matt Fagnani 2020-01-15 22:01:37 UTC
Application: kate (19.12.1)

Qt Version: 5.13.2
Frameworks Version: 5.66.0
Operating System: Linux 5.5.0-0.rc6.git0.1.fc32.x86_64 x86_64
Distribution: Fedora 32 (Rawhide)

-- Information about the crash:
- What I was doing when the application crashed:

I was running Plasma 5.17.5 on Wayland in Fedora Rawhide with Qt 5.13.2, KF 5.66.0, Mesa 19.3.2. I opened Konsole 19.2.1. I opened a second tab. I ran coredumpctl gdb on a kwin_wayland crash which happened when logging out on the previous boot. I reported those type of kwin_wayland crashes at https://bugs.kde.org/show_bug.cgi?id=416147. The core dump file was 2.1 GB, and it took a few minutes for coredumpctl gdb to decompress and process the core dump. I ran bt in gdb to get a trace. Konsole stopped responding for about a minute with Not Responding in the title bar. Konsole's colours faded. Konsole disappeared. The trace in Dr. Konqi showed the error "The Wayland connection broke. Did the Wayland compositor die?" in frame 9 of the crashing thread 1. I've previously seen Konsole abort with that error as in my report at https://bugs.kde.org/show_bug.cgi?id=413058. I've also seen that error for 
plasmashell https://bugs.kde.org/show_bug.cgi?id=414116
ksysguard https://bugs.kde.org/show_bug.cgi?id=413901
system settings https://bugs.kde.org/show_bug.cgi?id=414118

I opened konsole again and ran coredumpctl gdb. I ran bt and thread apply all bt full. I opened Kate 19.12.1 and copied the coredumpctl gdb output to kate. I saved the output to a file. I pasted additional output to Kate and remove a line. I saved the file. Kate showed Not Responding in its title bar for a few seconds, and its colors faded. Kate aborted with the error "The Wayland connection broke. Did the Wayland compositor die?" in frame 9 of the crashing thread 1. The underlying problem might be in Qt particularly qtwayland.

-- Backtrace:
Application: Kate (kate), signal: Aborted
Using host libthread_db library "/lib64/libthread_db.so.1".
29	  return SYSCALL_CANCEL (poll, fds, nfds, timeout);
[Current thread is 1 (Thread 0x7fedf88b0c80 (LWP 3884))]

Thread 12 (Thread 0x7fedbaffd700 (LWP 3895)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x558e00bb3380) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x558e00bb3330, cond=0x558e00bb3358) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x558e00bb3358, mutex=0x558e00bb3330) at pthread_cond_wait.c:638
#3  0x00007fedde22ab0b in cnd_wait (mtx=0x558e00bb3330, cond=0x558e00bb3358) at ../include/c11/threads_posix.h:155
#4  util_queue_thread_func (input=input@entry=0x558e00bb4690) at ../src/util/u_queue.c:275
#5  0x00007fedde22a71b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
#6  0x00007fedf60f5482 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007fedf7215583 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 11 (Thread 0x7fedbb7fe700 (LWP 3894)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x558e00bb3380) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x558e00bb3330, cond=0x558e00bb3358) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x558e00bb3358, mutex=0x558e00bb3330) at pthread_cond_wait.c:638
#3  0x00007fedde22ab0b in cnd_wait (mtx=0x558e00bb3330, cond=0x558e00bb3358) at ../include/c11/threads_posix.h:155
#4  util_queue_thread_func (input=input@entry=0x558e00bb4650) at ../src/util/u_queue.c:275
#5  0x00007fedde22a71b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
#6  0x00007fedf60f5482 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007fedf7215583 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 10 (Thread 0x7fedbbfff700 (LWP 3893)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x558e00bb2c78) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x558e00bb2c28, cond=0x558e00bb2c50) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x558e00bb2c50, mutex=0x558e00bb2c28) at pthread_cond_wait.c:638
#3  0x00007fedde22ab0b in cnd_wait (mtx=0x558e00bb2c28, cond=0x558e00bb2c50) at ../include/c11/threads_posix.h:155
#4  util_queue_thread_func (input=input@entry=0x558e00bb1cb0) at ../src/util/u_queue.c:275
#5  0x00007fedde22a71b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
#6  0x00007fedf60f5482 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007fedf7215583 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 9 (Thread 0x7fedd0fee700 (LWP 3892)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x558e00bb2c78) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x558e00bb2c28, cond=0x558e00bb2c50) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x558e00bb2c50, mutex=0x558e00bb2c28) at pthread_cond_wait.c:638
#3  0x00007fedde22ab0b in cnd_wait (mtx=0x558e00bb2c28, cond=0x558e00bb2c50) at ../include/c11/threads_posix.h:155
#4  util_queue_thread_func (input=input@entry=0x558e00bb1a80) at ../src/util/u_queue.c:275
#5  0x00007fedde22a71b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
#6  0x00007fedf60f5482 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007fedf7215583 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 8 (Thread 0x7fedd17ef700 (LWP 3891)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x558e00bb2c78) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x558e00bb2c28, cond=0x558e00bb2c50) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x558e00bb2c50, mutex=0x558e00bb2c28) at pthread_cond_wait.c:638
#3  0x00007fedde22ab0b in cnd_wait (mtx=0x558e00bb2c28, cond=0x558e00bb2c50) at ../include/c11/threads_posix.h:155
#4  util_queue_thread_func (input=input@entry=0x558e00bb45d0) at ../src/util/u_queue.c:275
#5  0x00007fedde22a71b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
#6  0x00007fedf60f5482 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007fedf7215583 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 7 (Thread 0x7fedd1ff0700 (LWP 3890)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x558e001c8e48) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x558e001c8df8, cond=0x558e001c8e20) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x558e001c8e20, mutex=0x558e001c8df8) at pthread_cond_wait.c:638
#3  0x00007fedde22ab0b in cnd_wait (mtx=0x558e001c8df8, cond=0x558e001c8e20) at ../include/c11/threads_posix.h:155
#4  util_queue_thread_func (input=input@entry=0x558e00bb4570) at ../src/util/u_queue.c:275
#5  0x00007fedde22a71b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
#6  0x00007fedf60f5482 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007fedf7215583 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 6 (Thread 0x7fedd27f1700 (LWP 3889)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x558e001c8e48) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x558e001c8df8, cond=0x558e001c8e20) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x558e001c8e20, mutex=0x558e001c8df8) at pthread_cond_wait.c:638
#3  0x00007fedde22ab0b in cnd_wait (mtx=0x558e001c8df8, cond=0x558e001c8e20) at ../include/c11/threads_posix.h:155
#4  util_queue_thread_func (input=input@entry=0x558e00bb4530) at ../src/util/u_queue.c:275
#5  0x00007fedde22a71b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
#6  0x00007fedf60f5482 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007fedf7215583 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 5 (Thread 0x7fedd2ff2700 (LWP 3888)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x558e001c8e48) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x558e001c8df8, cond=0x558e001c8e20) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x558e001c8e20, mutex=0x558e001c8df8) at pthread_cond_wait.c:638
#3  0x00007fedde22ab0b in cnd_wait (mtx=0x558e001c8df8, cond=0x558e001c8e20) at ../include/c11/threads_posix.h:155
#4  util_queue_thread_func (input=input@entry=0x558e00bb44f0) at ../src/util/u_queue.c:275
#5  0x00007fedde22a71b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
#6  0x00007fedf60f5482 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007fedf7215583 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 4 (Thread 0x7fedd37f3700 (LWP 3887)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x558e001c8e48) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x558e001c8df8, cond=0x558e001c8e20) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x558e001c8e20, mutex=0x558e001c8df8) at pthread_cond_wait.c:638
#3  0x00007fedde22ab0b in cnd_wait (mtx=0x558e001c8df8, cond=0x558e001c8e20) at ../include/c11/threads_posix.h:155
#4  util_queue_thread_func (input=input@entry=0x558e00bb3d40) at ../src/util/u_queue.c:275
#5  0x00007fedde22a71b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
#6  0x00007fedf60f5482 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007fedf7215583 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7fedd8ba3700 (LWP 3886)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x558e00bae8d0) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x558e00bae880, cond=0x558e00bae8a8) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x558e00bae8a8, mutex=0x558e00bae880) at pthread_cond_wait.c:638
#3  0x00007fedde22ab0b in cnd_wait (mtx=0x558e00bae880, cond=0x558e00bae8a8) at ../include/c11/threads_posix.h:155
#4  util_queue_thread_func (input=input@entry=0x558e00babc40) at ../src/util/u_queue.c:275
#5  0x00007fedde22a71b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
#6  0x00007fedf60f5482 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007fedf7215583 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7fede53db700 (LWP 3885)):
#0  0x00007fedf75a53b3 in QMutex::unlock (this=this@entry=0x558dfff159e0) at /usr/include/c++/9/bits/atomic_base.h:769
#1  0x00007fedf77a97a2 in QMutexLocker::unlock (this=<synthetic pointer>) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:240
#2  QMutexLocker::~QMutexLocker (this=<synthetic pointer>, __in_chrg=<optimized out>) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:213
#3  QThreadData::canWaitLocked (this=0x558dfff159b0) at ../../include/QtCore/5.13.2/QtCore/private/../../../../../src/corelib/thread/qthread_p.h:272
#4  postEventSourcePrepare (s=0x7fede0004ff0, timeout=timeout@entry=0x7fede53daba4) at kernel/qeventdispatcher_glib.cpp:260
#5  0x00007fedf578d39a in g_main_context_prepare (context=context@entry=0x7fede0000c30, priority=priority@entry=0x7fede53dac30) at ../glib/gmain.c:3582
#6  0x00007fedf578dd4b in g_main_context_iterate (context=context@entry=0x7fede0000c30, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:3990
#7  0x00007fedf578df53 in g_main_context_iteration (context=0x7fede0000c30, may_block=may_block@entry=1) at ../glib/gmain.c:4071
#8  0x00007fedf77a98b3 in QEventDispatcherGlib::processEvents (this=0x7fede0000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:425
#9  0x00007fedf775324b in QEventLoop::exec (this=this@entry=0x7fede53dad70, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:140
#10 0x00007fedf75a3c75 in QThread::exec (this=this@entry=0x7fedf7ab7060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at ../../include/QtCore/../../src/corelib/global/qflags.h:120
#11 0x00007fedf7a33f6a in QDBusConnectionManager::run (this=0x7fedf7ab7060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:178
#12 0x00007fedf75a4dc6 in QThreadPrivate::start (arg=0x7fedf7ab7060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:360
#13 0x00007fedf60f5482 in start_thread (arg=<optimized out>) at pthread_create.c:477
#14 0x00007fedf7215583 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7fedf88b0c80 (LWP 3884)):
[KCrash Handler]
#6  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#7  0x00007fedf7139899 in __GI_abort () at abort.c:79
#8  0x00007fedf756eb25 in qt_message_fatal (context=..., message=<synthetic pointer>...) at global/qlogging.cpp:1907
#9  QMessageLogger::fatal (this=this@entry=0x7ffcbe7793b0, msg=msg@entry=0x7fede62fee30 "The Wayland connection broke. Did the Wayland compositor die?") at global/qlogging.cpp:888
#10 0x00007fede624e84b in QtWaylandClient::QWaylandDisplay::checkError (this=<optimized out>) at /usr/include/qt5/QtCore/qlogging.h:91
#11 QtWaylandClient::QWaylandDisplay::checkError (this=<optimized out>) at qwaylanddisplay.cpp:192
#12 0x00007fede625e3fe in QtWaylandClient::QWaylandDisplay::flushRequests (this=0x558dffe9a470) at qwaylanddisplay.cpp:210
#13 0x00007fedf777e98b in QMetaObject::activate (sender=0x558dfff03d70, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=<optimized out>) at kernel/qobject.cpp:3809
#14 0x00007fedf778accc in QSocketNotifier::activated (this=this@entry=0x558dfff03d70, _t1=<optimized out>, _t2=...) at .moc/moc_qsocketnotifier.cpp:141
#15 0x00007fedf778b031 in QSocketNotifier::event (this=0x558dfff03d70, e=0x7ffcbe7797a0) at kernel/qsocketnotifier.cpp:266
#16 0x00007fedf821bab6 in QApplicationPrivate::notify_helper (this=this@entry=0x558dffe89e80, receiver=receiver@entry=0x558dfff03d70, e=e@entry=0x7ffcbe7797a0) at kernel/qapplication.cpp:3703
#17 0x00007fedf8225150 in QApplication::notify (this=0x7ffcbe779c00, receiver=0x558dfff03d70, e=0x7ffcbe7797a0) at kernel/qapplication.cpp:3449
#18 0x00007fedf7754458 in QCoreApplication::notifyInternal2 (receiver=0x558dfff03d70, event=0x7ffcbe7797a0) at kernel/qcoreapplication.cpp:1095
#19 0x00007fedf77aa247 in socketNotifierSourceDispatch (source=source@entry=0x558dffec4960) at kernel/qeventdispatcher_glib.cpp:107
#20 0x00007fedf578db20 in g_main_dispatch (context=0x558dffef4060) at ../glib/gmain.c:3272
#21 g_main_context_dispatch (context=context@entry=0x558dffef4060) at ../glib/gmain.c:3937
#22 0x00007fedf578deb0 in g_main_context_iterate (context=context@entry=0x558dffef4060, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4010
#23 0x00007fedf578df53 in g_main_context_iteration (context=0x558dffef4060, may_block=may_block@entry=1) at ../glib/gmain.c:4071
#24 0x00007fedf77a9895 in QEventDispatcherGlib::processEvents (this=0x558dfff03930, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#25 0x00007fedf775324b in QEventLoop::exec (this=this@entry=0x7ffcbe7799b0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:140
#26 0x00007fedf775b126 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:120
#27 0x0000558dfe0ec0b7 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kate-19.12.1-1.fc32.x86_64/kate/main.cpp:620
[Inferior 1 (process 3884) detached]

Possible duplicates by query: bug 414938, bug 414922, bug 413943, bug 413708, bug 412300.

Reported using DrKonqi
Comment 1 Christoph Cullmann 2020-02-01 20:26:41 UTC
Hi, I have no idea how we could fix that.

Actually, if the wayland connection break, I assume Kate is as bad off as if the X11 server connection is dead.

If you want to have improvements here, please report that upstream to Qt.
If this can be handled more gracefully, then there.

(but I am not that sure how it should be handled, I guess some "reconnect" isn't possible)

I consider this no bug inside Kate/KWrite/..