Bug 467467 - Plasmashell crashes when trying to drag screenshot from notification to application.
Summary: Plasmashell crashes when trying to drag screenshot from notification to appli...
Status: RESOLVED DUPLICATE of bug 470925
Alias: None
Product: plasmashell
Classification: Plasma
Component: Notifications (show other bugs)
Version: 5.27.3
Platform: Arch Linux Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2023-03-17 00:30 UTC by hifinerd
Modified: 2023-08-09 00:59 UTC (History)
6 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
New crash information added by DrKonqi (9.64 KB, text/plain)
2023-04-15 17:02 UTC, Ilya Bizyaev
Details

Note You need to log in before you can comment on or make changes to this bug.
Description hifinerd 2023-03-17 00:30:58 UTC
Application: plasmashell (5.27.3)

Qt Version: 5.15.8
Frameworks Version: 5.104.0
Operating System: Linux 6.2.6-arch1-1 x86_64
Windowing System: Wayland
Distribution: "Arch Linux"
DrKonqi: 5.27.3 [KCrashBackend]

-- Information about the crash:
When I tried to drag a screenshot from a Spectacle notification to a Discord window, plasmashell crashed.

The reporter is unsure if this crash is reproducible.

-- Backtrace:
Application: Plasma (plasmashell), signal: Segmentation fault
Content of s_kcrashErrorMessage: std::unique_ptr<char []> = {get() = <optimized out>}
[KCrash Handler]
#6  QMapData<Qt::DropAction, QPixmap>::root() const (this=0x0) at ../../include/QtCore/../../src/corelib/tools/qmap.h:208
#7  QMapData<Qt::DropAction, QPixmap>::findNode(Qt::DropAction const&) const (akey=<synthetic pointer>: <optimized out>, this=0x0) at ../../include/QtCore/../../src/corelib/tools/qmap.h:287
#8  QMap<Qt::DropAction, QPixmap>::constFind(Qt::DropAction const&) const (akey=<optimized out>, this=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qmap.h:852
#9  QDrag::dragCursor(Qt::DropAction) const (this=0x55bdd59fef10, action=action@entry=Qt::IgnoreAction) at kernel/qdrag.cpp:349
#10 0x00007fe7e357d07e in QBasicDrag::updateCursor(Qt::DropAction) (this=this@entry=0x55bdd524c700, action=Qt::IgnoreAction) at kernel/qsimpledrag.cpp:307
#11 0x00007fe7e494117c in QtWaylandClient::QWaylandDrag::setResponse(QPlatformDropQtResponse const&) (this=this@entry=0x55bdd524c700, response=...) at /usr/src/debug/qt5-wayland/qtwayland/src/client/qwaylanddnd.cpp:123
#12 0x00007fe7e494669e in operator() (action=Qt::MoveAction, accepted=<optimized out>, __closure=<optimized out>) at /usr/src/debug/qt5-wayland/qtwayland/src/client/qwaylanddatadevice.cpp:140
#13 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/qt/QtCore/qobjectdefs_impl.h:146
#14 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/qt/QtCore/qobjectdefs_impl.h:256
#15 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/qt/QtCore/qobjectdefs_impl.h:443
#16 0x00007fe7e30bea71 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffc01b9b3b0, r=<optimized out>, this=0x55bddb120d40, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#17 doActivate<false>(QObject*, int, void**) (sender=0x55bdd7bdc600, signal_index=5, argv=0x7ffc01b9b3b0) at kernel/qobject.cpp:3923
#18 0x00007fe7e494a9de in QtWaylandClient::QWaylandDataSource::dndResponseUpdated(bool, Qt::DropAction) (this=<optimized out>, _t1=<optimized out>, _t2=<optimized out>) at .moc/moc_qwaylanddatasource_p.cpp:184
#19 0x00007fe7e4949596 in QtWayland::wl_data_source::handle_target(void*, wl_data_source*, char const*) (data=0x55bdd7bdc610, object=<optimized out>, mime_type=0x7fe7d403944c "") at /usr/src/debug/qt5-wayland/build/src/client/qwayland-wayland.cpp:697
#20 0x00007fe7e48354f6 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#21 0x00007fe7e4831f5e in ffi_call_int (cif=cif@entry=0x7ffc01b9b5d0, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
#22 0x00007fe7e4834b73 in ffi_call (cif=cif@entry=0x7ffc01b9b5d0, fn=<optimized out>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7ffc01b9b6a0) at ../src/x86/ffi64.c:710
#23 0x00007fe7e53ca645 in wl_closure_invoke (closure=closure@entry=0x7fe7d4039370, target=<optimized out>, target@entry=0x55bdd87efe00, opcode=opcode@entry=0, data=<optimized out>, flags=1) at ../wayland-1.21.0/src/connection.c:1025
#24 0x00007fe7e53cae03 in dispatch_event (display=display@entry=0x55bdd524e7c0, queue=0x55bdd524e890) at ../wayland-1.21.0/src/wayland-client.c:1595
#25 0x00007fe7e53caffc in dispatch_queue (queue=0x55bdd524e890, display=0x55bdd524e7c0) at ../wayland-1.21.0/src/wayland-client.c:1741
#26 wl_display_dispatch_queue_pending (display=0x55bdd524e7c0, queue=0x55bdd524e890) at ../wayland-1.21.0/src/wayland-client.c:1983
#27 0x00007fe7e4922bf6 in QtWaylandClient::QWaylandDisplay::flushRequests() (this=<optimized out>) at /usr/src/debug/qt5-wayland/qtwayland/src/client/qwaylanddisplay.cpp:253
#28 0x00007fe7e30b1bb0 in QObject::event(QEvent*) (this=0x55bdd524a520, e=0x7fe7d0009600) at kernel/qobject.cpp:1347
#29 0x00007fe7e3d78b5c in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x55bdd524a520, e=0x7fe7d0009600) at kernel/qapplication.cpp:3640
#30 0x00007fe7e308df48 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55bdd524a520, event=0x7fe7d0009600) at kernel/qcoreapplication.cpp:1064
#31 0x00007fe7e308dfb3 in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1462
#32 0x00007fe7e308ea53 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x55bdd523d670) at kernel/qcoreapplication.cpp:1821
#33 0x00007fe7e30d4e88 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x55bdd5263210) at kernel/qeventdispatcher_glib.cpp:277
#34 0x00007fe7e1da4afb in g_main_dispatch (context=0x7fe7d8000ee0) at ../glib/glib/gmain.c:3460
#35 g_main_context_dispatch (context=0x7fe7d8000ee0) at ../glib/glib/gmain.c:4200
#36 0x00007fe7e1e015d9 in g_main_context_iterate.constprop.0 (context=0x7fe7d8000ee0, block=1, dispatch=1, self=<optimized out>) at ../glib/glib/gmain.c:4276
#37 0x00007fe7e1da2382 in g_main_context_iteration (context=0x7fe7d8000ee0, may_block=1) at ../glib/glib/gmain.c:4343
#38 0x00007fe7e30d8c6c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x55bdd520f9d0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#39 0x00007fe7e30866ec in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x55bdda60cf60, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#40 0x00007fe7e35748ba in QBasicDrag::drag(QDrag*) (this=0x55bdd524c700, o=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#41 0x00007fe7e3576cc0 in QDragManager::drag(QDrag*) (this=0x55bdda2405c0, o=o@entry=0x55bdd59fef10) at kernel/qdnd.cpp:117
#42 0x00007fe7e35771bf in QDrag::exec(QFlags<Qt::DropAction>, Qt::DropAction) (this=0x55bdd59fef10, supportedActions=..., defaultDropAction=defaultDropAction@entry=Qt::IgnoreAction) at kernel/qdrag.cpp:283
#43 0x00007fe7e357726c in QDrag::exec(QFlags<Qt::DropAction>) (this=<optimized out>, supportedActions=...) at kernel/qdrag.cpp:238
#44 0x00007fe7ccc2fac0 in DragHelper::doDrag(QQuickItem*, QUrl const&, QPixmap const&) (pixmap=..., url=..., item=<optimized out>, this=0x55bdd8e59030) at /usr/include/qt/QtCore/qflags.h:121
#45 DragHelper::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x55bdd8e59030, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /usr/src/debug/plasma-workspace/build/applets/notifications/org.kde.plasma.notifications_autogen/EWIEGA46WW/moc_draghelper.cpp:119
#46 0x00007fe7e30b1bb0 in QObject::event(QEvent*) (this=0x55bdd8e59030, e=0x7fe7d00045c0) at kernel/qobject.cpp:1347
#47 0x00007fe7e3d78b5c in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x55bdd8e59030, e=0x7fe7d00045c0) at kernel/qapplication.cpp:3640
#48 0x00007fe7e308df48 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55bdd8e59030, event=0x7fe7d00045c0) at kernel/qcoreapplication.cpp:1064
#49 0x00007fe7e308dfb3 in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1462
#50 0x00007fe7e308ea53 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x55bdd523d670) at kernel/qcoreapplication.cpp:1821
#51 0x00007fe7e30d4e88 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x55bdd5263210) at kernel/qeventdispatcher_glib.cpp:277
#52 0x00007fe7e1da4afb in g_main_dispatch (context=0x7fe7d8000ee0) at ../glib/glib/gmain.c:3460
#53 g_main_context_dispatch (context=0x7fe7d8000ee0) at ../glib/glib/gmain.c:4200
#54 0x00007fe7e1e015d9 in g_main_context_iterate.constprop.0 (context=0x7fe7d8000ee0, block=1, dispatch=1, self=<optimized out>) at ../glib/glib/gmain.c:4276
#55 0x00007fe7e1da2382 in g_main_context_iteration (context=0x7fe7d8000ee0, may_block=1) at ../glib/glib/gmain.c:4343
#56 0x00007fe7e30d8c6c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x55bdd520f9d0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#57 0x00007fe7e30866ec in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7ffc01b9c200, flags=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#58 0x00007fe7e3091219 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#59 0x00007fe7e3539fe2 in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1870
#60 0x00007fe7e3d76f2a in QApplication::exec() () at kernel/qapplication.cpp:2832
#61 0x000055bdd44ce168 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/plasma-workspace/plasma-workspace-5.27.3/shell/main.cpp:235
[Inferior 1 (process 3937) detached]

