When the recursion limit (function call depth limit) is exceeded,
a stack error is signalled. Previously a limit error
is signalled. Moreover, instances of J crashing due to a stack error
has been greatly reduced.

The recursion limit is exceeded when the total depth of the
called functions is larger than the limit,
where the depth of a function is roughly the depth of its
tree representation (5!:4). For example:

The recursion limit is reduced when debug mode is on (13!:0 ]1),
to enable the debug facility itself to be run when a stack error
is signalled.

The recursion limit is constrained by the stack size available to the
J executable file.
Crashes due to stack errors can be overcome by increasing the stack size.
Under Windows, the stack size can be queried and set as follows:

dumpbin /headers c:\j601\j.exe
editbin /stack:6000000 c:\j601\j.exe

The stack size is called “size of stack reserve”
in the dumpbin output.
The stack space can also be interrogated in J as follows:

ss=: 256 #. a. i. +&3 2 1 0@[ { 1!:1@]
368 ss

The right argument to ss is the name of the J executable file;
the left argument is the location in the file of the 4-byte
word that specifies the stack size.
(The location varies with the file, and the word is in reverse byte
order for Windows.)