assert when calling TopDUContext::updateImportsCache in the parsejob
Sven Brauch
svenbrauch at googlemail.com
Thu Nov 22 00:08:52 UTC 2012
Hi!
For 1.4, I wrote parsejob code which does not rebuild contexts if
they're already up to date (in master, there's this fancy function,
updateRequired() -- my code is basically just that copied). By just
doing that, I got a lot of "unknown direct declaration" errors when
starting kdevelop after it had parsed something, for declarations
which were imported from another context. I guess this is because in
kdev-python, almost all declarations are direct due to some special
requirements (this was once discussed here, more than a year ago), and
the contexts they were imported from and the data attached to those
were not loaded (yet?).
Calling duChain()->updateImportsCache() in the parsejob reliably fixes
this behaviour; this sounded somewhat logical. So, I just left it like
this and considered the issue to be resolved.
Unfortunately, since that, very rarely and apparently at random, this
assert triggers:
http://paste.kde.org/612560/
It verifies that the list of recursive imports is empty after
clearImportedContextsRecursively was called.
The code around there is very convoluted and I don't really understand
what it does. I thus wanted to ask if someone is familiar with it, and
could tell me what might be wrong here. It looks properly mutexed, at
least... ;)
Thanks and Greetings,
Sven
More information about the KDevelop-devel
mailing list