Bug 445713 - plasmashell crashes in QtWayland::wl_data_source::handle_send() when dragging something from anywhere in Kickoff except Favorites to desktop
Summary: plasmashell crashes in QtWayland::wl_data_source::handle_send() when dragging...
Status: RESOLVED UPSTREAM
Alias: None
Product: plasmashell
Classification: Plasma
Component: Application Launcher (Kickoff) (show other bugs)
Version: 5.23.3
Platform: Kubuntu Linux
: NOR crash
Target Milestone: 1.0
Assignee: David Edmundson
URL: https://codereview.qt-project.org/c/q...
Keywords: wayland
: 448919 455412 (view as bug list)
Depends on:
Blocks:
 
Reported: 2021-11-18 18:39 UTC by Jan Rathmann
Modified: 2023-01-23 11:14 UTC (History)
8 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
Crash report (without debug symbols) (4.91 KB, text/vnd.kde.kcrash-report)
2021-11-18 18:39 UTC, Jan Rathmann
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jan Rathmann 2021-11-18 18:39:37 UTC
Created attachment 143702 [details]
Crash report (without debug symbols)

STEPS TO REPRODUCE
1. Open Kickoff menu
2. Drag a launcher (or a file or folder icon) from any other category than favourites to the desktop (or a window).
3. Release mouse button. plasmashell will crash and restart.

Interestingly, draging a launcher from the favourite category works as expected.

I see this only in the Wayland session.

I'll attach a backtrace, but probably useless since there are AFAIK no packages with debug symbols avaiable inside the Kubuntu-Backports-PPA.

Installation:
Kubuntu 21.10 with Backports-PPA
Plasma 5.23.3
Frameworks 5.88

Kind regards, Jan
Comment 1 Nate Graham 2021-11-23 22:10:43 UTC
Can reproduce. Here's a symbolicated backtrace:

