Bug 487425 - PlasmaShell Wayland crashes when trying to drag things
Summary: PlasmaShell Wayland crashes when trying to drag things
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: generic-crash (other bugs)
Version First Reported In: 6.0.4
Platform: Arch Linux Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: drkonqi, wayland-only
: 487427 (view as bug list)
Depends on:
Blocks:
 
Reported: 2024-05-23 11:36 UTC by yurapostates
Modified: 2024-05-24 22:55 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In: 6.1
Sentry Crash Report:


Attachments
New crash information added by DrKonqi (246.88 KB, text/plain)
2024-05-23 11:36 UTC, yurapostates
Details

Note You need to log in before you can comment on or make changes to this bug.
Description yurapostates 2024-05-23 11:36:47 UTC
Application: plasmashell (6.0.4)

Qt Version: 6.7.0
Frameworks Version: 6.2.0
Operating System: Linux 6.9.1-zen1-1-zen x86_64
Windowing System: Wayland
Distribution: "Arch Linux"
DrKonqi: 6.0.4 [CoredumpBackend]

-- Information about the crash:
This is what causes the crash:
1) Take a screenshot using Spectacle
2) Drag and drop the resulting screenshot to a Firefox page, accepting image upload
3) Plasmashell crashes but recovers immediately
The Firefox is also Wayland, this happens on an HDR main screen, I have two other screens with which I don't interact in the crash. It doesn't happen all the time, but what I always notice is that this sequence of events is quite laggier than X11. As in drag and dropping a file to Firefox doesn't work unless you hover for a couple of seconds more.

The crash can be reproduced sometimes.

-- Backtrace (Reduced):
#5  std::__atomic_base<QMutexPrivate*>::load (this=0x720074002d00c6, __m=std::memory_order_relaxed) at /usr/include/c++/14.1.1/bits/atomic_base.h:831
#6  std::atomic<QMutexPrivate*>::load (this=0x720074002d00c6, __m=std::memory_order_relaxed) at /usr/include/c++/14.1.1/atomic:582
#7  QAtomicOps<QMutexPrivate*>::loadRelaxed<QMutexPrivate*> (_q_value=<error reading variable: Cannot access memory at address 0x720074002d00c6>) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qatomic_cxx11.h:202
#8  QBasicAtomicPointer<QMutexPrivate>::loadRelaxed (this=0x720074002d00c6) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qbasicatomic.h:170
#9  QBasicMutex::fastTryLock (this=0x720074002d00c6) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qmutex.h:77


Reported using DrKonqi
Comment 1 yurapostates 2024-05-23 11:36:49 UTC
Created attachment 169739 [details]
New crash information added by DrKonqi

