SUMMARY Plasma crashes in XdgWindowExporterWayland::run when I try to get the open with other apps dialog from a file download notification. STEPS TO REPRODUCE 1. Download a file with Firefox, get a notification 2. Menu > Open with > Open with other application SOFTWARE/OS VERSIONS KDE Plasma Version: git master KDE Frameworks Version: git master Qt Version: 5.15.6 BACKTRACE #0 0x00007ffff632f3a0 in QWidgetPrivate::windowHandle(QWidgetPrivate::WindowHandleMode) const () at /lib64/libQt5Widgets.so.5 #1 0x00007fffe33b9011 in XdgWindowExporterWayland::run(QWidget*)::{lambda(unsigned int, unsigned int)#1}::operator()(unsigned int, unsigned int) const (version=<optimized out>, name=<optimized out>, __closure=0x167ae50) at /home/bharadwaj/kde/src/plasma-integration/src/platformtheme/kdeplatformtheme.cpp:106 #2 QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1>, QtPrivate::List<unsigned int, unsigned int>, void, XdgWindowExporterWayland::run(QWidget*)::{lambda(unsigned int, unsigned int)#1}>::call(XdgWindowExporterWayland::run(QWidget*)::{lambda(unsigned int, unsigned int)#1}&, void**) (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:146 #3 QtPrivate::Functor<XdgWindowExporterWayland::run(QWidget*)::{lambda(unsigned int, unsigned int)#1}, 2>::call<QtPrivate::List<unsigned int, unsigned int>, void>(XdgWindowExporterWayland::run(QWidget*)::{lambda(unsigned int, unsigned int)#1}&, void*, void**) (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:256 #4 QtPrivate::QFunctorSlotObject<XdgWindowExporterWayland::run(QWidget*)::{lambda(unsigned int, unsigned int)#1}, 2, QtPrivate::List<unsigned int, unsigned int>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=<optimized out>, this_=0x167ae40, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:443 #5 0x00007ffff54a39a6 in void doActivate<false>(QObject*, int, void**) () at /lib64/libQt5Core.so.5 #6 0x00007ffff7e8c1f8 in KWayland::Client::Registry::exporterUnstableV2Announced(unsigned int, unsigned int) (this=<optimized out>, _t1=<optimized out>, _t2=<optimized out>) at /home/bharadwaj/kde/build/kwayland/src/client/KF5WaylandClient_autogen/EWIEGA46WW/moc_registry.cpp:1292 #7 0x00007ffff4973746 in ffi_call_unix64 () at /lib64/libffi.so.8 #8 0x00007ffff49704d2 in ffi_call_int.lto_priv () at /lib64/libffi.so.8 #9 0x00007ffff7dc4e53 in wl_closure_invoke.constprop () at /lib64/libwayland-client.so.0 #10 0x00007ffff7dc55f3 in dispatch_event.isra () at /lib64/libwayland-client.so.0 #11 0x00007ffff7dc57bc in wl_display_dispatch_queue_pending () at /lib64/libwayland-client.so.0 #12 0x00007ffff4acd695 in QtWaylandClient::QWaylandDisplay::flushRequests() () at /lib64/libQt5WaylandClient.so.5 #13 0x00007ffff54a3b2f in void doActivate<false>(QObject*, int, void**) () at /lib64/libQt5Core.so.5 #14 0x00007ffff54c105d in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Core.so.5 #15 0x00007ffff546ec1a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Core.so.5 #16 0x00007ffff5476ce2 in QCoreApplication::exec() () at /lib64/libQt5Core.so.5 #17 0x0000000000422cb9 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/bharadwaj/kde/src/plasma-workspace/shell/main.cpp:235
Looks like the widget goes away before its use. Probably needs wrapping in a qpointer so we can check for deletion.
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-integration/-/merge_requests/62
Git commit ae5aef83bed0104e772486335b6061159fb74854 by Bharadwaj Raju. Committed on 08/12/2022 at 14:28. Pushed by bharadwaj-raju into branch 'master'. Fix crash when selecting "Open with other application" on download notification M +8 -2 src/platformtheme/kdeplatformtheme.cpp https://invent.kde.org/plasma/plasma-integration/commit/ae5aef83bed0104e772486335b6061159fb74854