Reported using DrKonqi
Comment 1 Fushan Wen 2023-03-25 15:17:53 UTC
Was the notification gone before you finished the drag?
Comment 2 Nate Graham 2023-04-04 23:23:01 UTC
Interesting, cannot reproduce.
Comment 3 Ilya Bizyaev 2023-04-15 17:02:13 UTC
Created attachment 158134 [details]
New crash information added by DrKonqi

plasmashell (5.27.4) using Qt 5.15.8

Not necessarily a screenshot, can also sometimes reproduce with download notifications from Firefox (p-b-i). I think this is related to the "proxy file" feature in notifications.

-- Backtrace (Reduced):
#4  0x00007f0519b24c5a in QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::operator->() const (this=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qscopedpointer.h:118
[...]
#7  QObjectPrivate::get(QObject*) (o=<optimized out>) at kernel/qobject_p.h:355
#8  doActivate<false>(QObject*, int, void**) (sender=0x0, signal_index=3, argv=0x7ffc92c3bbb0) at kernel/qobject.cpp:3805
[...]
#10 0x00007f051a40e0ee in QDrag::actionChanged(Qt::DropAction) (this=<optimized out>, _t1=<optimized out>, _t1@entry=Qt::MoveAction) at .moc/moc_qdrag.cpp:146
#11 0x00007f0519fbb1c5 in QPlatformDrag::updateAction(Qt::DropAction) (this=this@entry=0x560832634020, action=action@entry=Qt::MoveAction) at kernel/qplatformdrag.cpp:185
Comment 4 Fushan Wen 2023-06-13 04:15:48 UTC
Git commit 1a893f95261378316143b932e6907cba8b5c4260 by Fushan Wen.
Committed on 13/06/2023 at 00:52.
Pushed by fusionfuture into branch 'master'.

applets/notifications: remove its own drag helper

With Qt 6.5 and afterwards, it's now possible to set "text/uri-list" in
QML.

Task: https://phabricator.kde.org/T12041

M  +0    -2    applets/notifications/CMakeLists.txt
D  +0    -86   applets/notifications/draghelper.cpp
D  +0    -46   applets/notifications/draghelper.h
M  +0    -4    applets/notifications/notificationapplet.cpp
M  +39   -36   applets/notifications/package/contents/ui/DraggableFileArea.qml
M  +8    -6    applets/notifications/package/contents/ui/JobItem.qml
M  +29   -27   applets/notifications/package/contents/ui/ThumbnailStrip.qml

https://invent.kde.org/plasma/plasma-workspace/-/commit/1a893f95261378316143b932e6907cba8b5c4260
Comment 5 Andreas Sturmlechner 2023-08-08 21:05:48 UTC
Also related to bug 470925?
Comment 6 Fushan Wen 2023-08-09 00:59:29 UTC

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