> > +static int evalcount;/* number of nested evalfun calls */
> ...
> > + if (evalcount++ >= MAX_RECURSION)
> > + sh_error("Maximum function recursion depth (%d) \
> ...
> > +#define MAX_RECURSION 1000 /* maximum recursion level */
>
> A couple of years ago i discovered mksh was crashing due to not
> having such a limit, and in the discussion which started with
> Thorsten (the mksh developer) it became obvious that a then-new
> bash seemed to have stopped using a limit; Thorsten's point was
> that the real limit can only be artitificial or very costly (if
> i recall correctly). By then i sent Mr. Xu a message in private
> with i think a summary of all that, but never got any response.
> I know that the Lua scripting language seems be in the process of
> introducing such a limit with the upcoming release.
A recursion limit is not without precedent. CPython sets a platform-
dependent recursion limit for this same purpose:
https://docs.python.org/3/library/sys.html#sys.setrecursionlimit
But indeed, the limit is "artificial" or arbitrary. It should just be
"enough" that it isn't hit often with typical use.