IBM Support

DFHAP0707 0C4 AKEA at offset 472 in DFHEDP after a deadlock rollback

Question & Answer


Question

Why would I receive message DFHAP0707 for an abend 0C4/AKEA in DFHEDP followed by message DFHAP0001 reporting an abend at offset x'472' in DFHEDP? This is occurring after a deadlock rollback. The abend did not happen before upgrading to CICS Transaction Server for z/OS (CICS TS) V5.1.

These are the messages that I am receiving:

DFHAP1903 date time CICSAPPL SPI AUDIT LOG IS DISABLED.
DFHAP0707 CICSAPPL AN ABEND (CODE 0C4/AKEA) HAS OCCURRED IN TASK RELATED USER EXITPROGRAM DFHEDP.
DFHAP0001 CICSAPPL AN ABEND (CODE 0C4/AKEA) HAS OCCURRED AT OFFSET X'00000472' IN MODULE DFHEDP.
DFHME0116 CICSAPPL  013 (MODULE:DFHMEME) CICS SYMPTOM STRING FOR MESSAGE
DFHAP0001 IS PIDS/5655Y0400 LVLS/680 MS/DFHAP0001 RIDS/DFHSRP PTFS/GM01 AB/S00C4 AB/UAKEA RIDS/DFHEDP ADRS/00000472
DFHDU0205 CICSAPPL A SYSTEM DUMP FOR DUMPCODE: AP0001  , WAS SUPPRESSED BY THE DUMP TABLE OPTION FOR THIS DUMPCODE

Answer

One reason for those symptoms is a program doing a non-SCHD EXEC DLI command after having done an EXEC CICS SYNCPOINT or EXEC CICS SYNCPOINT ROLLBACK. The SYNCPOINT, or SYNCPOINT ROLLBACK, behaves just like an EXEC DLI TERM and frees the PSB and PCB list. So then a subsequent non-SCHD EXEC DLI command that tries to use the now-freed PCB list can result in the abend0C4 in DFHEDP.

This usually happens in the aftermath of a DB2 deadlock timeout. There is a DB2CONN/DB2ENTRY attribute called DROLLBACK that defaults to YES. That setting tells CICS to do an automatic Syncpoint Rollback when a task gets a DB2 deadlock timeout. Then after the Syncpoint Rollback, CICS returns to the application with a -911 SQL Return Code. (When DROLLBACK is set to NO, CICS doesn't do the Syncpoint Rollback and returns to the application with SQL Return Code -913.) If the application doesn't realize that the -911 means CICS has automatically done a Syncpoint Rollback for the task, it is easy to see how the application might subsequently issue a non-SCHD EXEC DLI command and get the abend0C4 in DFHEDP problem.

If you want an application to continue with EXEC DLI commands after receiving an SQL Return Code -911, you will need to add an EXEC DLI SCHD before any other EXEC DLI commands.

With CICS trace off, here is an example of the Exception trace entries showing the DB2 Deadlock Timeout, then the Syncpoint Rollback, then the abend0C4 in DFHEDP:

 000001 57398 012 AP 3270 D2D2 *EXC* DEADLOCK ROLLBACK_REQUESTED 
              RET-BC8EF338 09:11:25.7767835693 **.**********
 000002 57398 012 AP 319B D2EX1 *EXC* ROLLING_BACK_DUE_TO_DEADLOCK
              RET-80095B46 09:11:25.7767861943 00.0000026250
 000003 57398  AP 2533 ERM *EXC* RECOVERY PROGRAM(DLI )
              RET-C99702FC 09:11:25.8553610085 00.0785748142*
 000004 57398  AP 0790 SRP *EXC* PROGRAM_CHECK
              RET-BA488EA4 09:11:25.8561980683 00.0008370598
 000005 57398  AP 0781 SRP *EXC* ABEND_ASRA PROGRAM(DFHEDP ) OFFSET(00000472)
              EXEC_KEY(CICS)RET-BA488EA4 09:11:25.8562073808 00.0000093125

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSGMGV","label":"CICS Transaction Server"},"Platform":[{"code":"PF035","label":"z\/OS"}],"Component":"Recovery","Version":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]

Product Synonym

CICS/TS CICSTS CICS TS CICS Transaction Server

Document Information

Modified date:
28 January 2015

UID

dwa129114