Skip to content

KFileItemActions: fix a crash when a serviceMenu does not have an Exec

Méven Car requested to merge work/meven/kio-fix-crash-no-exec into master
libKF6Service.so.5.246.0
+0x015b79
std::__uniq_ptr_impl<T>::_M_ptr (unique_ptr.h:199)
libKF6Service.so.5.246.0
+0x015b79
std::unique_ptr<T>::get (unique_ptr.h:470)
libKF6Service.so.5.246.0
+0x015b79
qGetPtrHelper<T> (qtclasshelpermacros.h:79)
libKF6Service.so.5.246.0
+0x015b79
KService::d_func (kservice.h:507)
libKF6Service.so.5.246.0
+0x015b79
KService::setExec (kservice.cpp:841)
libKF6KIOGui.so.5.246.0
+0x02145c
KIO::ApplicationLauncherJob::ApplicationLauncherJob (applicationlauncherjob.cpp:81)
libKF6KIOWidgets.so.5.246.0
+0x06779f
operator() (kfileitemactions.cpp:783)
libKF6KIOWidgets.so.5.246.0
+0x06779f
call (qobjectdefs_impl.h:137)
libKF6KIOWidgets.so.5.246.0
+0x06779f
call<T> (qobjectdefs_impl.h:339)
libKF6KIOWidgets.so.5.246.0
+0x06779f
QtPrivate::QCallableObject<T>::impl (qobjectdefs_impl.h:522)
libQt6Core.so.6.6.1
+0x1b9ec8
QtPrivate::QSlotObjectBase::call (qobjectdefs_impl.h:433)
libQt6Core.so.6.6.1
+0x1b9ec8
doActivate<T> (qobject.cpp:4021)
libQt6Gui.so.6.6.1
+0x515d36
QAction::triggered (moc_qaction.cpp:642)
libQt6Gui.so.6.6.1
+0x515d36
QAction::activate (qaction.cpp:1102)
libQt6Widgets.so.6.6.1
+0x32c35b
QMenuPrivate::activateCausedStack (qmenu.cpp:1413)
libQt6Widgets.so.6.6.1
+0x32fe60
QMenuPrivate::activateAction (qmenu.cpp:1495)
libQt6Widgets.so.6.6.1
+0x1c4134
QWidget::event (qwidget.cpp:8983)
libQt6Widgets.so.6.6.1
+0x17319a
QApplicationPrivate::notify_helper (qapplication.cpp:3296)
libQt6Widgets.so.6.6.1
+0x1759f7
QApplication::notify (qapplication.cpp:2782)
libQt6Core.so.6.6.1
+0x162a77
QCoreApplication::notifyInternal2 (qcoreapplication.cpp:1121)
libQt6Widgets.so.6.6.1
+0x171136
QApplicationPrivate::sendMouseEvent (qapplication.cpp:2366)
libQt6Widgets.so.6.6.1
+0x1d7158
QWidgetWindow::handleMouseEvent (qwidgetwindow.cpp:523)
libQt6Widgets.so.6.6.1
+0x1d7f3f
QWidgetWindow::event (qwidgetwindow.cpp:241)
libQt6Widgets.so.6.6.1
+0x17319a
QApplicationPrivate::notify_helper (qapplication.cpp:3296)
libQt6Core.so.6.6.1
+0x162a77
QCoreApplication::notifyInternal2 (qcoreapplication.cpp:1121)
libQt6Gui.so.6.6.1
+0x1a5944
QGuiApplicationPrivate::processMouseEvent (qguiapplication.cpp:2323)
libQt6Gui.so.6.6.1
+0x210c3b
QWindowSystemInterface::sendWindowSystemEvents (qwindowsysteminterface.cpp:1109)
libQt6Gui.so.6.6.1
+0x5e6373
userEventSourceDispatch (qeventdispatcher_glib.cpp:38)
libglib-2.0.so.0.7800.1
+0x059f68
g_main_dispatch.lto_priv.0 (gmain.c:3476)
libglib-2.0.so.0.7800.1
+0x0b8326
g_main_context_dispatch_unlocked (gmain.c:4284)
libglib-2.0.so.0.7800.1
+0x0b8326
g_main_context_iterate_unlocked.isra.0 (gmain.c:4349)
libglib-2.0.so.0.7800.1
+0x058161
g_main_context_iteration (gmain.c:4414)
libQt6Core.so.6.6.1
+0x39d099
QEventDispatcherGlib::processEvents (qeventdispatcher_glib.cpp:395)
libQt6Core.so.6.6.1
+0x16cf5d
QEventLoop::processEvents (qeventloop.cpp:100)
libQt6Core.so.6.6.1
+0x16cf5d
QEventLoop::exec (qeventloop.cpp:182)
libQt6Widgets.so.6.6.1
+0x333d6d
QMenuPrivate::exec (qmenu.cpp:2658)
libQt6Widgets.so.6.6.1
+0x333e92
QMenu::exec (qmenu.cpp:2645)
dolphin
+0x06172f
DolphinMainWindow::openContextMenu (dolphinmainwindow.cpp:1312)

https://crash-reports.kde.org/organizations/kde/issues/3526/?alert_rule_id=2&alert_timestamp=1701344933879&alert_type=email&notification_uuid=9d451baf-45ed-4e2b-9a01-ba40be2ac8bb&project=4&referrer=alert_email

Prevents adding those action to the menu in the first place.

Merge request reports