[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Running out of "macro" frames

I just spent about eight hours trying to figure out how code
that wasn't calling any macros or using any ^] commands whatsoever
could trigger the error "TMN" (too many nested macros, ^]^X, ^]^Y,
or ^]qreg).  This error is particularly insidious because it is
effectively a PDL overflow, thereby blowing away all the debugging
and backtrace aids, because there's no pdl to work with.

It turns out that creating buffers and Q-vectors uses up macro
frames also, as nearly as I can tell, and there is a rather
low limit on the number that can be created (about a hundred
or so).  My application was creating an elaborate data structure
using nested Q-vectors.

I have three recommendations:
(1) The error message should be clarified to indicate more clearly
the possible sources of overflow.
(2) It should be allowable to create many more Q-vectors than currently
possible.  I appreciate the need for a limit on runaway macros, but
the limit (expressed by MFMAX) should be variable.  Either Q-vector
creation should circumvent the overflow test, or there should be
an FS flag for raising the limit.
(3) When overflow occurs, the limit should be raised automatically
to allow the debugging routines (cf. Q..P) a little room to work in.