Analyzing the damaged area

Once you determine that storage is bad or overlaid, try to identify the culprit. First, determine the extent of the bad data. Look for EBCDIC data or module addresses in storage to identify the owner. Any type of pattern in storage can indicate an error and identify the program that is using the damaged storage. Look at the data on both sides of the obviously bad areas. See if the length of the bad area is familiar; that is, can you relate the length to a known control block length, data size, MVC length? If so, check various offsets to determine their contents and, if you recognize some, try to determine the exact control block. In Figure 1, for example, storage from CSA shows a pattern of allocated blocks.

Figure 1. Example: Recognizing a pattern
 00CFD000   00000000   00000000   E5C7E3E3   080000F1   | ........VGTT...
 00CFD010   00000020   00000000   0000E3D8   00000000   | ..........TQ...
 00CFD020   00BE3D30   00000000   E5C7E3E3   080000F1   | ........VGTT...
 00CFD030   00000020   00CFD008   0000E260   00000000   | ......}...S-...
 00CFD040   00CA6A60   00000000   17000080   E5E2C90F   | ...-........VSI
 00CFD050   00CFE018   00CFD0B8   C8E2D4D3   4BD4C3C4   | ..\...}.HSML.MC
 00CFD060   E24BC4C1   E3C14040   40404040   40404040   | S.DATA
 00CFD070 TO 00CFD07F (X'00000010' bytes)--All bytes contain X'40', C' '
 00CFD080   40404040   000E0042   00000000   00000000   |     ...........
 00CFD090   00000000   00000000   00000000   17CA0000   | ...............
 00CFD0A0   1FFE0000   C2C3E3F3   D3C90001   00000000   | ....BCT3LI.....
 00CFD0B0   00000000   40080000   E2E8E2F1   4BE4C3C1   | .... ...SYS1.UC
 00CFD0C0   E34BC5D5   E5F2F600   00000168   00CFD0C8   | T.ENV26.......}
 00CFD0D0   F1000000   00CFD230   00CFD22C   13C9C4C1   | 1.....K...K..ID
 00CFD0E0   C8C5C240   00100150   00CFD244   00000160   | HEB ...&;.K....

Even if you do not recognize the pattern, take one more step. Can you determine the offset from some base that would have to be used in order to create the bit pattern? If so, the fact that there is a certain bit pattern at a certain offset can be helpful.

For example, a BALR register value (X'40D21C58') at an offset X'C' can indicate that a program is using this storage for a register save area (perhaps caused by a bad register 13). Another field in the same overlaid area might trigger recognition.

Repetition of a pattern can indicate a bad process. If you can recognize the bad data you might be able to relate that data to the component or module that is causing the error. This provides a starting point for further analysis.