IBM Support

PH47995: ABEND0C4-04 IN DFSUSE00 OFFSET +X'8B0' DUE TO INVALID CCB LATCH USE ANCHOR.

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • The abend0C4-04 (storage protection exception) occurred at
    DFSUSE00 offset +'8B0'. The real offset was +'8AC'.
    The instruction was CDS (Compare and Double Swap).
    Because Register 5 contains an invalid resource header pointer
     ZERO '00000000'.
    The Register 5 loaded from CCBUSEA(CCB LATCH USE ANCHOR),
    but it was already zero.
    Therefore, Register 0 (000A0000) and Register 1 (000130E1)
    were also invalid address which was loaded by LM R0,R1,0(R5)
    instruction after label USE00710.
    .
    The problem trigger was /DISPLAY CONVERSATION command,
     it was issued via OM(Operations manager).
    .
    From SVC DUMP:
    <> Command flow:
    PROCESS /DISPLAY CONVERSATION command via OM.
      --> SCAN CCB ROUTINE (SCANCCB)
        -->  SCANCCB  (SUBROUTINE TO FIND THE FIRST OR NEXT CCB
               in DFSSUT00
          --> DFSUSE CALL FOR TYPE CCB, it issues the INUSE CALL.
            -->  DFSSUT00+C9C -> DFSUSE FUNC=INUSE --> call
             -->  DFSUSE00 -> SET RESOURCE = INUSE -->
               -->  CDS instruction failed,
                *** 'Abend0C4-04' at DFSUSE00 offset+8AC ***
    .
    <> Module flow:
    SAP AT 2A6259E0 RUN LATCH     FLG-80020004 40008000 DPNO-0033A
                    POST-00000000 ECB-38256078 TYPE-CTL
    DFSOCM00+12/08/16-                                +037E
    DFSOCM30+SP53+1510+12/08/16+14.44                 +02D6
    DFSICLD012/08/1613.26                             +00D4
    DFSIDP8012/08/1615.09                             +019A
    DFSIDP80-SCANCCB                                  +0072
    DFSSCBT0+20161208+14.14+1510                      +0160
    DFSSUT00-12/08/16                                 +07BE
    SUT00USE-12/08/16                                 +01F2
    DFSUSE00+1510+20161208+13.55                      +0B08
    USE06000                                             RETURNED
    .
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:                                              *
    * All IMS V15 users                                            *
    ****************************************************************
    * PROBLEM DESCRIPTION:                                         *
    * ABEND0C4 in module DFSUSE00+08AC on CDS instruction near     *
    * label USE00712.  R5 is 0.  The save area after DFSUSE00's    *
    * save area shows USE06000 as returned.                        *
    ****************************************************************
    * RECOMMENDATION:                                              *
    * INSTALL CORRECTIVE SERVICE FOR APAR/PTF                      *
    ****************************************************************
    This is a timing issue in module DFSUSE00.  DFSUSE00 was called
    to obtain an INUSE on a CCB (conversation control block).  The
    code in DFSUSE00:
    
     1. Obtains the address of the use header from field CCBUSEA.
     2. Validates the address is not zero (if it is, return
        either RC=12 (for COND=YES callers) or ABENDU0790 SC03
        (for COND=NO callers).
     3. Obtain INUSE serialization on the header
     4. Go to DFSUSE00 exit point (USE00900).
    
    
    At USE00900, just before returning to the caller, the code
    verifies that the address of the use header in CCBUSEA has not
    changed from the address that DFSUSE00 used for the INUSE.  If
    the address is different, then code invokes internal subroutine
    USE06000 to release the INUSE, and then branches back to label
    USE00710 (for INUSE) or USE00510 (for CONN) to re-get the
    serialization on the current header.  This code was added in IMS
    V5 by APAR PQ13091 (V6 FF APAR PQ16061 in the SDCs in current
    DFSUSE00).
    
    This retry code does not re-do step 2 in the sequence shown
    above to test the new header address for zero.  In this case,
    the abending DFSUSE00 call was due to a /DIS CONV command
    (module DFSIDP80).  The conversation represented by the CCB had
    ended between the time DFSUSE00 was called and loaded the
    resource header address and the time it exited and did the exit
    validation check.  The /DIS CONV command runs under the CTL TCB;
    the conversation was OTMA and exited under an OIM TCB.  The
    check found field CCBUSEA was zero (so it was different than it
    was on entry) and retried the INUSE with a resource header
    pointer of zero.  Because of the missing check for 0, DFSUSE00
    abended with an 0C4 trying to get an INUSE at low core location
    0.
    
    While this case involved a CCB and conversational processing,
    the verify / retry logic applies to all block types supported by
    DFSUSE00.
    
    Note that while investigating this problem, it was noted that
    the documentation for ABENDU0790 SC02 and SC03 in the IMS
    manuals are incorrect.  The manuals currently say:
    
      X'002'
        Invalid block type has been specified or the use
        anchor pointer is zero.
    
      X'003'
        The requester did not issue in-use function before
        issuing a lock function.
    
    The statement about "or the use anchor pointer is zero" on the
    X'002' subcode description is incorrect, and should be moved to
    the X'003' description.  The DOC HOLD card included with this
    APAR makes this correction.
    

Problem conclusion

  • Code is added after the call to USE06000 to check the new header
    pointer for 0.  If 0, then the same logic as is currently at
    label USE00390 is performed:  If COND=YES, set module return
    code in R15 to return code 12.  If COND=NO, issue ABENDU0790
    RC03.  For the RC 12 case, the exit logic also cleans up the
    CULE entry that had been allocated for the INUSE, since it will
    not be used.
    
    DOC HOLD to correct ABENDU0790 documentation:
    
    In IMS V15 manual Messages and Codes, Volume 3: IMS Abend Codes,
    GC27-6791, Chapter 17. IMS abend codes 0751 ? 0800, for abend
    code 0790 (
    https://www.ibm.com/docs/en/ims/15.3.0?topic=0800-0790 ):  The
    current documentation for the abend subcode in register 15 for
    subcodes X'002' and X'003' is not correct.  The abend subcode
    X'002' description contains the phrase "or the use anchor
    pointer is zero".  This phrase should be moved to subcode
    X'003'.  The corrected text for both subcodes is as follows:
    
      X'002'
        Invalid block type has been specified.
    
      X'003'
        The requester did not issue an in-use function before
        issuing a lock function, or the use anchor pointer is
        zero.
    
    This change applies to all levels of IMS currently supported in
    the IBM Documentation Center.
    

Temporary fix

  • *********
    * HIPER *
    *********
    

Comments

APAR Information

  • APAR number

    PH47995

  • Reported component name

    IMS V15

  • Reported component ID

    5635A0600

  • Reported release

    500

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    YesHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2022-07-15

  • Closed date

    2022-09-19

  • Last modified date

    2022-10-03

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

    UI82450

Modules/Macros

  • DFSUSE00
    

Publications Referenced
GC27679100    

Fix information

  • Fixed component name

    IMS V15

  • Fixed component ID

    5635A0600

Applicable component levels

  • R500 PSY UI82450

       UP22/09/21 P F209 ¢

Fix is available

  • Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPH2","label":"IMS"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"15","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]

Document Information

Modified date:
22 December 2023