A fix is available
APAR status
Closed as program error.
Error description
ABENDS0C4 during CQS startup by an invalid address in R4. The abend PSW points to the CLC instruction after the label FOR32000 in CQSMOV00. . Dump analysis indicates that we are running in a loop with a counter in R3. The code logic in CQSMOV00 is to use the value in LAAREADCNT as a loop counter to process the data objects. The loop counter is decremented at the end of the loop and is checked for zero to break out of the loop. The problem in this case is that we have a negative value x'FFFF221F' in the loop counter, R3. this should never happen. . Here is the abend symptom: BPE0006I CQS RQOT TCB ABEND S0C4, THD=UNLK DIAG=4004000184 BPE0006I MODULE ID = CQSMOV00+0140+2003 EP = 22A8A230 BPE0006I PSW = 077C3000 A2A8BF32 OFFSET = 00001D02 BPE0006I R0-3 00000001 00000000 22F43EC0 FFFF221F BPE0006I R4-7 23433000 23433040 23245F18 22A71AA8 BPE0006I R8-11 00000005 233E5190 23245F60 22A12730 BPE0006I R12-15 22A8BB42 232EE3A0 A2A8BEE2 00000000 . The purpose of this APAR is to tolerate the zero count returned from the IXLLSTM READ_LIST call, prevent the unexpected loop and report the problem when it reoccurs. .
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: All IMS V11 users of CQS. * **************************************************************** * PROBLEM DESCRIPTION: During a CQS startup with the use of * * resource structure, CQS terminated with * * an abend 0C4 in CQSMOV00 module. * **************************************************************** * RECOMMENDATION: INSTALL CORRECTIVE SERVICE FOR APAR/PTF * **************************************************************** During IMS shared queues registration and connection with CQS, CQS receives a data unlock request to move messages from the lock queue back to the original queue in order to make the messages available to other clients in the IMSplex. The CQS unlock request processor first determines the number of entries to be unlocked in the lock queue by issuing a sysplex service IXLLSTM REQUEST=READ_LIST on the lock queue. The read was successful with zero return and reason codes, but returned zero count of entries unexpectedly. The count of read entries is used as a maximum number of iterations of a loop process and decremented to zero until all entries are processed. The initial zero count made the loop counter negative and caused an infinite loop until the CQS startup failed with an abend 0C4: CQS RQOT TCB ABEND S0C4, THD=UNLK DIAG=4004000184 MODULE ID = CQSMOV00+0160+2008 EP = 0BD9E138 PSW = 077C3000 8BD9FED0 OFFSET = 00001D98 R0-3 00000000 0C6CA698 0C27D050 FFFF227F R4-7 0C76E000 0C76E040 0BD83AA8 0C57FF18 R8-11 00000005 0C73AA40 0C57FF60 0BD829D8 R12-15 0BD9FADA 0C6CA3F0 8BD9FE52 00000000 It is unexpected that the IXLLSTM REQUEST=READ_LIST call returns a zero return code and zero count of found entries. Normally if the read call is successful then the count is positive, and if the call is unsuccessful then the count is zero. Currently the unlock processor assumes a positive count upon the read call's zero return code and does not check the zero count case, this leads to an infinite loop problem.
Problem conclusion
GEN: KEYWORDS: ABEND0C4 S0C4 0C4 SYSPLEXSQ *** END IMS KEYWORDS *** CQSMOV00 - CQSMOVE/CQSUNLCK REQUEST PROCESSOR In the routine FORCE000 that processes CQSUNLCK FUNC=FORCE requests, upon a successful return of the IXLLSTM READ_LIST call, changed to check the count of returned entries. If the count is zero, trace the error condition and skip processing entries from the adjunct area and the buffer. If the count is non zero, process entries as normal. CQSBRW00 - CQSBRWSE REQUEST PROCESSOR In the routine BRWS0000 that processes CQSBRWSE FUNC=BROWSE requests, upon a successful return of the IXLLSTM READ_LIST call, changed to check the count of returned entries. If the count is zero, trace the error condition, skip processing entries from the adjunct area and the buffer, check if a read- continue is needed, if not, then return internal error to the requester. If the count is non zero, process entries as normal. In the routine BOBJ0000 that processes CQSBRWSE FUNC=BRWSOBJS requests, upon a successful return of the IXLLSTM READ_LIST call, changed to check the count of returned entries. If the count is zero, trace the error condition and skip processing entries from the adjunct area and the buffer. If the count is non zero, process entries as normal. CQSDEL10 - CQS DELETE DATA OBJECT PROCESSOR In the routine DELRSCTP that processes data object deletion by resource type and owner requests, upon a successful return of the IXLLSTM READ_LIST call, changed to check the count of returned entries. If the count is zero, trace the error condition and skip processing entries from the adjunct area and the buffer. If the count is non zero, process entries as normal. CQSTRUNL - CQSUNLCK TRACE RECORDS Defined a new CQSUNLCK trace subcode TRULIXLM EQU X'50' indicating IXLLSTM errors. Defined the IXLLSTM request error mapping for the new trace subcode. CQSTRBRW - CQS BROWSE REQUEST TRACE RECORDS Defined a new CQSBRWSE trace subcode TRBRIXLM EQU X'40' indicating IXLLSTM errors. Defined the IXLLSTM request error mapping for the new trace subcode. CQSTRDEL - CQS DELETE REQUEST TRACE RECORDS Defined a new CQSTRDEL trace subcode TRDLIXLM EQU X'0F' indicating IXLLSTM errors. Defined the IXLLSTM request error mapping for the new trace subcode. CQSFTRC0 - CQS Trace Entry Dump Formatter Defined a new trace subcode TRULIXLM and new text UNLCK_IXLM to the existing subcode table SUBCUNLCK to indicate IXLLSTM errors. Defined a new trace subcode TRBRIXLM and new text BRWSE_IXLM to the existing subcode table SUBCBRWSE to indicate IXLLSTM errors. Defined a new trace subcode TRDLIXLM and new text DEL_IXLM to the existing subcode table SUBCDEL to indicate IXLLSTM errors.
Temporary fix
********* * HIPER * *********
Comments
APAR Information
APAR number
PK78852
Reported component name
IMS V11
Reported component ID
5635A0200
Reported release
100
Status
CLOSED PER
PE
NoPE
HIPER
YesHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2009-01-16
Closed date
2009-03-20
Last modified date
2009-09-19
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
UK45088
Modules/Macros
CQSBRW00 CQSDEL10 CQSFTRC0 CQSMOV00 CQSTRBRW CQSTRDEL CQSTRUNL
Fix information
Fixed component name
IMS V11
Fixed component ID
5635A0200
Applicable component levels
R100 PSY UK45088
UP09/03/25 P F903
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"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"100","Edition":"","Line of Business":{"code":"","label":""}},{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSCVRBJ","label":"System Services"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"100","Edition":"","Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
19 September 2009