Bug 473170 - Plasma crashes when dragging desktop files to Firefox (in native Wayland mode)
Summary: Plasma crashes when dragging desktop files to Firefox (in native Wayland mode)
Status: RESOLVED DUPLICATE of bug 470925
Alias: None
Product: plasmashell
Classification: Plasma
Component: Folder (show other bugs)
Version: master
Platform: Other Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: wayland
Depends on:
Blocks:
 
Reported: 2023-08-08 20:13 UTC by Nate Graham
Modified: 2023-08-13 15:45 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nate Graham 2023-08-08 20:13:25 UTC
100% reproducible for me. Backtrace:

#0  __GI___pthread_sigmask (how=1, newmask=<optimized out>, oldmask=0x0) at pthread_sigmask.c:43
#1  0x00007fae8245fd4d in __GI___sigprocmask
    (how=<optimized out>, set=<optimized out>, oset=<optimized out>)
    at ../sysdeps/unix/sysv/linux/sigprocmask.c:25
#2  0x00007fae85d93d18 in KCrash::setCrashHandler(void (*)(int)) (handler=handler@entry=0x0)
    at /home/nate/kde/src/kcrash/src/kcrash.cpp:407
#3  0x00007fae85d9488e in KCrash::defaultCrashHandler(int) (sig=11)
    at /home/nate/kde/src/kcrash/src/kcrash.cpp:611
