Dump analysis - detailed
To thoroughly analyze a dump, you need to understand the save area, DL/I call sequence, and the buffer handler request sequence. This section discusses each of these elements.
Save areas
A DL/I call passes from the application program to the DL/I language interface (DFSLI000), to the program request handler (DFSPR000), to the batch nucleus (DFSBNUC0), and then to the DL/I call analyzer (DFSDLA00).
If everything works properly, the save area trace shows the contents of the registers at entry to the application program, the program request handler, and the DL/I analyzer. The DL/I analyzer passes the first save area in the PST to a DL/I module. This PST save area is the first save area below the save area that holds the contents of the registers at entry to the DL/I analyzer.
The contents of register 1 at entry to the DL/I analyzer is a pointer to the PST. This is the only register passed to the analyzer (the user call list pointer is passed to the analyzer in PSTIQPRM).
If the abend is a program check or an inline abend, the save area trace always gives a true indication of the flow of control between DL/I modules and the current depth of save area set usage. Most DL/I modules or X'01' with the low-order byte of register 14 on return to a higher-level module.
- X'AA '
- DFSDLR00
- X'BB'
- DFSDDLE0
- X'CC'
- DFSDLD00
- X'DD'
- DFSDXMT0
- X'EE'
- DFSURGU0
- X'FF'
- DFSRCHB0
WD1 00000000 HSA 202C6BC8 LSA 2CD73B08 RET AA049128 EPA 30B02F40 R0 30000355
R1 212AD040 R2 2CD78790 R3 2FB6F5B4 R4 8004911E R5 2FB6FA8C R6 01410254
R7 21748060 R8 2FB6F82C R9 00000002 R10 30B053C0 R11 000401E0 R12 00047DC0
Since RET(PSTSAVL+12) contains X'AA', module DFSDLR00 detected this pseudoabend.
DL/I call sequence
You can determine the current DL/I call and the sequence of calls leading up to the failure by scanning the DL/I trace table. Find the last entry made in the trace table by using the current entry pointer and then scanning backward in the table for the last entry made by the DL/I analyzer (entry code AA). This entry represents the current DL/I call.
You can determine the call sequence by continuing the backward scan, noting each entry made by the analyzer. Along with the call function, the analyzer also records the PCB address that was passed in the user's call list.
Buffer handler request sequence
The buffer handler router traces each request to the buffer handler from a DL/I module. When the router receives the request, it passes the request to the OSAM buffer handler or the VSAM interface module. When the call is complete, control returns to the router. The router obtains the next available trace table entry and stores information describing the input and output for the buffer handler call.
By looking at all buffer handler entries between two DL/I analyzer DFSDLA00 entries (two specific DL/I calls), you can determine all requests made to the buffer handler to satisfy any specific DL/I call. A typical request to the buffer handler is a GET by relative byte address from the retrieve module. The entry made for this GET by relative byte address has a function code of E2, the RBA requested, and, if the request was satisfied (return code 0), the address of the segment read into the buffer pool.