Re: [RFC PATCH] explicitly mark recursion count

Jörn Engel
2004-06-02T14:28:28Z

On Wed, 2 June 2004 07:15:07 -0700, Linus Torvalds wrote:
> On Wed, 2 Jun 2004, Jörn Engel wrote:
> >
> > For a->b->c->a type recursions, I also need to identify all involved
> > functions in the correct order, that's where my ugly format comes
> > from.
>
> Why?
>
> You really only need to know that _one_ of the entries break the
> recursion, and you need to know what the break depth is for that one
> entry.
>
> So for example, if "c" is annotated with "max recursion: 5", then you know
> that the above loop will recurse at most 5 times.
>
> I don't see why you need any other information.

Then you see something I don't see. For example there are quite a few
recursions with some function like

void foo(int depth)
{
if (!depth) {
bar(1);
}
...
}

bar will, maybe through several more functions call foo(1).

How can you say that foo will beak this recursion after two rounds
max? What if a changed bar decrements the depth value? The recursion
will run for infinity now, won't it? And whoever changed bar doesn't
have a clue that he now fucked up your comment to foo.

I claim:
There is no way to tell the depth of any recursion without looking at
all involved functions.

Prove me wrong, please.

Jörn

--
When in doubt, use brute force.
-- Ken Thompson