#4  0x00007fae8245fb70 in <signal handler called> () at /lib64/libc.so.6
#5  0x00007fae8381e29d in QtPrivate::QExplicitlySharedDataPointerV2<QMapData<std::map<Qt::DropAction, QPixmap, std::less<Qt::DropAction>, std::allocator<std::pair<Qt::DropAction const, QPixmap> > > > >::operator bool() const (this=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/tools/qshareddata_impl.h:117
#6  QMap<Qt::DropAction, QPixmap>::find(Qt::DropAction const&) const
    (key=<optimized out>, this=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/tools/qmap.h:649
#7  QMap<Qt::DropAction, QPixmap>::constFind(Qt::DropAction const&) const
    (key=<optimized out>, this=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/tools/qmap.h:656
#8  QDrag::dragCursor(Qt::DropAction) const (this=0x0, action=action@entry=Qt::IgnoreAction)
    at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/gui/kernel/qdrag.cpp:282
#9  0x00007fae83821172 in QBasicDrag::updateCursor(Qt::DropAction)
    (this=0x1eec450, action=Qt::IgnoreAction)
    at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/gui/kernel/qsimpledrag.cpp:274
#10 0x00007fae841c8dfa in operator()
    (action=Qt::MoveAction, accepted=false, __closure=<optimized out>)
    at /usr/src/debug/qt6-qtwayland-6.5.2-1.fc38.x86_64/src/client/qwaylanddatadevice.cpp:105
#11 QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1>, QtPrivate::List<bool, Qt::DropAction>, void, QtWaylandClient::QWaylandDataDevice::startDrag(QMimeData*, Qt::DropActions, QtWaylandClient::QWaylandWindow*)::<lambda(bool, Qt::DropAction)> >::call (arg=<optimized out>, f=<optimized out>)
    at /usr/include/qt6/QtCore/qobjectdefs_impl.h:127
#12 QtPrivate::Functor<QtWaylandClient::QWaylandDataDevice::startDrag(QMimeData*, Qt::DropActions, QtWaylandClient::QWaylandWindow*)::<lambda(bool, Qt::DropAction)>, 2>::call<QtPrivate::List<bool, Qt::DropAction>, void> (arg=<optimized out>, f=<optimized out>)
    at /usr/include/qt6/QtCore/qobjectdefs_impl.h:241
#13 QtPrivate::QFunctorSlotObject<QtWaylandClient::QWaylandDataDevice::startDrag(QMimeData*, Qt::DropActions, QtWaylandClient::QWaylandWindow*)::<lambda(bool, Qt::DropAction)>, 2, QtPrivate::List<bool, Qt::DropAction>, 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:409
#14 0x00007fae82bde394 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7fff0d166220, r=0x1ef8bc0, this=0x4014980)
    at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#15 doActivate<false>(QObject*, int, void**) (sender=0x3429650, signal_index=5, argv=0x7fff0d166220)
    at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992
#16 0x00007fae82bd4e17 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
bject>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7fff0d166220)
    at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052
#17 0x00007fae841c46c9 in QtWaylandClient::QWaylandDataSource::dndResponseUpdated(bool, Qt::DropAction) (this=<optimized out>, _t1=<optimized out>, _t2=<optimized out>)
    at /usr/src/debug/qt6-qtwayland-6.5.2-1.fc38.x86_64/redhat-linux-build/src/client/WaylandClient_autogen/include/moc_qwaylanddatasource_p.cpp:238
#18 0x00007fae841b9f77 in QtWayland::wl_data_source::handle_target(void*, wl_data_source*, char const*) (data=0x3429660, object=<optimized out>, mime_type=0x7fae5c026d9c "")
    at /usr/src/debug/qt6-qtwayland-6.5.2-1.fc38.x86_64/redhat-linux-build/src/client/qwayland-wayland.cpp:734
#19 0x00007fae82291be6 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#20 0x00007fae8228e4bf in ffi_call_int
    (cif=cif@entry=0x7fff0d166480, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
#21 0x00007fae8229118e in ffi_call
    (cif=cif@entry=0x7fff0d166480, fn=<optimized out>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7fff0d166550) at ../src/x86/ffi64.c:710
#22 0x00007fae861dd431 in wl_closure_invoke
    (closure=closure@entry=0x7fae5c026cc0, flags=flags@entry=1, target=<optimized out>, 
    target@entry=0x2c57800, opcode=opcode@entry=0, data=<optimized out>)
    at ../../src/wayland/src/connection.c:1025
#23 0x00007fae861d9b79 in dispatch_event (display=display@entry=0x1ee7b70, queue=0x1ee7c60)
    at ../../src/wayland/src/wayland-client.c:1631
#24 0x00007fae861db374 in dispatch_queue (queue=0x1ee7c60, display=0x1ee7b70)
    at ../../src/wayland/src/wayland-client.c:1777
#25 wl_display_dispatch_queue_pending (display=0x1ee7b70, queue=0x1ee7c60)
    at ../../src/wayland/src/wayland-client.c:2019
#26 0x00007fae8418318d in QtWaylandClient::QWaylandDisplay::flushRequests() (this=<optimized out>)
    at /usr/src/debug/qt6-qtwayland-6.5.2-1.fc38.x86_64/src/client/qwaylanddisplay.cpp:234
#27 0x00007fae82bde908 in doActivate<false>(QObject*, int, void**)
    (sender=0x1ee3f80, signal_index=4, argv=0x7fff0d166788)
    at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/kernel/qobject.cpp:4004
#28 0x00007fae82bd4e17 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x1ee3f80, m=m@entry=0x7fae83007ac0 <QAbstractEventDispatcher::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x0)
    at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052
#29 0x00007fae82b799e7 in QAbstractEventDispatcher::awake() (this=this@entry=0x1ee3f80)
    at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/redhat-linux-build/src/corelib/Core_autogen/include/moc_qabstracteventdispatcher.cpp:182
#30 0x00007fae82e2096b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
    (this=0x1ee3f80, flags=...)
    at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:400
#31 0x00007fae82b899f3 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
    (this=this@entry=0x7fff0d1668c0, flags=..., flags@entry=...)
    at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/global/qflags.h:34
#32 0x00007fae82b8569d in QCoreApplication::exec() ()
    at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/global/qflags.h:74
#33 0x00007fae833f917d in QGuiApplication::exec() ()
    at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/gui/kernel/qguiapplication.cpp:1908
#34 0x00007fae843c0a69 in QApplication::exec() ()
    at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/widgets/kernel/qapplication.cpp:2566
#35 0x0000000000424b59 in main(int, char**) (argc=<optimized out>, argv=<optimized out>)
    at /home/nate/kde/src/plasma-workspace/shell/main.cpp:236
Comment 1 Tsu Jan 2023-08-13 14:30:38 UTC
This might be related if the issue happens with Qt6:

Qt 6.5.2 seems to have a serious regression regarding drag-and-drop under Wayland (not just Plasma-Wayland). I can reproduce its DND problem under various Wayland compositors and with all Qt6 apps which support DND; it can easily result in crashes in those apps. See https://github.com/lxqt/pcmanfm-qt/issues/1800#issuecomment-1671294865 for a general backtrace.
Comment 2 Nate Graham 2023-08-13 15:11:42 UTC
Ahh of course, it's Bug 470925. It's fixed in Qt 6.6.

*** This bug has been marked as a duplicate of bug 470925 ***
Comment 3 Tsu Jan 2023-08-13 15:34:25 UTC
> Ahh of course, it's Bug 470925. It's fixed in Qt 6.6.

Thanks for the info! We needed it in LXQt.
Comment 4 Nate Graham 2023-08-13 15:45:48 UTC
No problem!