A fix is available
APAR status
Closed as program error.
Error description
Multiple IFP region up with conccurent updates against DEDB areas, run DEDB Alter utility to perform one area change: UOW & ROOT, and randomzier replace. Right after DEDB Alter utility submit, one or more IFP regions 1026 abend occurred. This problem only occurs when there are multiple IFP regions up.
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: ALL IMSFP V13 DEDB ALTER USERS. * **************************************************************** * PROBLEM DESCRIPTION: ABENDU1026 while releasing the shared * * DEDBALTER DEDB latch. * **************************************************************** * RECOMMENDATION: INSTALL CORRECTIVE SERVICE FOR APAR/PTF * **************************************************************** Abendu1026 seen on dependent regions while DEDB ALTER is active. The QLTL (latch data block) was being obtained when the first sharing thread needed to obtain the latch. There was a race condition when two threads obtained the QLTL block at the same time, and one was lost. The thread which lost out (the block was lost due to the DMCB_QLTL pointer being overwritten) had already obtained the latch and the shared latch holder count was set to one. Then block was then lost, resulting in the 'active' QLTL being short one in the share count. During utility termination, as the threads released the shared DEDB latch, the count went negative triggering the abend u1026 .
Problem conclusion
GEN: KEYWORDS: *** END IMS KEYWORDS *** DBFDAC60 New part. Case 1 will get a DBFQLTC block when called from - OCO parts Case 2 added for unrelated apar which needs to - call DBFDAC60, to - reduce sequence number issues with - future apars DBFDADCS, DBFDADC0 Get DBFELOCK LOCK=QLTC when processing the DATM chain. - This is to - avoid timing issues with DBFDAS00 processing - the DATM chain at the same moment. DBFDAH00 Added code to get a QLTLT for DBCB_QLTL prior to obtaining - the AREA - QUIECE latch (if DMCB_QLTL is 0) DBFDAI10 Added code to check if DBFDAQA0/DBFDAQD0 is in a 'non-post' - state, and - if so to skip posting. This will occur if - DAQA/DAQD need to issued a service call which *might* wait. We check QLTE_TP with CS logic, and - if QLTE_TP='POOK' or - QLTE_TP='INIT' we can post. DBFDAQA0 CS QLTE_TP='PONO' (POst NO) before setting the timer. CS - QLTE_TP='POOK' just before calling LATCH module (DBFDALA). - The latch module checks the POST code, so being posted after - this point is ok. We now call DBFQLTC4 twice (see write up on DBFQLTC2). - This first call is to obtain the QLTD/QLTA if they do not - exist. The second call is to obtain the latch DBFDAQD0 CS QLTE_TP='PONO' (POst NO) before setting the timer. CS - QLTE_TP='POOK' just before calling LATCH module (DBFDALD). - The latch module checks the POST code, so being posted - after this point it is OK to post us. We now call DBFQLTC4 twice (see write up on DBFQLTC2). - This first call is to obtain the QLTD if it does not exist. - The second call is to obtain the latch DBFDAS00 Obtain the DBFELOCK LOCK=QLTC before processing the DATM - chain. DBFDAU70 Obtain the QLTC block for DMAC_QLTL before setting DMCBDAIP, - and during ALTER_ARAN , which will - trigger DBFIRC10 to obtain the latch at the start of a UOR. DBFEPB Added DBFDAC60 entry point. DBFDAU70 might obtain the - latches prior to loading the modules. DBFEPST Added EPSTQLTE for DBFDAQA0/DBFDAQD0 to save the QLTE. It - might be needed by DBFATRM0 during abnormal termination. DBFESCD Added ESCDDAC60 EPA for DBFDAC60. DBFIMPL0 Load DBFDAC60 and save EPA in ESCDDAC60 DBFNCBS0 Obtain the DMAC_QLTL (QLTC) block before DMCBDAIP is set. DBFQLTC0 Removed code to get the QLTC for DMCBQLTL, which is not - obtained earlier in the DEDB ALTER process. DBFQLTC2 Removed code to get the QLTC for DMCBQLTL, which is not - obtained earlier in the DEDB ALTER process. Broke code into a case statement. Case 1 will get a QLTD - if needed. Case 2 will find the QLTD and obtain - the DEDB LATCH. This was simpler - than adding the - code into DBFDAQD0 to obtain the QLTD block. DBFQLTC4 Removed code to get the QLTC for DMCBQLTL, which is not - obtained earlier in the DEDB ALTER process. Broked code into a case statement. Case 1 will get a QLTD - if needed. Case 2 will find the QLTD/QLTA and obtain - the AREA LATCH. This was simpler than adding the code - into DBFDAQA0 to obtain the QLTD/QLTA blocks. DBFQLTE Added F1_TERM flag, so DBFDAI10 knows NOT to post - DBFDAQA0/DBFDAQD0.
Temporary fix
Comments
APAR Information
APAR number
PI13486
Reported component name
IMS V13
Reported component ID
5635A0400
Reported release
300
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2014-03-11
Closed date
2014-05-08
Last modified date
2014-06-03
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
UI17810
Modules/Macros
DBFDAC60 DBFDADCS DBFDADC0 DBFDAH00 DBFDAI10 DBFDAQA0 DBFDAQD0 DBFDAS00 DBFDAU70 DBFEPST DBFESCD DBFIMPL0 DBFNCBS0 DBFQLTC0 DBFQLTC2 DBFQLTC4
Fix information
Fixed component name
IMS V13
Fixed component ID
5635A0400
Applicable component levels
R300 PSY UI17810
UP14/05/14 P F405
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":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG19M","label":"APARs - z\/OS environment"},"Platform":[{"code":"PF054","label":"z Systems"}],"Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
14 December 2020