I'm running KWin with a patch provided by Vlad Zahorodnii for debugging Bug 459404. With this patch, I get crashes in the "workspace()->allClientList() is corrupted" condition. I can reproduce it 100% by clicking on the OK button for the event editor window in the Charm time tracker app after changing any times. Here's a backtrace: #0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44 Downloading 0.00 MB source file /usr/src/debug/glibc-2.35-17.fc36.x86_64/nptl/pthread_kill.c 44 return INTERNAL_SYSCALL_ERROR_P (ret) ? INTERNAL_SYSCALL_ERRNO (ret) : 0; [Current thread is 1 (Thread 0x7f32c372c980 (LWP 9930))] (gdb) bt #0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44 #1 0x00007f32c708ecb3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78 #2 0x00007f32c703e9c6 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #3 0x00007f32c70287f4 in __GI_abort () at abort.c:79 #4 0x00007f32c8ab14f5 in qt_message_fatal (message=<synthetic pointer>..., context=<optimized out>) at global/qlogging.cpp:1914 #5 QMessageLogger::fatal(char const*, ...) const (this=this@entry=0x7ffcbcd65620, msg=msg@entry=0x7f32ca9001b8 "workspace()->allClientList() is corrupted") at global/qlogging.cpp:893 #6 0x00007f32ca578ff2 in KWin::Window::~Window() (this=this@entry=0x1b26a30, __in_chrg=<optimized out>) at /home/nate/kde/src/kwin/src/window.cpp:125 #7 0x00007f32ca5b12d4 in KWin::WaylandWindow::~WaylandWindow() (this=0x1b26a30, __in_chrg=<optimized out>) at /home/nate/kde/build/kwin/src/kwin_autogen/EWIEGA46WW/../../../../../src/kwin/src/waylandwindow.h:14 #8 KWin::InputPanelV1Window::~InputPanelV1Window() (this=0x1b26a30, __in_chrg=<optimized out>) at /home/nate/kde/build/kwin/src/kwin_autogen/EWIEGA46WW/../../../../../src/kwin/src/inputpanelv1window.h:20 #9 KWin::InputPanelV1Window::~InputPanelV1Window() (this=0x1b26a30, __in_chrg=<optimized out>) at /home/nate/kde/build/kwin/src/kwin_autogen/EWIEGA46WW/../../../../../src/kwin/src/inputpanelv1window.h:20 #10 0x00007f32ca63c68f in KWin::InputPanelV1Window::destroyWindow() (this=0x1b26a30) at /home/nate/kde/src/kwin/src/inputpanelv1window.cpp:151 #11 0x00007f32c8cdb8b6 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffcbcd65720, r=<optimized out>, this=0x1b7a3f0) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #12 doActivate<false>(QObject*, int, void**) (sender=0x1b50320, signal_index=3, argv=0x7ffcbcd65720) at kernel/qobject.cpp:3886 #13 0x00007f32c8cd68b7 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=<optimized out>, m=m@entry=0x7f32caa2af40 <KWaylandServer::SurfaceInterface::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x0) at kernel/qobject.cpp:3946 #14 0x00007f32ca58a070 in KWaylandServer::SurfaceInterface::aboutToBeDestroyed() (this=<optimized out>) at /home/nate/kde/build/kwin/src/kwin_autogen/IEXH3JLKNG/moc_surface_interface.cpp:427 #15 0x00007f32ca811e9d in KWaylandServer::SurfaceInterfacePrivate::surface_destroy_resource(QtWaylandServer::wl_surface::Resource*) (this=0x1c906c0) at /home/nate/kde/src/kwin/src/wayland/surface_interface.cpp:240 #16 0x00007f32ca854310 in QtWaylandServer::wl_surface::destroy_func(wl_resource*) (client_resource=<optimized out>) at /home/nate/kde/build/kwin/src/wayland/qwayland-server-wayland.cpp:3390 #17 0x00007f32c886bde7 in destroy_resource (element=element@entry=0xafa600, data=data@entry=0x0, flags=0) at ../src/wayland-server.c:727 #18 0x00007f32c886c480 in wl_resource_destroy (resource=0xafa600) at ../src/wayland-server.c:744 #19 0x00007f32c5e44746 in ffi_call_unix64 () at ../src/x86/unix64.S:105 #20 0x00007f32c5e414d2 in ffi_call_int (cif=<optimized out>, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=<optimized out>) at ../src/x86/ffi64.c:672 #21 0x00007f32c88711e1 in wl_closure_invoke (closure=closure@entry=0x1b26e90, flags=flags@entry=2, target=<optimized out>, target@entry=0xafa600, opcode=opcode@entry=0, data=<optimized out>, data@entry=0x1a1e5c0) at ../src/connection.c:1025 #22 0x00007f32c886ca1a in wl_client_connection_data (fd=<optimized out>, mask=<optimized out>, data=0x1a1e5c0) at ../src/wayland-server.c:437 #23 0x00007f32c886f2f2 in wl_event_loop_dispatch (loop=0x993610, timeout=<optimized out>) at ../src/event-loop.c:1027 #24 0x00007f32ca7dd1f7 in KWaylandServer::Display::dispatchEvents() (this=<optimized out>) at /home/nate/kde/src/kwin/src/wayland/display.cpp:114 #25 0x00007f32c8cdb8b6 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffcbcd65ef0, r=<optimized out>, this=0x16da3b0) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #26 doActivate<false>(QObject*, int, void**) (sender=0x16be890, signal_index=3, argv=0x7ffcbcd65ef0) at kernel/qobject.cpp:3886 #27 0x00007f32c8cd68b7 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x16be890, m=m@entry=0x7f32c8f6d440 <QSocketNotifier::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffcbcd65ef0) at kernel/qobject.cpp:3946 #28 0x00007f32c8cde133 in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) (this=this@entry=0x16be890, _t1=..., _t2=<optimized out>, _t3=...) at .moc/moc_qsocketnotifier.cpp:178 #29 0x00007f32c8cde955 in QSocketNotifier::event(QEvent*) (this=0x16be890, e=<optimized out>) at kernel/qsocketnotifier.cpp:302 #30 0x00007f32c79aed22 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x16be890, e=0x7ffcbcd65ff0) at kernel/qapplication.cpp:3637 #31 0x00007f32c8ca8218 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x16be890, event=0x7ffcbcd65ff0) at kernel/qcoreapplication.cpp:1064 #32 0x00007f32c8cf63de in QEventDispatcherUNIXPrivate::activateSocketNotifiers() (this=0x953480) at kernel/qeventdispatcher_unix.cpp:304 #33 0x00007f32c8cf681d in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...) at kernel/qeventdispatcher_unix.cpp:511 #34 0x000000000052c501 in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () #35 0x00007f32c8ca6c6a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffcbcd66160, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69 #36 0x00007f32c8caed32 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #37 0x00007f32c915fb70 in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1860 #38 0x00007f32c79aec99 in QApplication::exec() () at kernel/qapplication.cpp:2829 #39 0x0000000000444317 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/nate/kde/src/kwin/src/main_wayland.cpp:613
Reverting fa538edc74c377ef79d8c50ae8bb0a213e36cc11 fixes this 100% reproducible crash for me. It might also fix the crashes reported in Bug 459404, but those are less reproducible, so I'll have to test for a while.
*** This bug has been marked as a duplicate of bug 459404 ***