Summary: | KWin crashes in KWin::AbstractDataSource::setKeyboardModifiers() after wl_data_device.start_drag request with source set to NULL | ||
---|---|---|---|
Product: | [Plasma] kwin | Reporter: | acct_cl |
Component: | Wayland drag-and-drop | Assignee: | KWin default assignee <kwin-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | kdedev, nate |
Priority: | NOR | ||
Version First Reported In: | 6.3.4 | ||
Target Milestone: | --- | ||
Platform: | Arch Linux | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/plasma/kwin/-/commit/353292dacb3a1089003d3d70364634a669f0e07d | Version Fixed In: | 6.3.5 |
Sentry Crash Report: | |||
Attachments: | Example applications that reproduces the issue |
Description
acct_cl
2025-04-06 23:14:32 UTC
*** Bug 502497 has been marked as a duplicate of this bug. *** Thank you for the very detailed bug report and the example application. Unfortunately the backtrace is incomplete and missing debug symbols for the following lines that we need to figure out exactly what's going wrong: #6 0x00007f384dc30183 in ??? () at /usr/lib/libkwin.so.6 #7 0x00007f384b1b3f1c in ??? () at /usr/lib/libQt6Core.so.6 Could you please install debug symbols and attach a new symbolicated backtrace generated by using `coredumpctl gdb` in a terminal window? See https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports#Retrieving_a_backtrace_using_coredumpctl for details about how to do this. Thanks again! My bad, here is the backtrace for this thread with debug symbols: Thread 1 (Thread 0x7cc708988a40 (LWP 366204)): #0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=11, no_tid=no_tid@entry=0) at pthread_kill.c:44 #1 0x00007cc70eaa56d3 in __pthread_kill_internal (threadid=<optimized out>, signo=11) at pthread_kill.c:89 #2 0x00007cc70ea4bba0 in __GI_raise (sig=11) at ../sysdeps/posix/raise.c:26 #3 0x00007cc7124804da in KCrash::defaultCrashHandler (sig=11) at /usr/src/debug/kcrash/kcrash-6.12.0/src/kcrash.cpp:605 #4 0x00007cc70ea4bcd0 in <signal handler called> () at /usr/lib/libc.so.6 #5 KWin::AbstractDataSource::setKeyboardModifiers (this=0x0, heldModifiers=...) at /usr/src/debug/kwin/kwin-6.3.4/src/wayland/abstract_data_source.cpp:19 #6 0x00007cc711e311e3 in KWin::DragAndDropInputFilter::DragAndDropInputFilter()::{lambda()#1}::operator()() const (__closure=<optimized out>) at /usr/src/debug/kwin/kwin-6.3.4/src/input.cpp:2500 #7 QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, KWin::DragAndDropInputFilter::DragAndDropInputFilter()::{lambda()#1}>::call(KWin::DragAndDropInputFilter::DragAndDropInputFilter()::{lambda()#1}&, void**)::{lambda()#1}::operator()() const (__closure=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:116 #8 QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, KWin::DragAndDropInputFilter::DragAndDropInputFilter()::{lambda()#1}>::call(KWin::DragAndDropInputFilter::DragAndDropInputFilter()::{lambda()#1}&, void**)::{lambda()#1}>(void**, QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, KWin::DragAndDropInputFilter::DragAndDropInputFilter()::{lambda()#1}>::call(KWin::DragAndDropInputFilter::DragAndDropInputFilter()::{lambda()#1}&, void**)::{lambda()#1}&&) (args=<optimized out>, fn=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:65 #9 QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, KWin::DragAndDropInputFilter::DragAndDropInputFilter()::{lambda()#1}>::call(KWin::DragAndDropInputFilter::DragAndDropInputFilter()::{lambda()#1}&, void**) (f=<optimized out>, arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:115 #10 QtPrivate::FunctorCallable<KWin::DragAndDropInputFilter::DragAndDropInputFilter()::{lambda()#1}>::call<QtPrivate::List<>, void>(KWin::DragAndDropInputFilter::DragAndDropInputFilter()::{lambda()#1}&, void*, void**) (f=<optimized out>, arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:337 #11 QtPrivate::QCallableObject<KWin::DragAndDropInputFilter::DragAndDropInputFilter()::{lambda()#1}, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=<optimized out>, this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:547 #12 0x00007cc70f1b6cc9 in QtPrivate::QSlotObjectBase::call (this=0x5d8186c7b5d0, r=0x5d8186c65930, a=0x7ffd4994e678, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461 #13 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4138 #14 0x00007cc7120fbd58 in KWin::SeatInterface::startDrag (this=0x5d81864ae680, dragSource=<optimized out>, originSurface=0x5d8187c167e0, dragSerial=<optimized out>, dragIcon=<optimized out>) at /usr/src/debug/kwin/kwin-6.3.4/src/wayland/seat.cpp:1356 #15 KWin::SeatInterface::startDrag (this=0x5d81864ae680, dragSource=<optimized out>, originSurface=<optimized out>, dragSerial=<optimized out>, dragIcon=<optimized out>) at /usr/src/debug/kwin/kwin-6.3.4/src/wayland/seat.cpp:1316 #16 0x00007cc70f1b6cc9 in QtPrivate::QSlotObjectBase::call (this=0x5d8187aa5a50, r=0x5d81864ae680, a=0x7ffd4994e840, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461 #17 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4138 #18 0x00007cc71209ebf8 in QMetaObject::activate<void, KWin::AbstractDataSource*, KWin::SurfaceInterface*, unsigned int, KWin::DragAndDropIcon*> (sender=<optimized out>, mo=<optimized out>, local_signal_index=1, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs.h:306 #19 KWin::DataDeviceInterface::dragStarted (this=<optimized out>, _t1=<optimized out>, _t2=<optimized out>, _t3=<optimized out>, _t4=<optimized out>) at /usr/src/debug/kwin/build/src/kwin_autogen/include/moc_datadevice.cpp:243 #20 0x00007cc70d418976 in ffi_call_unix64 () at ../src/x86/unix64.S:104 #21 0x00007cc70d41512c in ffi_call_int (cif=cif@entry=0x7ffd4994ea30, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:676 #22 0x00007cc70d417f0e in ffi_call (cif=cif@entry=0x7ffd4994ea30, fn=<optimized out>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7ffd4994eb00) at ../src/x86/ffi64.c:713 #23 0x00007cc710120e85 in wl_closure_invoke (closure=closure@entry=0x5d8188f38080, target=<optimized out>, target@entry=0x5d81883294e0, opcode=opcode@entry=0, data=<optimized out>, data@entry=0x5d8188c5b650, flags=2) at ../wayland-1.23.1/src/connection.c:1228 #24 0x00007cc710125d22 in wl_client_connection_data (fd=<optimized out>, mask=<optimized out>, data=0x5d8188c5b650) at ../wayland-1.23.1/src/wayland-server.c:444 #25 0x00007cc710124112 in wl_event_loop_dispatch (loop=0x5d81864a6c60, timeout=<optimized out>) at ../wayland-1.23.1/src/event-loop.c:1105 #26 0x00007cc7120a8d2a in KWin::Display::dispatchEvents (this=<optimized out>) at /usr/src/debug/kwin/kwin-6.3.4/src/wayland/display.cpp:121 #27 0x00007cc70f1b6cc9 in QtPrivate::QSlotObjectBase::call (this=0x5d8186e13090, r=0x5d81864cd010, a=0x7ffd4994f220, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461 #28 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4138 #29 0x00007cc70f1bee7e in QMetaObject::activate<void, QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal> (sender=0x5d8186e0ce20, mo=<optimized out>, local_signal_index=0, ret=0x0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs.h:306 #30 QSocketNotifier::activated (this=0x5d8186e0ce20, _t1=..., _t2=<optimized out>, _t3=...) at /usr/src/debug/qt6-base/build/src/corelib/Core_autogen/include/moc_qsocketnotifier.cpp:161 #31 QSocketNotifier::event (this=0x5d8186e0ce20, e=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qsocketnotifier.cpp:327 #32 0x00007cc7104fed9e in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5d8186e0ce20, e=0x7ffd4994f330) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3301 #33 0x00007cc70f15a018 in QCoreApplication::notifyInternal2 (receiver=0x5d8186e0ce20, event=0x7ffd4994f330) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1106 #34 0x00007cc70f2e28d8 in QCoreApplication::sendEvent (receiver=<optimized out>, event=0x7ffd4994f330) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1546 #35 QEventDispatcherUNIXPrivate::activateSocketNotifiers (this=this@entry=0x5d818640c600) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp:254 #36 0x00007cc70f2e3412 in QEventDispatcherUNIX::processEvents (this=<optimized out>, flags=..., flags@entry=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp:470 #37 0x00007cc70fe72943 in QUnixEventDispatcherQPA::processEvents (this=<optimized out>, flags=...) at /usr/src/debug/qt6-base/qtbase/src/gui/platform/unix/qunixeventdispatcher.cpp:27 #38 0x00007cc70f165376 in QEventLoop::processEvents (this=0x7ffd4994f510, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:104 #39 QEventLoop::exec (this=0x7ffd4994f510, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:186 #40 0x00007cc70f15d159 in QCoreApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qflags.h:77 #41 0x00007cc7104fb14a in QApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:2568 #42 0x00005d817f48e0a1 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kwin/kwin-6.3.4/src/main_wayland.cpp:622 A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/7463 Git commit 1780044677bdf814249149fa8dfa8b4cca953d6f by Vlad Zahorodnii. Committed on 09/04/2025 at 05:45. Pushed by vladz into branch 'master'. Avoid synchronizing keyboard modifiers if dnd source is null This is allowed by the spec. M +4 -2 src/input.cpp https://invent.kde.org/plasma/kwin/-/commit/1780044677bdf814249149fa8dfa8b4cca953d6f Git commit 353292dacb3a1089003d3d70364634a669f0e07d by Vlad Zahorodnii. Committed on 09/04/2025 at 06:01. Pushed by vladz into branch 'Plasma/6.3'. Avoid synchronizing keyboard modifiers if dnd source is null This is allowed by the spec. (cherry picked from commit 1780044677bdf814249149fa8dfa8b4cca953d6f) Co-authored-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org> M +4 -2 src/input.cpp https://invent.kde.org/plasma/kwin/-/commit/353292dacb3a1089003d3d70364634a669f0e07d |