Bug 459414

Summary: workspace()->allClientList() is corrupted
Product: [Plasma] kwin Reporter: Nate Graham <nate>
Component: wayland-genericAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED DUPLICATE    
Severity: crash    
Priority: NOR    
Version: master   
Target Milestone: ---   
Platform: Other   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=459404
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Nate Graham 2022-09-19 22:20:19 UTC
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
Comment 1 Nate Graham 2022-09-19 23:03:56 UTC
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.
Comment 2 Vlad Zahorodnii 2022-09-20 07:57:32 UTC

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