assert in kservicetypefactory.cpp

David Faure faure at kde.org
Mon Aug 17 07:44:44 UTC 2015


On Monday 17 August 2015 09:37:52 Boudewijn Rempt wrote:
> Is it really necessary to assert here:
> 
> krita(3310)/(default) unknown: ASSERT failure in 
> KServiceTypeFactory::KServiceTypeFactory(): "Could not open sycoca 
> database, you must run kbuildsycoca first!", file 
> /home/boud/kf5/src/frameworks/kservice/src/services/kservicetypefactory.cpp, 
> line 38
> 
> And take the whole application down, just because the sycoca is missing? 
> Is there anything mandator stored in there, and which frameworks should I 
> stop using if so?

It's an assert because it's not supposed to happen, i.e. at that point kbuildsycoca
should have been triggered already, so either it failed or something really equally
bad happened. It would be interesting to get more output from the app.

If you can port away from KServiceTypeTrader (to use json in the plugins and
load them with KPluginLoader), I recommend doing so in any case.
This isn't yet possible for all types of plugins (e.g. KParts).

In any case, I am starting to work on a change in the way ksycoca is
rebuilt right now, so this should change for the better in the very short term.

> I can't ship an application that needs a separate cache 
> builder app to run...

That's a misrepresentation of the issue. kbuildsycoca is part of the kservice
framework where you hit the issue. So it's not separate, it's there. Somehow
it failed to built the cache though. Feel free to email me the stderr of the app
if you can reproduce this.

-- 
David Faure, faure at kde.org, http://www.davidfaure.fr
Working on KDE Frameworks 5



More information about the Kde-frameworks-devel mailing list