KDE/kdevplatform/shell

David Nolden david.nolden.kdevelop at art-master.de
Wed May 27 16:42:52 UTC 2009


Am Mittwoch 27 Mai 2009 18:00:06 schrieb Andreas Pakulat:
> On 27.05.09 15:47:05, David Nolden wrote:
> > SVN commit 973668 by zwabel:
> >
> > Never unload language-supports. That leads to a certain crash, and
> > happened with the cmake support when all cmake projects were closed.
>
> Can you explain why this causes the crash? Why isn't the plugin reloaded
> when its needed. I'm completely against special casing plugins this way, so
> we need to find out what exactly happened and fix the real problem.
I think the main problem is the language controller. It caches languages, and 
a lot of information about them. When deleting a language support, the 
language support would have to unregister its language from the language 
controller and delete it.

But if that was implemented, there would still be a big thread safety issue, 
see for example DUChainUtils::standardContextForUrl, which may be called from 
within any thread.

Maybe this might be fixed with some additional safety using the duchain lock.

But there is also a general problem with unloading language supports: Language 
supports are often requested from within a background thread, and the 
background thread can not load the plugin if it isn't loaded yet.

Thus for now, I think it's best to just prevent language-supports from being 
unloaded, as that causes pain in several areas.

In long-term, background-threads need to be enabled to load language supports 
as well.

Greetings, David





More information about the KDevelop-devel mailing list