SUMMARY After recent updates plasmashell crashes on startup in KServiceType::serviceOffersOffset STEPS TO REPRODUCE 1. Start plasmashell OBSERVED RESULT Crash EXPECTED RESULT No crash Backtrace: Thread 1 "plasmashell" received signal SIGSEGV, Segmentation fault. KServiceType::serviceOffersOffset (this=0x0) at ./src/services/kservicetype.cpp:216 216 ./src/services/kservicetype.cpp: Datei oder Verzeichnis nicht gefunden. (gdb) bt #0 KServiceType::serviceOffersOffset (this=0x0) at ./src/services/kservicetype.cpp:216 #1 0x00007ffff6eff127 in KServiceFactory::hasOffer (this=this@entry=0x55555631d9c0, serviceType=..., testedService=...) at ./src/services/kservicefactory.cpp:319 #2 0x00007ffff6eed714 in <lambda(const Ptr&)>::operator() ( __closure=<synthetischer Zeiger>, __closure=<synthetischer Zeiger>, serv=...) at ./src/services/kapplicationtrader.cpp:57 #3 __gnu_cxx::__ops::_Iter_pred<filterMimeTypeOffers(KService::List&)::<lambda(const Ptr&)> >::operator()<QList<QExplicitlySharedDataPointer<KService> >::iterator> ( __it=..., this=<synthetischer Zeiger>) at /usr/include/c++/9/bits/predefined_ops.h:283 #4 std::__find_if<QList<QExplicitlySharedDataPointer<KService> >::iterator, __gnu_cxx::__ops::_Iter_pred<filterMimeTypeOffers(KService::List&)::<lambda(const Ptr&)> > > ( __first=..., __pred=..., __last=...) at /usr/include/c++/9/bits/stl_algo.h:120 #5 std::__find_if<QList<QExplicitlySharedDataPointer<KService> >::iterator, __gnu_cxx::__ops::_Iter_pred<filterMimeTypeOffers(KService::List&)::<lambda(const Ptr&)> > > ( __first=..., __last=..., __pred=...) at /usr/include/c++/9/bits/stl_algo.h:162 #6 std::__remove_if<QList<QExplicitlySharedDataPointer<KService> >::iterator, __gnu_cxx::__ops::_Iter_pred<filterMimeTypeOffers(KService::List&)::<lambda(const Ptr&)> > > (__pred=..., __last=..., __first=...) at /usr/include/c++/9/bits/stl_algo.h:863 #7 std::remove_if<QList<QExplicitlySharedDataPointer<KService> >::iterator, filterMimeTypeOffers(KService::List&)::<lambda(const Ptr&)> > (__first=..., __last=..., __pred=...) at /usr/include/c++/9/bits/stl_algo.h:940 #8 filterMimeTypeOffers (list=...) at ./src/services/kapplicationtrader.cpp:59 #9 KApplicationTrader::queryByMimeType(QString const&, std::function<bool (QExplicitlySharedDataPointer<KService> const&)>) (mimeType=..., filterFunc=...) at ./src/services/kapplicationtrader.cpp:99 #10 0x00007ffff7b9c8fd in ?? () from /usr/lib/x86_64-linux-gnu/libKF5Plasma.so.5 #11 0x00007ffff7b840f4 in Plasma::Applet::setAssociatedApplicationUrls(QList<QUrl> const&) () from /usr/lib/x86_64-linux-gnu/libKF5Plasma.so.5
Better backtrace: #0 KServiceType::serviceOffersOffset (this=0x0) at ./src/services/kservicetype.cpp:216 #1 0x00007ffff6eff127 in KServiceFactory::hasOffer (this=this@entry=0x55555631e000, serviceType=..., testedService=...) at ./src/services/kservicefactory.cpp:319 #2 0x00007ffff6eed714 in <lambda(const Ptr&)>::operator() (__closure=<synthetischer Zeiger>, __closure=<synthetischer Zeiger>, serv=...) at ./src/services/kapplicationtrader.cpp:57 #3 __gnu_cxx::__ops::_Iter_pred<filterMimeTypeOffers(KService::List&)::<lambda(const Ptr&)> >::operator()<QList<QExplicitlySharedDataPointer<KService> >::iterator> (__it=..., this=<synthetischer Zeiger>) at /usr/include/c++/9/bits/predefined_ops.h:283 #4 std::__find_if<QList<QExplicitlySharedDataPointer<KService> >::iterator, __gnu_cxx::__ops::_Iter_pred<filterMimeTypeOffers(KService::List&)::<lambda(const Ptr&)> > > (__first=..., __pred=..., __last=...) at /usr/include/c++/9/bits/stl_algo.h:120 #5 std::__find_if<QList<QExplicitlySharedDataPointer<KService> >::iterator, __gnu_cxx::__ops::_Iter_pred<filterMimeTypeOffers(KService::List&)::<lambda(const Ptr&)> > > (__first=..., __last=..., __pred=...) at /usr/include/c++/9/bits/stl_algo.h:162 #6 std::__remove_if<QList<QExplicitlySharedDataPointer<KService> >::iterator, __gnu_cxx::__ops::_Iter_pred<filterMimeTypeOffers(KService::List&)::<lambda(const Ptr&)> > > (__pred=..., __last=..., __first=...) at /usr/include/c++/9/bits/stl_algo.h:863 #7 std::remove_if<QList<QExplicitlySharedDataPointer<KService> >::iterator, filterMimeTypeOffers(KService::List&)::<lambda(const Ptr&)> > (__first=..., __last=..., __pred=...) .h:940 #8 filterMimeTypeOffers (list=...) at ./src/services/kapplicationtrader.cpp:59 #9 KApplicationTrader::queryByMimeType(QString const&, std::function<bool (QExplicitlySharedDataPointer<KService> const&)>) (mimeType=..., filterFunc=...) at ./src/services/kapplicationtrader.cpp:99 #10 0x00007ffff7b9c8fd in Plasma::AssociatedApplicationManager::setUrls ( this=0x7ffff7c1b6b0 <Plasma::(anonymous namespace)::Q_QGS_privateAssociatedApplicationManagerSelf::innerFunction()::holder>, applet=0x5555558bee10, urls=...) at /usr/include/c++/9/bits/std_function.h:396 #11 0x00007ffff7b840f4 in Plasma::Applet::setAssociatedApplicationUrls (this=0x5555558bee10, urls=...) at ./src/plasma/applet.cpp:819 #12 0x00007ffff040fa04 in AppletInterface::setAssociatedApplicationUrls (this=0x555555902650, urls=...) at ./src/scriptengines/qml/plasmoid/appletinterface.cpp:559 #13 0x00007ffff0411fe1 in AppletInterface::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=0x7fffffff8930) at ./obj-x86_64-linux-gnu/src/scriptengines/qml/plasma_appletscript_declarative_autogen/include/moc_appletinterface.cpp:734 #14 0x00007ffff73c9a01 in QQmlPropertyData::writeProperty (flags=..., value=0x7fffffff88d0, target= 0x555555902650, this=0x7fffdc1f5b78) at ../../include/QtQml/5.14.2/QtQml/private/../../../../../src/qml/qml/qqmlpropertydata_p.h:286 #15 QQmlPropertyPrivate::write (object=object@entry=0x555555902650, property=..., value=..., context=context@entry=0x5555566e2fc0, flags=..., flags@entry=...) at qml/qqmlproperty.cpp:1329 #16 0x00007ffff73cd0e4 in QQmlPropertyPrivate::writeValueProperty (object=0x555555902650, core=..., valueTypeData=..., value=..., context=0x5555566e2fc0, flags=flags@entry=...) at qml/qqmlproperty.cpp:1214 #17 0x00007ffff7439734 in QQmlBinding::slowWrite (this=this@entry=0x555556728600, core=..., valueTypeData=..., result=..., isUndefined=isUndefined@entry=false, flags=..., flags@entry=...) at ../../include/QtQml/5.14.2/QtQml/private/../../../../../src/qml/qml/ftw/qflagpointer_p.h:242 #18 0x00007ffff743a860 in GenericBinding<0>::write (this=0x555556728600, result=..., isUndefined=<optimized out>, flags=...) at ../../include/QtQml/5.14.2/QtQml/private/../../../../../src/qml/common/qv4staticvalue_p.h:316 #19 0x00007ffff743be93 in QQmlNonbindingBinding::doUpdate (this=0x555556728600, watcher=..., flags=..., scope=...) at ../../include/QtQml/5.14.2/QtQml/private/../../../../../src/qml/jsruntime/qv4scopedvalue_p.h:239 #20 0x00007ffff7438c52 in QQmlBinding::update (this=0x555556728600, flags=...) at qml/qqmlbinding.cpp:186 #21 0x00007ffff74133dd in QQmlNotifier::emitNotify (endpoint=<optimized out>, a=a@entry=0x0) at qml/qqmlnotifier.cpp:104 #22 0x00007ffff73bb294 in QQmlData::signalEmitted (object=0x555556726ac0, index=38, a=0x0) at qml/qqmlengine.cpp:858 #23 0x00007ffff5c050a5 in doActivate<false> (sender=0x555556726ac0, signal_index=38, argv=0x0) at kernel/qobject_p.h:110 #24 0x00007ffff73b6a68 in QQmlVMEMetaObject::metaCall(QObject*, QMetaObject::Call, int, void**) () at ../../include/QtQml/5.14.2/QtQml/private/../../../../../src/qml/qml/qqmlpropertycache_p.h:375 #25 0x00007ffff743b475 in QQmlPropertyData::writeProperty (flags=..., value=0x7fffffffa7af, target=<optimized out>, this=<optimized out>) at ../../include/QtQml/5.14.2/QtQml/private/../../../../../src/qml/qml/qqmlpropertydata_p.h:290 #26 GenericBinding<1>::doStore<bool> (flags=..., pd=<optimized out>, value=<optimized out>, this=<optimized out>) at qml/qqmlbinding.cpp:334 #27 GenericBinding<1>::write (this=0x555556726940, result=..., isUndefined=<optimized out>, flags=...) at qml/qqmlbinding.cpp:297 #28 0x00007ffff743be93 in QQmlNonbindingBinding::doUpdate (this=0x555556726940, watcher=..., flags=..., scope=...) at ../../include/QtQml/5.14.2/QtQml/private/../../../../../src/qml/jsruntime/qv4scopedvalue_p.h:239 #29 0x00007ffff7438c52 in QQmlBinding::update (this=0x555556726940, flags=...) at qml/qqmlbinding.cpp:186 #30 0x00007ffff74133dd in QQmlNotifier::emitNotify (endpoint=<optimized out>, a=a@entry=0x0) at qml/qqmlnotifier.cpp:104 #31 0x00007ffff73bb294 in QQmlData::signalEmitted (object=0x555556726ac0, index=34, a=0x0) at qml/qqmlengine.cpp:858 #32 0x00007ffff5c050a5 in doActivate<false> (sender=0x555556726ac0, signal_index=34, argv=0x0) at kernel/qobject_p.h:110 #33 0x00007ffff78f021d in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5 #34 0x00007ffff73d39d5 in QQmlIncubatorPrivate::changeStatus (s=<optimized out>, this=0x55555672eab0) at qml/qqmlincubator.cpp:690 #35 QQmlIncubatorPrivate::incubate (this=0x55555672eab0, i=...) at qml/qqmlincubator.cpp:362 #36 0x00007ffff73d3e33 in QQmlEnginePrivate::incubate (this=0x5555557b39c0, i=..., forContext=<optimized out>) at qml/qqmlincubator.cpp:88 #37 0x00007ffff73d08be in QQmlComponent::create(QQmlIncubator&, QQmlContext*, QQmlContext*) () at qml/qqmlcomponent.cpp:1104 #38 0x00007ffff78eea44 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5 #39 0x00007ffff78eeadd in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5 #40 0x00007ffff744a5cc in QQmlObjectCreator::finalize (this=0x5555567018d0, interrupt=...) at qml/qqmlobjectcreator.cpp:1410 #41 0x00007ffff73d38ea in QQmlIncubatorPrivate::incubate (this=0x5555559018a0, i=...) at qml/qqmlincubator.cpp:342 #42 0x00007ffff73d3e33 in QQmlEnginePrivate::incubate (this=0x5555557b39c0, i=..., forContext=<optimized out>) at qml/qqmlincubator.cpp:88 #43 0x00007ffff73d08be in QQmlComponent::create(QQmlIncubator&, QQmlContext*, QQmlContext*) () at qml/qqmlcomponent.cpp:1104 #44 0x00007ffff7b42d31 in KDeclarative::QmlObject::completeInitialization(QHash<QString, QVariant> const&) () from /usr/lib/x86_64-linux-gnu/libKF5Declarative.so.5 #45 0x00007ffff7f62756 in PlasmaQuick::AppletQuickItem::init (this=this@entry=0x555555902650) at ./src/plasmaquick/appletquickitem.cpp:632 #46 0x00007ffff0412799 in AppletInterface::init (this=this@entry=0x555555902650) at ./src/scriptengines/qml/plasmoid/appletinterface.cpp:162 #47 0x00007ffff0420165 in ContainmentInterface::init (this=0x555555902650) at ./src/scriptengines/qml/plasmoid/containmentinterface.cpp:86 #48 0x00007ffff7f63d41 in PlasmaQuick::AppletQuickItem::itemChange (this=0x555555902650, change=QQuickItem::ItemSceneChange, value=...) at ./src/plasmaquick/appletquickitem.cpp:911 #49 0x00007ffff7834ab5 in QQuickItemPrivate::itemChange(QQuickItem::ItemChange, QQuickItem::ItemChangeData const&) () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5 #50 0x00007ffff7838dae in QQuickItemPrivate::refWindow(QQuickWindow*) () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5 #51 0x00007ffff783b684 in QQuickItem::setParentItem(QQuickItem*) () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5 #52 0x00007ffff7f6f0d0 in PlasmaQuick::ContainmentViewPrivate::setContainment (this=0x555555af5280, cont=<optimized out>) at ./src/plasmaquick/containmentview.cpp:126 #53 0x00005555555a04f3 in ?? () #54 0x00005555555a9b03 in ?? () #55 0x00007ffff5c0551e in QtPrivate::QSlotObjectBase::call (a=0x7fffffffd020, r=0x55555570f220, this=0x5555557b2c00) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #56 doActivate<false> (sender=0x55555573abb0, signal_index=4, argv=0x7fffffffd020) at kernel/qobject.cpp:3870 #57 0x00007ffff7e1cdc5 in KActivities::Consumer::serviceStatusChanged(KActivities::Consumer::ServiceStatus) () from /usr/lib/x86_64-linux-gnu/libKF5Activities.so.5 #58 0x00007ffff7e1e214 in ?? () from /usr/lib/x86_64-linux-gnu/libKF5Activities.so.5 #59 0x00007ffff5c05550 in doActivate<false> (sender=0x55555575a930, signal_index=11, argv=0x7fffffffd180) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:395 #60 0x00007ffff7e1cd65 in ?? () from /usr/lib/x86_64-linux-gnu/libKF5Activities.so.5 #61 0x00007ffff7e35a26 in ?? () from /usr/lib/x86_64-linux-gnu/libKF5Activities.so.5 #62 0x00007ffff7e35c5d in ?? () from /usr/lib/x86_64-linux-gnu/libKF5Activities.so.5 #63 0x00007ffff7e1d62f in ?? () from /usr/lib/x86_64-linux-gnu/libKF5Activities.so.5 #64 0x00007ffff5c05550 in doActivate<false> (sender=0x555555709a20, signal_index=3, argv=0x7fffffffd420) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:395 #65 0x00007ffff5bffaf7 in QMetaObject::activate (sender=<optimized out>, m=m@entry=0x7ffff6dc75e0 <QDBusPendingCallWatcher::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fffffffd420) at kernel/qobject.cpp:3930 #66 0x00007ffff6da87e3 in QDBusPendingCallWatcher::finished (this=<optimized out>, _t1=<optimized out>) at .moc/moc_qdbuspendingcall.cpp:158 #67 0x00007ffff6da88e8 in QDBusPendingCallWatcherPrivate::_q_finished (this=<optimized out>) at qdbuspendingcall.cpp:494 #68 QDBusPendingCallWatcher::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at .moc/moc_qdbuspendingcall.cpp:86 #69 0x00007ffff5bfd2a9 in QObject::event (this=0x555555709a20, e=0x55555570c130) at kernel/qobject.cpp:1339 #70 0x00007ffff673ccc3 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #71 0x00007ffff6745f40 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #72 0x00007ffff5bcf78a in QCoreApplication::notifyInternal2 (receiver=0x555555709a20, event=0x55555570c130) at ../../include/QtCore/../../src/corelib/kernel/qobject.h:153 #73 0x00007ffff5bd1f74 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x555555610fc0) at kernel/qcoreapplication.cpp:1815 #74 0x00007ffff5c28b87 in postEventSourceDispatch (s=0x5555556f9e40) at kernel/qeventdispatcher_glib.cpp:277 #75 0x00007ffff3fa8fbd in g_main_context_dispatch () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 #76 0x00007ffff3fa9240 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 #77 0x00007ffff3fa92e3 in g_main_context_iteration () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 #78 0x00007ffff5c281e2 in QEventDispatcherGlib::processEvents (this=0x5555556f5a40, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #79 0x00007ffff5bce24b in QEventLoop::exec (this=this@entry=0x7fffffffd9f0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:136 #80 0x00007ffff5bd6296 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:118 #81 0x0000555555578cbc in ?? () #82 0x00007ffff557a0b3 in __libc_start_main (main=0x555555577ff0, argc=1, argv=0x7fffffffdcc8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdcb8) at ../csu/libc-start.c:308 #83 0x0000555555578ede in ?? ()
It seems that genericServiceTypePtr in kapplicationtrader.cpp:49 is moot
Reverting https://invent.kde.org/frameworks/kservice/-/commit/0eb006796fa35b1a00b72f3170c75d600a14ec22 fixes the crashes
Does the crash go away if you restart kdeinit5? If you run kbuildsycoca5? If you restart the whole session? I'll debug this further later today.
Ah, I think I know what happens. Existing running apps don't get the new kservice code, but notice the desktop file that disappeared. Boom. Restarting the whole session should work indeed as a workaround. Until KF6 I'll make kservice keep installing that .desktop file.
Git commit 2998ec75fe990f875b6993377ee7cff4916ad2a1 by David Faure. Committed on 19/08/2020 at 10:25. Pushed by dfaure into branch 'master'. Install application.desktop again, for compat reasons NO_CHANGELOG M +2 -2 src/CMakeLists.txt https://invent.kde.org/frameworks/kservice/commit/2998ec75fe990f875b6993377ee7cff4916ad2a1