FRR Stacks

The FRR (functional recovery routines) stacks are often useful for understanding the latest processes on the processors. They are mapped by the FRRS control block and consist of a header and 16 20 byte FRR entries which are added and deleted dynamically as processing occurs. There is always one set of FRR stacks per processor.

Look for the pointer to the current FRR stack at PSA +X'380' (PSACSTK). This will tell you where to find the FRR that was current at the time an error occurred.

The current FRR stack will often also be the normal FRR stack, which is pointed to by PSA +X'C00' (PSASTAK). This type of FRR is used by programs running in SRB or task mode and is usually the most useful type of stack for diagnosis. You should only, however, rely on the current recovery stack entry. Do not use FRR stacks to get information about the exact flow of processing. For example, in the following scenario:
  • Module A gains control and establishes recovery
  • Module A passes control to module B
  • Module B establishes recovery, performs its function, deletes recovery
  • Module C establishes recovery and subsequently encounters an error.

The FRR stack will contain entries for module A's and C's recovery routines. But there is no indication from the FRR stack that B was ever involved in the process although it might have contributed to or even caused the error. You can gain insight into the process but will not see the exact flow. See Table 1 for useful fields in an FRR stack header and Table 1 for useful fields in the FRR entries.

See z/OS® MVS™ Data Areas in http://www.ibm.com/systems/z/os/zos/bkserv/ for a description of the FRRs and PSA.