SUMMARY Encountered when running freebsd-update on a remote server, konsole crashed when the update program printed a progress bar consisting of e.g. "50650....50660....50670....50680...." STEPS TO REPRODUCE 1. in bash, run the following example loop: 'i="0"; while [ $i -lt 100000 ]; do echo -n ".1" && i=$[$i+1]; done' 2. move mouse pointer around over output OBSERVED RESULT konsole hangs and crashes after a second or two EXPECTED RESULT nothing special SOFTWARE/OS VERSIONS Fedora 31 running Sway as window manager KDE Frameworks 5.68.0 Qt 5.13.2 (built against 5.13.2) The wayland windowing system ADDITIONAL INFORMATION Trying the same thing on a different system with konsole 19.12.1 using KDE Plasma and same KDE/Qt versions as above *but on Xorg/xcb* does not cause the same problem Trying the above loop with only dots does not exhibit the same issue, URL parsing? Here's a gdb "thread apply all bt full" from the core dump: ==cut== Thread 3 (Thread 0x7feaabebe700 (LWP 109006)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x5646468c4738) at ../sysdeps/unix/sysv/linux/futex-internal.h:80 __ret = -512 oldtype = 0 err = <optimized out> oldtype = <optimized out> err = <optimized out> __ret = <optimized out> resultvar = <optimized out> __arg4 = <optimized out> __arg3 = <optimized out> __arg2 = <optimized out> __arg1 = <optimized out> _a4 = <optimized out> _a3 = <optimized out> _a2 = <optimized out> _a1 = <optimized out> #1 __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x5646468c46e8, cond=0x5646468c4710) at pthread_cond_wait.c:508 spin = 0 buffer = {__routine = 0x7feac231cac0 <__condvar_cleanup_waiting>, __arg = 0x7feaabebdc80, __canceltype = 0, __prev = 0x0} cbuffer = {wseq = 0, cond = 0x5646468c4710, mutex = 0x5646468c46e8, private = 0} err = <optimized out> g = 0 flags = <optimized out> g1_start = <optimized out> signals = <optimized out> result = 0 wseq = 0 seq = 0 private = 0 maxspin = <optimized out> err = <optimized out> result = <optimized out> wseq = <optimized out> g = <optimized out> seq = <optimized out> flags = <optimized out> private = <optimized out> signals = <optimized out> g1_start = <optimized out> spin = <optimized out> buffer = <optimized out> cbuffer = <optimized out> s = <optimized out> #2 __pthread_cond_wait (cond=0x5646468c4710, mutex=0x5646468c46e8) at pthread_cond_wait.c:638 No locals. #3 0x00007feab0e2f19b in cnd_wait (mtx=0x5646468c46e8, cond=0x5646468c4710) at ../include/c11/threads_posix.h:155 No locals. #4 util_queue_thread_func (input=input@entry=0x564646780d90) at ../src/util/u_queue.c:272 job = <optimized out> queue = 0x5646468c46b0 thread_index = 0 #5 0x00007feab0e2edab in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87 pack = {func = 0x7feab0e2f120 <util_queue_thread_func>, arg = 0x564646780d90} #6 0x00007feac23164e2 in start_thread (arg=<optimized out>) at pthread_create.c:479 ret = <optimized out> pd = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140645883438848, 7918327698320108514, 140725692734558, 140725692734559, 140725692734560, 140645883436736, -7910895172605334558, -7911125299989599262}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = 0 #7 0x00007feac4d496a3 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 No locals. Thread 2 (Thread 0x7feab213a700 (LWP 109005)): #0 0x00007feac4d3ea3f in __GI___poll (fds=0x7feaac0029e0, nfds=2, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29 resultvar = 18446744073709551100 sc_cancel_oldtype = 0 sc_ret = <optimized out> #1 0x00007feac1a4886e in g_main_context_poll (priority=<optimized out>, n_fds=2, fds=0x7feaac0029e0, timeout=<optimized out>, context=0x7feaac000c30) at ../glib/gmain.c:4253 ret = <optimized out> errsv = <optimized out> poll_func = 0x7feac1a585e0 <g_poll> poll_func = <optimized out> ret = <optimized out> errsv = <optimized out> #2 g_main_context_iterate (context=context@entry=0x7feaac000c30, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:3949 max_priority = 2147483647 timeout = -1 some_ready = <optimized out> nfds = 2 allocated_nfds = <optimized out> fds = 0x7feaac0029e0 #3 0x00007feac1a489a3 in g_main_context_iteration (context=0x7feaac000c30, may_block=may_block@entry=1) at ../glib/gmain.c:4015 retval = <optimized out> #4 0x00007feac35c7885 in QEventDispatcherGlib::processEvents (this=0x7feaac000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423 d = 0x7feaac000b80 canWait = true savedFlags = {i = 0} result = <optimized out> #5 0x00007feac357123b in QEventLoop::exec (this=this@entry=0x7feab2139d30, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:140 d = 0x7feaac003670 locker = {val = 94859829457392} ref = <optimized out> app = <optimized out> #6 0x00007feac33c1cd5 in QThread::exec (this=this@entry=0x7feac2b27060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at ../../include/QtCore/../../src/corelib/global/qflags.h:120 d = 0x564646703180 locker = {val = 94859829457392} eventLoop = {<QObject> = {_vptr.QObject = 0x7feac382da08 <vtable for QEventLoop+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7feac3716860 <qt_meta_stringdata_QObject>, data = 0x7feac3716740 <qt_meta_data_QObject>, static_metacall = 0x7feac35a4b70 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x7feaac003670}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7feac3719780 <qt_meta_stringdata_Qt>, data = 0x7feac3716980 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7feac3825ba0 <QObject::staticMetaObject>, stringdata = 0x7feac3710ba0 <qt_meta_stringdata_QEventLoop>, data = 0x7feac3710b40 <qt_meta_data_QEventLoop>, static_metacall = 0x7feac3570f50 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}} returnCode = <optimized out> #7 0x00007feac2aa3f6a in QDBusConnectionManager::run (this=0x7feac2b27060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:178 locker = <optimized out> #8 0x00007feac33c2e26 in QThreadPrivate::start (arg=0x7feac2b27060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:360 thr = 0x7feac2b27060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder> data = <optimized out> __clframe = {__cancel_routine = 0x7feac33c2560 <QThreadPrivate::finish(void*)>, __cancel_arg = 0x7feac2b27060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>, __do_it = 1, __cancel_type = <optimized out>} #9 0x00007feac23164e2 in start_thread (arg=<optimized out>) at pthread_create.c:479 ret = <optimized out> pd = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140645986707200, 7918327698320108514, 140725692739694, 140725692739695, 140725692739888, 140645986705088, -7910879296258724894, -7911125299989599262}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = 0 #10 0x00007feac4d496a3 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 No locals. Thread 1 (Thread 0x7feabf351840 (LWP 109004)): #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 set = {__val = {0, 0, 140645988626574, 140725692739328, 1, 140646254462161, 94859836543744, 94859840941312, 206158430256, 140725692739288, 140725692739024, 2724203728749157888, 140725692739007, 94859836543768, 140646277213890, 1}} pid = <optimized out> tid = <optimized out> ret = <optimized out> #1 0x00007feac4c6d8d9 in __GI_abort () at abort.c:79 save_stage = 1 act = {__sigaction_handler = {sa_handler = 0x7feab230fe6d, sa_sigaction = 0x7feab230fe6d}, sa_mask = {__val = {0, 140725692739760, 140725692739528, 94859829366912, 140725692739984, 3, 140646274543028, 94859829403516, 2724203728749157888, 140725692739528, 94859829366912, 3, 140725692739528, 140725692739760, 140646274543305, 1181483013}}, sa_flags = -1679598080, sa_restorer = 0x7ffd40ed2fc8} sigs = {__val = {32, 0 <repeats 15 times>}} #2 0x00007feac338cb25 in qt_message_fatal (context=..., message=<synthetic pointer>...) at global/qlogging.cpp:1907 No locals. #3 QMessageLogger::fatal (this=this@entry=0x7ffd40ed30b0, msg=msg@entry=0x7feab230fe30 "The Wayland connection broke. Did the Wayland compositor die?") at global/qlogging.cpp:888 message = <optimized out> ap = {{gp_offset = 16, fp_offset = 48, overflow_arg_area = 0x7ffd40ed30b0, reg_save_area = 0x7ffd40ed2ff0}} #4 0x00007feab225f84b in QtWaylandClient::QWaylandDisplay::checkError (this=<optimized out>) at /usr/include/qt5/QtCore/qlogging.h:91 ecode = <optimized out> #5 QtWaylandClient::QWaylandDisplay::checkError (this=<optimized out>) at qwaylanddisplay.cpp:192 ecode = <optimized out> #6 0x00007feab226f3fe in QtWaylandClient::QWaylandDisplay::flushRequests (this=0x5646466ed080) at qwaylanddisplay.cpp:210 No locals. #7 0x00007feac359c97b in QMetaObject::activate (sender=0x5646466fc220, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=<optimized out>) at kernel/qobject.cpp:3809 methodIndex = <optimized out> method_relative = <optimized out> callFunction = 0x7feab229c920 <QtWaylandClient::QWaylandDisplay::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)> receiver = 0x5646466ed080 receiverInSameThread = <optimized out> sw = {receiver = 0x5646466ed080, previousSender = 0x0, currentSender = {sender = 0x5646466fc220, signal = 4, ref = 1}, switched = true} c = 0x5646466f4750 last = 0x5646466f4750 locker = {val = 140646279238464} connectionLists = {connectionLists = 0x5646466edeb0} list = <optimized out> currentThreadId = 0x7feabf351840 signal_index = 4 empty_argv = {0x0} #8 0x00007feac35c78c7 in QEventDispatcherGlib::processEvents (this=0x5646466fc220, flags=...) at kernel/qeventdispatcher_glib.cpp:430 d = 0x5646466fe7f0 canWait = true savedFlags = {i = 0} result = <optimized out> #9 0x00007feac357123b in QEventLoop::exec (this=this@entry=0x7ffd40ed32b0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:140 d = 0x5646471fbf90 locker = {val = 94859829348144} ref = <optimized out> app = <optimized out> #10 0x00007feac3579116 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:120 threadData = 0x5646466e8620 eventLoop = {<QObject> = {_vptr.QObject = 0x7feac382da08 <vtable for QEventLoop+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7feac3716860 <qt_meta_stringdata_QObject>, data = 0x7feac3716740 <qt_meta_data_QObject>, static_metacall = 0x7feac35a4b70 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x5646471fbf90}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7feac3719780 <qt_meta_stringdata_Qt>, data = 0x7feac3716980 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7feac3825ba0 <QObject::staticMetaObject>, stringdata = 0x7feac3710ba0 <qt_meta_stringdata_QEventLoop>, data = 0x7feac3710b40 <qt_meta_data_QEventLoop>, static_metacall = 0x7feac3570f50 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}} returnCode = <optimized out> #11 0x00007feac3947360 in QGuiApplication::exec () at kernel/qguiapplication.cpp:1795 No locals. #12 0x00007feac3ee6a29 in QApplication::exec () at kernel/qapplication.cpp:2859 No locals. #13 0x00007feac4e44825 in kdemain (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/konsole5-19.12.1-1.fc31.x86_64/src/main.cpp:229 startupOption = <optimized out> app = <optimized out> about = {static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7feac468b3c0 <qt_meta_stringdata_KAboutData>, data = 0x7feac468b2c0 <qt_meta_data_KAboutData>, static_metacall = 0x7feac4629fe0 <KAboutData::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x564646702850} parser = {value = 0x564646701c60, d = 0x564646701c80} args = {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, <No data fields>}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x564646703cd0}, d = 0x564646703cd0}}, <No data fields>} customCommand = {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, <No data fields>}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7feac364aa80 <QListData::shared_null>}, d = 0x7feac364aa80 <QListData::shared_null>}}, <No data fields>} dbusService = {<QObject> = {_vptr.QObject = 0x7feac46c8048 <vtable for KDBusService+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7feac3716860 <qt_meta_stringdata_QObject>, data = 0x7feac3716740 <qt_meta_data_QObject>, static_metacall = 0x7feac35a4b70 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x56464670df60}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7feac3719780 <qt_meta_stringdata_Qt>, data = 0x7feac3716980 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7feac3825ba0 <QObject::staticMetaObject>, stringdata = 0x7feac46c3440 <qt_meta_stringdata_KDBusService>, data = 0x7feac46c3300 <qt_meta_data_KDBusService>, static_metacall = 0x7feac46b9f10 <KDBusService::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x56464670d730} migrate = {d = 0x56464670da20} konsoleApp = {<QObject> = {_vptr.QObject = 0x7feac4e610a8 <vtable for Konsole::Application+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7feac3716860 <qt_meta_stringdata_QObject>, data = 0x7feac3716740 <qt_meta_data_QObject>, static_metacall = 0x7feac35a4b70 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x56464670e210}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7feac3719780 <qt_meta_stringdata_Qt>, data = 0x7feac3716980 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7feac3825ba0 <QObject::staticMetaObject>, stringdata = 0x7feac4e557c0 <qt_meta_stringdata_Konsole__Application>, data = 0x7feac4e556e0 <qt_meta_data_Konsole__Application>, static_metacall = 0x7feac4e2bd40 <Konsole::Application::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, _backgroundInstance = 0x0, m_parser = {value = 0x564646701c60, d = 0x564646701c80}, m_customCommand = {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, <No data fields>}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7feac364aa80 <QListData::shared_null>}, d = 0x7feac364aa80 <QListData::shared_null>}}, <No data fields>}} ret = <optimized out> #14 0x00007feac4c6f1a3 in __libc_start_main (main=0x5646462ab070 <main>, argc=1, argv=0x7ffd40ed3568, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffd40ed3558) at ../csu/libc-start.c:308 self = <optimized out> result = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, -4508383311302644766, 94859824902272, 140725692740960, 0, 0, -7919284396209624094, -7911130630401840158}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x7ffd40ed3578, 0x7feac4eb0150}, data = {prev = 0x0, cleanup = 0x0, canceltype = 1089287544}}} not_first_call = <optimized out> #15 0x00005646462ab0ae in _start () No symbol table info available. ==cut==
#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