Marc Feeley scripsit:

> In this example, there will be an arbitrarily long sequence of C calls
> (in the unwinding of the recursion to even) with no Scheme call, so
> stack size checks will not be performed during the unwinding, yet the
> C stack grows during the unwinding.  There is no stack overflow during
> the winding phase of the recursion because the stack size checks are
> performed at regular intervals (at each entry to even).

While you're right, it's not clear that this matters enough to fix.
It's not a *correctness* error, since every implementation will blow up
on excessive recursion sooner or later when memory is exhausted.

If the overflow check were done, the maximum recursion depth would be
bounded by the C heap, not the C stack.  However, inserting all those
checks has a cost.  So it would be a question of measuring the added cost
of the checks over a large variety of programs.  If it's consistently
small, they should be added; if not, there should be an option to provide
them or to turn them off.

-- 
John Cowan              co...@ccil.org          http://www.ccil.org/~cowan
Any day you get all five woodpeckers is a good day.  --Elliotte Rusty Harold

_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to