Application: Plasma (plasmashell), signal: Segmentation fault
Content of s_kcrashErrorMessage: std::unique_ptr<char []> = {get() = {<No data fields>}}
[KCrash Handler]
#5  0x00007f115af2e5dd in QMimeData::hasImage() const () at /lib64/libQt5Core.so.5
#6  0x00007f11592768e0 in QWaylandMimeHelper::getByteArray(QMimeData*, QString const&) () at /lib64/libQt5WaylandClient.so.5
#7  0x00007f115927dbcc in QtWaylandClient::QWaylandDataSource::data_source_send(QString const&, int) () at /lib64/libQt5WaylandClient.so.5
#8  0x00007f1159286d0b in QtWayland::wl_data_source::handle_send(void*, wl_data_source*, char const*, int) () at /lib64/libQt5WaylandClient.so.5
#9  0x00007f115a621c04 in ffi_call_unix64 () at ../src/x86/unix64.S:76
#10 0x00007f115a621107 in ffi_call (cif=<optimized out>, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>) at ../src/x86/ffi64.c:525
#11 0x00007f115d70fd10 in wl_closure_invoke.constprop () at /lib64/libwayland-client.so.0
#12 0x00007f115d71042b in dispatch_event.isra () at /lib64/libwayland-client.so.0
#13 0x00007f115d71061c in wl_display_dispatch_queue_pending () at /lib64/libwayland-client.so.0
#14 0x00007f11592624df in QtWaylandClient::QWaylandDisplay::flushRequests() () at /lib64/libQt5WaylandClient.so.5
#15 0x00007f115af3e410 in void doActivate<false>(QObject*, int, void**) () at /lib64/libQt5Core.so.5
#16 0x00007f115af5bc2b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Core.so.5
#17 0x00007f115af091c2 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Core.so.5
#18 0x00007f115b392787 in QBasicDrag::drag(QDrag*) () at /lib64/libQt5Gui.so.5
#19 0x00007f115b390ccf in QDragManager::drag(QDrag*) () at /lib64/libQt5Gui.so.5
#20 0x00007f115b39103f in QDrag::exec(QFlags<Qt::DropAction>, Qt::DropAction) () at /lib64/libQt5Gui.so.5
#21 0x00007f115cf78250 in QQuickDragAttachedPrivate::startDrag(QFlags<Qt::DropAction>) () at /lib64/libQt5Quick.so.5
#22 0x00007f115c966971 in QQmlPropertyData::writeProperty(QObject*, void*, QFlags<QQmlPropertyData::WriteFlag>) const () at /lib64/libQt5Qml.so.5
#23 0x00007f115c9bb197 in GenericBinding<1>::write(QV4::Value const&, bool, QFlags<QQmlPropertyData::WriteFlag>) () at /lib64/libQt5Qml.so.5
#24 0x00007f115c9c37ee in QQmlNonbindingBinding::doUpdate(QQmlJavaScriptExpression::DeleteWatcher const&, QFlags<QQmlPropertyData::WriteFlag>, QV4::Scope&) () at /lib64/libQt5Qml.so.5
#25 0x00007f115c9c467c in QQmlBinding::update(QFlags<QQmlPropertyData::WriteFlag>) () at /lib64/libQt5Qml.so.5
#26 0x00007f115c9a1765 in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) () at /lib64/libQt5Qml.so.5
#27 0x00007f115af3e252 in void doActivate<false>(QObject*, int, void**) () at /lib64/libQt5Core.so.5
#28 0x00007f115cf46735 in QQuickMouseArea::mouseMoveEvent(QMouseEvent*) () at /lib64/libQt5Quick.so.5
#29 0x00007f115cee1de3 in QQuickItem::event(QEvent*) () at /lib64/libQt5Quick.so.5
#30 0x00007f115bd9c443 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib64/libQt5Widgets.so.5
#31 0x00007f115af0a7b8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib64/libQt5Core.so.5
#32 0x00007f115cef0055 in QQuickWindowPrivate::deliverMouseEvent(QQuickPointerMouseEvent*) () at /lib64/libQt5Quick.so.5
#33 0x00007f115cef09e3 in QQuickWindowPrivate::deliverPointerEvent(QQuickPointerEvent*) () at /lib64/libQt5Quick.so.5
#34 0x00007f115b364425 in QWindow::event(QEvent*) () at /lib64/libQt5Gui.so.5
#35 0x00007f115bd9c443 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib64/libQt5Widgets.so.5
#36 0x00007f115af0a7b8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib64/libQt5Core.so.5
#37 0x00007f115b358b98 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /lib64/libQt5Gui.so.5
#38 0x00007f115b338c9c in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Gui.so.5
#39 0x00007f115929a644 in userEventSourceDispatch(_GSource*, int (*)(void*), void*) () at /lib64/libQt5WaylandClient.so.5
#40 0x00007f11594cb4cf in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#41 0x00007f115951f4f8 in g_main_context_iterate.constprop () at /lib64/libglib-2.0.so.0
#42 0x00007f11594c8c03 in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#43 0x00007f115af5bb98 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Core.so.5
#44 0x00007f115af091c2 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Core.so.5
#45 0x00007f115af11704 in QCoreApplication::exec() () at /lib64/libQt5Core.so.5
#46 0x000000000042076b in main(int, char**) (argc=<optimized out>, argv=0x7fffe9e395a0) at /home/nate/kde/src/plasma-workspace/shell/main.cpp:238
[Inferior 1 (process 884272) detached]
Comment 2 Arjen Hiemstra 2021-11-24 09:54:23 UTC
This is a bug in Qt that should be fixed with https://codereview.qt-project.org/c/qt/qtwayland/+/382017 .
Comment 3 Nate Graham 2021-11-24 15:58:26 UTC
Cool, thanks!

In the future feel free to mark such bugs as RESOLVED UPSTREAM with a link to the fix in the URL field.
Comment 4 Nate Graham 2022-01-23 21:32:49 UTC
*** Bug 448919 has been marked as a duplicate of this bug. ***
Comment 5 Nate Graham 2022-01-28 18:29:32 UTC
Arjen, do you think that would be safe to backport into the KDE patch collection?
Comment 6 Nicolas Fella 2022-02-14 13:56:00 UTC
*** Bug 450215 has been marked as a duplicate of this bug. ***
Comment 7 David Redondo 2023-01-23 11:14:30 UTC
*** Bug 455412 has been marked as a duplicate of this bug. ***