Internal Error #993

(#96477) An example of this error occurred during an attempt to
macro compile a local in a block expression (INDEX..ON). First the
"Error BASE/1065 Argument error: &" occurred. Then three copies of
this error message (#993) were output. The message "Aborted during
termination" also accompanied this error message before the application
came to a screeching halt in the land of the C prompt.

() My experiences with this message occur in a custom error handler.
After receiving an error message during a stabilize of a tbrowse, the
internal error 993 is generated as I display an array containing
callstack information. I'm not sure what the correlation might be --
except for the fact that both occurred within an error handler.

(#110724) The following function was reported to crash with an internal
error 993 (Don Kiely 72657,475):

FUNCTION OpenFiles()
FIELD Number IN JOBS

USE COMPANY INDEX COMPANYN,COMPANYC NEW
USE JOBINFO INDEX JOBINFON NEW
USE JOBS INDEX JOBSN,JOBSC NEW
SET RELATION TO Number INTO JOBINFO ADDITIVE
USE PEOPLE INDEX PEOPLEN,PEOPLEC NEW // Dies here.
RETURN NIL

Don said that when the error occurs, the call stack looks something like
this (without using any special error handler):

OPENFILES
__DBSETIND
(b)ERRORSYS
(b)ERRORSYS

I was unable to re-create this occurrence by using similar databases.

(#122336) Laurence Wieland [71141,1411] suggests that this error is ~
generated purely on the basis of recursion: generating an error within
an error handler, for instance. I wonder if there could be some problem
with the callstack that causes the tail to point to the head, causing the
callstack problem I outlined above ... (?)

(#115799) Carl Byington [74040,1156] provided this information: ~

"Internal error 993 may be generated by the error handler trying to do a
nested read (for an error that was caused by a valid or when clause) without
the extra assignment statement that is required for any nested read to work
correctly."