A fix is available
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
| 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