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