DrKonqi auto-attaching complete backtrace.
Comment 2 Nate Graham 2024-05-23 20:24:39 UTC
Thread 1 (Thread 0x73579fda1a00 (LWP 1803)):
[KCrash Handler]
#5  std::__atomic_base<QMutexPrivate*>::load (this=0x720074002d00c6, __m=std::memory_order_relaxed) at /usr/include/c++/14.1.1/bits/atomic_base.h:831
#6  std::atomic<QMutexPrivate*>::load (this=0x720074002d00c6, __m=std::memory_order_relaxed) at /usr/include/c++/14.1.1/atomic:582
#7  QAtomicOps<QMutexPrivate*>::loadRelaxed<QMutexPrivate*> (_q_value=<error reading variable: Cannot access memory at address 0x720074002d00c6>) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qatomic_cxx11.h:202
#8  QBasicAtomicPointer<QMutexPrivate>::loadRelaxed (this=0x720074002d00c6) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qbasicatomic.h:170
#9  QBasicMutex::fastTryLock (this=0x720074002d00c6) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qmutex.h:77
#10 QBasicMutex::lock (this=0x720074002d00c6) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qmutex.h:40
#11 std::unique_lock<QMutex>::lock (this=<synthetic pointer>) at /usr/include/c++/14.1.1/bits/unique_lock.h:147
#12 std::unique_lock<QMutex>::unique_lock (this=<synthetic pointer>, __m=...) at /usr/include/c++/14.1.1/bits/unique_lock.h:73
#13 (anonymous namespace)::qt_unique_lock<QMutex> (mutex=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qlocking_p.h:66
#14 QCoreApplicationPrivate::lockThreadPostEventList (object=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1623
#15 0x00007357a4b940b9 in QObject::deleteLater (this=0x57076e2532e0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:2450
#16 0x00007357a571b26e in QBasicDrag::eventFilter (this=0x570765baaed0, o=<optimized out>, e=0x7ffc4499cfb0) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qsimpledrag.cpp:109
#17 0x00007357a6bc560b in QtWaylandClient::QWaylandDrag::finishDrag (this=0x570765baaed0) at /usr/src/debug/qt6-wayland/qtwayland-everywhere-src-6.7.0/src/client/qwaylanddnd.cpp:96
#18 0x00007357a6bc5aaa in operator() (__closure=0x57076eb25560) at /usr/src/debug/qt6-wayland/qtwayland-everywhere-src-6.7.0/src/client/qwaylanddatadevice.cpp:136
#19 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, QtWaylandClient::QWaylandDataDevice::startDrag(QMimeData*, Qt::DropActions, QtWaylandClient::QWaylandWindow*)::<lambda()> >::call (arg=<optimized out>, f=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:137
#20 QtPrivate::FunctorCallable<QtWaylandClient::QWaylandDataDevice::startDrag(QMimeData*, Qt::DropActions, QtWaylandClient::QWaylandWindow*)::<lambda()> >::call<QtPrivate::List<>, void> (arg=<optimized out>, f=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:345
#21 QtPrivate::QCallableObject<QtWaylandClient::QWaylandDataDevice::startDrag(QMimeData*, Qt::DropActions, QtWaylandClient::QWaylandWindow*)::<lambda()>, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x57076eb25550, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:555
#22 0x00007357a4ba1e3e in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=0x570765ba86a0, a=0x7ffc4499d0c8, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:469
#23 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4078
#24 0x00007357a6334596 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#25 0x00007357a633100e in ffi_call_int (cif=cif@entry=0x7ffc4499d2d0, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
#26 0x00007357a6333bd3 in ffi_call (cif=cif@entry=0x7ffc4499d2d0, fn=<optimized out>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7ffc4499d3a0) at ../src/x86/ffi64.c:710
#27 0x00007357a7659645 in wl_closure_invoke (closure=closure@entry=0x73578c040710, target=<optimized out>, target@entry=0x570767eceaf0, opcode=opcode@entry=4, data=<optimized out>, flags=1) at ../wayland-1.22.0/src/connection.c:1025
#28 0x00007357a7659e73 in dispatch_event (display=display@entry=0x570765b9bc30, queue=0x570765b9bd20) at ../wayland-1.22.0/src/wayland-client.c:1631
#29 0x00007357a765a13c in dispatch_queue (queue=0x570765b9bd20, display=0x570765b9bc30) at ../wayland-1.22.0/src/wayland-client.c:1777
#30 wl_display_dispatch_queue_pending (display=0x570765b9bc30, queue=0x570765b9bd20) at ../wayland-1.22.0/src/wayland-client.c:2019
#31 0x00007357a6b79b5e in QtWaylandClient::EventThread::readAndDispatchEvents (this=0x570765bb0730) at /usr/src/debug/qt6-wayland/qtwayland-everywhere-src-6.7.0/src/client/qwaylanddisplay.cpp:227
#32 0x00007357a4b8c8a6 in QObject::event (this=0x570765b99200, e=0x73579000b6a0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:1446
#33 0x00007357a6cfc4dc in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x570765b99200, e=0x73579000b6a0) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3287
#34 0x00007357a4b45678 in QCoreApplication::notifyInternal2 (receiver=0x570765b99200, event=event@entry=0x73579000b6a0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1142
#35 0x00007357a4b45a3b in QCoreApplication::sendEvent (receiver=<optimized out>, event=0x73579000b6a0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1583
#36 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x570765b66ba0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1940
#37 0x00007357a4da45dc in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1797
#38 postEventSourceDispatch (s=0x570765b97ba0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:244
#39 0x00007357a3948a89 in g_main_dispatch (context=0x735798000f00) at ../glib/glib/gmain.c:3344
#40 0x00007357a39aa9b7 in g_main_context_dispatch_unlocked (context=0x735798000f00) at ../glib/glib/gmain.c:4152
#41 g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x735798000f00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4217
#42 0x00007357a3947f95 in g_main_context_iteration (context=0x735798000f00, may_block=1) at ../glib/glib/gmain.c:4282
#43 0x00007357a4da28ad in QEventDispatcherGlib::processEvents (this=0x570765bad120, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:394
#44 0x00007357a4b4f94e in QEventLoop::processEvents (this=0x57076e54fb10, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:100
#45 QEventLoop::exec (this=this@entry=0x57076e54fb10, flags=..., flags@entry=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:182
#46 0x00007357a571713b in QBasicDrag::drag (this=0x570765baaed0, o=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qflags.h:74
#47 0x00007357a571833d in QDragManager::drag (this=0x570767dc2020, o=o@entry=0x57076e2532e0) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qdnd.cpp:81
#48 0x00007357a5718540 in QDrag::exec (this=<optimized out>, supportedActions=..., defaultDropAction=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qdrag.cpp:248
#49 QDrag::exec (this=this@entry=0x57076e2532e0, supportedActions=..., supportedActions@entry=...) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qdrag.cpp:203
#50 0x00007357a6808b23 in QQuickDragAttachedPrivate::startDrag (this=0x57076eb8c6c0, supportedActions=...) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.7.0/src/quick/items/qquickdrag.cpp:776
#51 0x00007357a6809a73 in QQuickDragAttached::qt_metacall (this=0x570766069ab0, _c=QMetaObject::WriteProperty, _id=0, _a=0x7ffc4499db80) at /usr/src/debug/qt6-declarative/build/src/quick/Quick_autogen/include/moc_qquickdrag_p.cpp:898
#52 0x00007357a603a558 in QQmlPropertyData::doMetacall<(QMetaObject::Call)2> (this=<optimized out>, argv=0x7ffc4499db80, idx=<optimized out>, object=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.7.0/src/qml/qml/qqmlpropertydata_p.h:360
#53 QQmlPropertyData::doMetacall<(QMetaObject::Call)2> (this=<optimized out>, argv=0x7ffc4499db80, idx=<optimized out>, object=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.7.0/src/qml/qml/qqmlpropertydata_p.h:355
#54 QQmlPropertyData::writeProperty (this=<optimized out>, target=<optimized out>, value=<optimized out>, flags=...) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.7.0/src/qml/qml/qqmlpropertydata_p.h:378
#55 0x00007357a60e32f9 in tryConvertAndAssign (isUrl=<optimized out>, variantMetaType=..., propertyMetaType=..., flags=..., value=<optimized out>, property=<optimized out>, object=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.7.0/src/qml/qml/qqmlproperty.cpp:1393
#56 QQmlPropertyPrivate::write (object=0x570766069ab0, property=..., value=..., context=..., flags=...) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.7.0/src/qml/qml/qqmlproperty.cpp:1532
#57 0x00007357a5fb6e5e in QV4::QObjectWrapper::setProperty (engine=engine@entry=0x5707660d1700, object=object@entry=0x570766069ab0, property=0x7357345d5f30, value=...) at /usr/include/qt6/QtCore/qflags.h:73
#58 0x00007357a5fb752e in QV4::QObjectWrapper::setQmlProperty (engine=0x5707660d1700, qmlContext=<optimized out>, object=0x570766069ab0, name=<optimized out>, flags=..., value=...) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.7.0/src/qml/jsruntime/qv4qobjectwrapper.cpp:567
#59 0x00007357a6147800 in QV4::QQmlTypeWrapper::virtualPut (m=<optimized out>, id=..., value=..., receiver=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.7.0/src/qml/qml/qqmltypewrapper.cpp:327
#60 0x00007357a5f8e163 in QV4::Lookup::setterFallback (l=0x5707686ac300, engine=0x5707660d1700, object=<optimized out>, value=...) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.7.0/src/qml/jsruntime/qv4lookup.cpp:591
#61 0x00007357a6008f99 in QV4::Moth::VME::interpret (frame=0x7ffc4499e540, engine=0x5707660d1700, code=0x73577b4be7e2 "\016\002") at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.7.0/src/qml/jsruntime/qv4vme_moth.cpp:321
#62 0x00007357a600c1c4 in QV4::Moth::VME::exec (frame=<optimized out>, engine=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.7.0/src/qml/jsruntime/qv4vme_moth.cpp:487
#63 0x00007357a5f7e3d8 in qfoDoCall (fo=<optimized out>, thisObject=<optimized out>, argv=<optimized out>, argc=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.7.0/src/qml/jsruntime/qv4functionobject.cpp:526
#64 0x00007357a5f220e3 in QV4::FunctionObject::call (argc=<optimized out>, argv=<optimized out>, thisObject=0x73576fbbf4e8, this=0x735780be0480) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.7.0/src/qml/jsruntime/qv4functionobject_p.h:171
#65 QV4::FunctionObject::call (data=<optimized out>, this=0x735780be0480) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.7.0/src/qml/jsruntime/qv4jscall_p.h:108
#66 QJSValue::call (this=this@entry=0x73579000e718, args=...) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.7.0/src/qml/jsapi/qjsvalue.cpp:713
#67 0x00007357a65b60be in QQuickItemGrabResult::event (this=0x57076ba57ba0, e=<optimized out>) at /usr/include/qt6/QtCore/qlist.h:113
#68 0x00007357a6cfc4dc in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x57076ba57ba0, e=0x7355245c7150) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3287
#69 0x00007357a4b45678 in QCoreApplication::notifyInternal2 (receiver=0x57076ba57ba0, event=event@entry=0x7355245c7150) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1142
#70 0x00007357a4b45a3b in QCoreApplication::sendEvent (receiver=<optimized out>, event=0x7355245c7150) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1583
#71 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x570765b66ba0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1940
#72 0x00007357a4da45dc in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1797
#73 postEventSourceDispatch (s=0x570765b97ba0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:244
#74 0x00007357a3948a89 in g_main_dispatch (context=0x735798000f00) at ../glib/glib/gmain.c:3344
#75 0x00007357a39aa9b7 in g_main_context_dispatch_unlocked (context=0x735798000f00) at ../glib/glib/gmain.c:4152
#76 g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x735798000f00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4217
#77 0x00007357a3947f95 in g_main_context_iteration (context=0x735798000f00, may_block=1) at ../glib/glib/gmain.c:4282
#78 0x00007357a4da28ad in QEventDispatcherGlib::processEvents (this=0x570765bad120, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:394
#79 0x00007357a4b4f94e in QEventLoop::processEvents (this=0x7ffc4499ead0, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:100
#80 QEventLoop::exec (this=0x7ffc4499ead0, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:182
#81 0x00007357a4b49c9d in QCoreApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qflags.h:74
#82 0x00007357a6cf837a in QApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:2555
#83 0x0000570754bf02a3 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/plasma-workspace/plasma-workspace-6.0.4/shell/main.cpp:214
Comment 3 Nate Graham 2024-05-23 20:35:04 UTC
*** Bug 487427 has been marked as a duplicate of this bug. ***
Comment 4 Nate Graham 2024-05-23 20:38:02 UTC
We fixed a drag-and-drop thing with Spectacle in Bug 486665, which only landed in Plasma 6.1. The backtrace looks different enough that I'm not comfortable marking this as a duplicate. Still, it would be good if affected folks could try to reproduce the issue in Plasma 6.1 once it's released, or else with current git master right now.
Comment 5 Akseli Lahtinen 2024-05-24 07:50:08 UTC
Where is the drag and drop started? Spectacle window? Or the notification popup?
Comment 6 yurapostates 2024-05-24 08:05:25 UTC
(In reply to Akseli Lahtinen from comment #5)
> Where is the drag and drop started? Spectacle window? Or the notification
> popup?

From the image of the notification popup, but I can't reproduce it every time.
Comment 7 Nate Graham 2024-05-24 22:55:55 UTC
Ok, that makes it the Qt drag-and-drop crash, which is fixed in Plasma 6.1.