On 08-Aug-2014 10:54 -0500, Needles,Stephen J wrote:
MCH0601 - I've no idea what's happening.
We are on v7r1 and last TR.
In the examples below, the messages, CONDITIONHANDLER is our
registered condition handler process that is invoked whenever a CPF
error is encountered.
The reference to LIBRARY/ANYPROGRAM is the program that is supposed
to run. It changes, but the line number reference does not.
A number of different, unrelated programs are failing and an RNQ9999
message is sent...the messages are all:
Message: Message received for RPG procedure CONDITIONHANDLER (C G D
Cause: Message was received by RPG procedure CONDITIONHANDLER in
program LIBRARY/ANYPROGRAM at statement 227.
Always line number 227. Dumps show nothing.
The MCH0601 error is for a Job Object and looks like:
<<SNIP ed: msgMCH0601 >>
Message: Space offset X'00887C0F' or X'0000000000000000' is outside
current limit for object QRWTSRVR QUSER 727437.
Cause: A program tried to set a space pointer, tried to use storage
outside a space, or tried to use an unallocated page in teraspace.
The space class is X'03'. The space class designates the type of
03-implicit process space for static storage in activation
group mark X'0000000000000002'.
Offset X'00887C0F' only applies to storage outside teraspace.
X'8000000000000000CE98A40101001000' is a pointer to the
teraspace page or the start of the implicit process space for the
I'm totally lost. Any assistance will be appreciated!
Preferably the details [F6=Print or spooled second-level joblog]
would be included for the MCH0601 to ensure the full context of the
failure is presented. Probably the stmt/227 accurately describes the
context of the failure.
The error is suggesting that a reference to the /static storage/ of
the job was made at statement 227, but the reference was outside the
bounds of the storage provided to the job for the PSSA provided to the
activation group identifier of two [probably created for the named
activation group for the ANYPROGRAM?]. The implication is that the
condition handler is improperly coded, attempting an invalid storage
access request; likely an assignment to or from that storage location.
I believe the RNX9999 implies the error was implicitly handled in
response to an unmonitored exception, and if so, the MCH0601 can be used
to trigger an action [and should by default the existing action would
include spooled files QPDSPLOG and QPSRVDMP being produced; wherein the
former includes a stack and the latter likely including some of the
static storage identified by the pointer, which I suppose would reveal
the actual length and implying the large offset was invalid due to being
far past the end]. One such action is to pend processing until debug is
activated... though if the problem can be reproduced, just starting
debug and debugging through to just prior to the point of failure to
review the address\pointer references that are eventually made in
stmt/227, is possibly the best approach.