The following are commonly known as bad addresses. If you recognize
these in the code you are diagnosing, focus your problem source identification
on these areas:
X'000C0000', X'040C0000', or X'070C0000',
and one of these addresses plus some offset. These are generally
the result of some code using 0 as the base register for a control
block and subsequently loading a pointer from 0 plus an offset, thereby
picking up the first half of a PSW in the PSA.
Look for storage
overlays in code pointed to by an old PSW. These overlays result
when 0 plus an offset cause the second half of a PSW to be used as
a pointer.
X'C00', X'D00', X'D20', X'D28', X'D40',
and other pointers to fields in the normal functional recovery routine
(FRR) stack. Routines often lose the contents of a register during
a SETFRR macro expansion and incorrectly use the address of the 24-byte
work area returned from the expansion.
Register save areas. Storage might be overlaid by code doing
a store multiple (STM) instruction with a bad register save area address.
In this case, the registers saved are often useful in determining
the component or module at fault.