Crashes with cyclic class dependency graph
David Nolden
zwabel at googlemail.com
Sun Feb 14 13:47:01 UTC 2010
Am Sonntag 14 Februar 2010 13:10:45 schrieb Nicolai Haehnle:
> Hello,
>
> I've run into a weird problem with the cppduchain code. Consider the
> following (obviously incorrect) code:
>
> struct B;
>
> struct A : B {};
>
> struct B : A {};
>
> void test() {
> B b;
> }
>
> You're pretty much guaranteed to hit a crash after a little bit of
> editing. The reason for all these different crashes is that many
> places in the code traverse the dependency graph recursively, and
> they're bound to run out of stack pretty quickly. Of course the above
> code is incorrect, but KDevelop should obviously not crash. What is
> the preferred solution for this, though? Forbid the introduction of
> cycles into the dependency graph while parsing the code? And how would
> one achieve that?
>
> Incidentally, I ran into this problem on completely valid code, where
> the parser apparently didn't understand namespaces correctly; but
> that's I separate issue which I'm going to investigate separately now.
Some of the relevant traversal-functions already have protections against
endless recursion, and those that don't have it should get it. So post the
backtrace please so we can see what function is the culprit.
Greetings, David
More information about the KDevelop-devel
mailing list