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