IBM Support

DFHSO0001 0C4 AKEX at offset 265C in DFHSOIS at CICS startup

Question & Answer


Question

Why am I receiving the following DFHSO0001 message when starting up one of my CICS Transaction Server for z/OS (CICS TS) regions?

DFHSO0001 applid An abend (code 0C4/AKEX) has occurred at offset X'265C' in module DFHSOIS.
SYMPTOMS: PIDS/5655Y0400 LVLS/690 MS/DFHSO0001 RIDS/DFHSOIS
PTFS/UI32899 AB/S00C4 AB/UAKEX ADRS/0000265C

Answer

The failing instruction in the dump at offset 2658 in DFHSOIS (PTF level UI32899) is 00265896045018 or when looking at the listing of DFHSOIS the instruction:

 OI       PRLICICS(@05),B'00000100'

Register 5 (R5) is 00000000_00000000 which is bad. Therefore, the abend0C4 occurred. R5 is from R2 + 18. The TCB address and STCB address contain valid addresses, but OTCB address contains all zeroes. The problem is that the SO TCB does not appear to be dubbed as an OMVS process and so does not have an OTCB.

Looking into the same dump from UNIX System Services (USS) perspective, you can see that a dub had just failed on the TCB that took the abend0C4. The dub is failing because the number of processes for this userid (UID) has been exceeded. To do this, you need to look for 'DUB Exit' trace and verify that +10 into that CTRACE entry contains FFFFFFFF , +14 contains 0000009C and +18 contains 0B250012.

You can enter the following command from IPCS option 6) to find the Return Value, Return Code, and Reason Code:

 IP CTRACE COMP(SYSOMVS) LOCAL FULL ASIDLIST(X'yyy') OPTIONS((KERNINFO))

The Return Value is at +10, the Return Code is at +14, and the Reason Code is at +18.

For example, the following shows a partial of the command result:

 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    COMPONENT TRACE FULL FORMAT                           
    COMP(SYSOMVS)  
    OPTIONS((KERNINFO))    
     FCN...NOOP             SYSCALL...NOOP     PID...00000000  MODULE...BPXPRIN1  
    **** 12/11/2016    
                                                                                                                                     
    SYSNAME   MNEMONIC  ENTRY ID    TIME STAMP     DESCRIPTION  
    -------   --------  --------  ---------------  -------------    
    MVSA      PROCESS   0B0B005B  01:31:32.445664  DUB EXIT 
        ASID..00E2      USERID....xxxxxxxx  [email protected]  
        TCB...009B3B88  EUID......00000000  PID.......00000000  
       +0000  8040D700  00400000  00000000  00000000  FFFFFFFF  0000009C  0B250012            | . P.. ......................     |   
     FCN...NOOP             SYSCALL...NOOP     PID...00000000  MODULE...BPXPRIN1        
 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

OMVS CTRACE buffers show the dub is failing with RC9C RSN0B250012. To determine the meaning of reason codes for z/OS UNIX and zSeries File System (zFS), see BPXMTEXT for z/OS UNIX reason codes for the details.

From TSO, enter TSO BPXMTEXT xxxxxxxx, where xxxxxxxx is the reason code. For example: To find the meaning of RSN=0B250012 from TSO, enter:

 TSO BPXMTEXT 0B250012

You will get these results:
JRMaxChild: The maximum number of processes for this user ID has been exceeded
Action: Ask the system programmer or system administrator to increase the
MAXPROCUSER parameter of the BPXPRMxx parmlib member.

Under that same UID, you need review the number of processes started under that UID, and compare them to either the BPXPRMxx MAXPROCUSER value, or PROCUSERMAX if the value is being overridden by the process's OMVS segment. This can be queried using command:

 LU userid OMVS(PROCUSERMAX(nnnn)) 

If the problem does recur, you will need to get a dump of OMVS and its dataspaces by specifying the following MVS dump options:

  DSPNAME=('OMVS'.SYS*,'OMVS'.BPX*),JOBLIST=(OMVS)  

To figure out the number of active processes in this ASID, using the OMVS dump, enter command:

 IP OMVSDATA SUMMARY

and then search for the target ASID in the ASID column.

You will also need review your limits and make sure they are reasonable by entering the following command:

 D  OMVS, LIMITS

If you do not see MAXPROCUSER listed in your D OMVS,LIMITS output , then you do not have it set. The default value is 25. It can also be overridden on a per-process basis, where you have to query it by entering the following TSO LU command:

 LU userid OMVS(PROCUSERMAX(nnnn)) 

In summary, you need to determine how many processes you generally would expect to see under that started tasks and whether that was an anomaly (and if so, why there were too many processes started by one of those jobs). Sometimes the jobs are in fact behaving fine and just require a revisiting of the initial values set.

Sharon Yang
IBM CICS L2 Support

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

Product Synonym

CICS/TS CICSTS CICS TS CICS Transaction Server

Document Information

Modified date:
27 January 2017

UID

dwa1339425