Re(lSOIl for tlte Abend
If the CP SET DUMP command directed the dump to tape or the printer, the
printed format of the printed dump will not contain formatted control blocks. If
the system was an attached processor or multiprocessor, all of the registers, etc.,
are printed for the abending processor. Also, each PSA is printed before printing
main storage.
When the Control Program can no longer continue and abnormally terminates, you
must first determine the condition that caused the abend, and then find the cause of
that condition. You should know the structure and function of the Control Pro­
gram. "Part 1: Control Program (CP)" contains information that will help you
understand the major functions of CPo The following discussion on reading CP
dumps includes many references to CP control blocks and control block fields.
Refer to VM/SP Data Areas and Control Block Logic, Volume 1 for a description
of the CP control blocks. Figure 68 on page 512 shows the CP control block
relationships. Also, you will need the current load map for CP to be able to identi­
fy the modules from their locations. The load map is created at initial CP gener­
ation time. See the VM / SP Installation Guide for obtaining the original copy of the
CP load map.
Determine the immediate reason for the abend. You need to examine several fields
in the PSA (Prefix Storage Area), to find the reason for the abend. In a
uniprocessor system, the PSA is in locations 0 to 4095. In an attached processor or
multiprocessor system, each processor has its own PSA in addition to the absolute
PSA in locations 0 to 4095. 1. Examine the program old PSW and program interrupt code to find whether or
not a program check occurred in CPo The program old PSW (PROPSW) is
located at X'28' and the program interrupt code (INTPR) is at X'8E'. If a
program check has occurred in supervisor mode, use the CP system load map
to identify the module. If you cannot find the module using the load map, refer
to "Identifying a Pageable Module." Figure 74 on page 542 in "Appendix A:
System/370 Information" describes the format of an Extended Control PSW.
2. Examine the SVC old PSW, the SVC interrupt code, and the abend code to
find whether or not a CP routine issued an SVC O. The SVC old PSW
(SVCOPSW) is located at X'20', the SVC interrupt code (INTSVC) is at
X'8A', and the abend code (CPABEND) is at X'374'.
The abend code (CP ABEND) is a fullword. The first three bytes identify the
module that issued the SVC 0 and the fourth byte is a binary field whose value
indicates the reason for issuing an SVC O. Use the CP system load map to identify the module issuing the SVC O. If you
cannot find the module using the CP system load map, refer to "Identifying a
Pageable Module". Figure 74 on page 542 in Appendix A describes the format
of an Extended Control PSW.
Examine the old PSW at X'08'. If an abnormal termination occurs because the
operator caused a system restart, the old PSW at location X'08' points to the
instruction that was executing when CP recognized the abnormal termination.
Figure 74 on page 542 in Appendix A describes the format of an Extended
Control PSW.
Introduction to Debugging 507
Coiieci Injormaiion
Register Usage
4. For a machine check, examine the machine check old PSW and the logout area.
The machine check old PSW (MCOPSW) is found at X'30' and the fixed
logout area is at X' 100'. Also examine the machine check interrupt code
(INTMC) at X'ES'.
Examine several other fields in the PSA to analyze the status of the system. As you
progress in reading the dump, you may return to the PSA to pick up pointers to
specific areas (such as pointers to the real control blocks) or to examine other sta­
tus fields. For specific fields within the PSA control block, refer to VM / SP Data
Areas and Control Block Logic, Volume 1.
The following areas of the PSA may contain useful debugging information.
1. CP Running Status Field
The CP running status is stored in CPSTAT at location X'34S'. The value of
this field indicates the running status of CP since the last entry to the dispatch­
er.
2. Current User
The PSW that was most recently loaded by the dispatcher is saved in RUNPSW at location X'330', and the address of the dispatched VMBLOK is
saved in RUNUSER at location X'33S'. Also, examine the contents of control
registers 0 and 1 as they were when the last PSW was dispatched. See RUNCRO (X'340') and RUNCR1 (X'344') for the control registers.
Also, examine the CP internal trace table to determine the events that preceded the
abnormal termination. Start with the last event recorded in the trace table and read
backward through the trace table entries. The last event recorded is the last event
that was completed.
The TRACSTRT field (location X'OC') contains the address of the start of the
trace table. The TRACEND field (location X'10') contains the address of the byte
following the end of the trace table. The address of the next available trace table
entry is found in the TRACCURR field (location X'14'). To find the last recorded
trace table entry, subtract X'lO' from the value at location X'14'. The result is the
address of the last recorded entry. Figure 67 on page 504 describes the format of
each type of trace table entry.
Note: If the system was in attached processor or multiprocessor mode, the trace
table pointers are in absolute page zero.
In order to trace control blocks and modules, it is necessary to know the CP regis­
ter usage conventions.
The 16 general registers have many uses that vary depending upon the operation.
The following table shows the use of some of the general registers. 508 VM/SP System Programmer's Guide
Previous Page Next Page