Armin Rigo <[email protected]> added the comment: The reason is in rpython/translator/c/src/stack.h: you need a macro PYPY_INHIBIT_TAIL_CALL(). Without it, the C code compiles too many tail calls. This test is precisely checking a particular path that does only tail calls at the C levels. An optimizing compiler replaces them all with jumps, and then runs the seemingly infinite number of nested C calls in a finite amount of C stack.
There are probably portable ways to write the macro. ---------- nosy: +arigo ________________________________________ PyPy bug tracker <[email protected]> <https://bugs.pypy.org/issue1461> ________________________________________ _______________________________________________ pypy-issue mailing list [email protected] http://mail.python.org/mailman/listinfo/pypy-issue
