A fix is available
APAR status
Closed as program error.
Error description
A task (Task #1) receives a SUSP_ALREADY_SUSPENDED exception because another task (Task #2) is currently suspended using the initial task's (Task #1) suspend token. This occurs because when the second task called DFHDSSR to suspend, the suspend token that it passed was the same suspend token as the initial task. So when the initial task validly tried to suspend on his own token, he recieved the SUSP_ALREADY_SUSPENDED exception since the second taskhas already suspended on it. This has occurred because the two tasks are both using the same NQEA. This causes the SUSP_ALREADY_SUSPENDED problem and a loop of NQEA addresses. There is a chain of free NQEAs maintained off of the NQPL. When a task needs an NQEA, it tries first to get one off that chain. And there are 2 places that is done. There is code in the DFHNQEDI function(ENQUEUE) macro to do that. And there is code in DFHNQED to do that. The problem is caused by DFHNQED not using CDS to take off an NQEA from the free chain. The code in the DFHNQEDI macro *does* use CDS for taking an NQEA off the free chain.get_nqea_from_quickcel is the fragment used by DFHNQED that does not use CDS for taking NQEAs off the chain. Additional Keywords: DS0002 , 0068 , ENQUEUE , SUSPAREA , DFHPD0105 KIXREVEPH
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: All. * **************************************************************** * PROBLEM DESCRIPTION: Message DFHDS0002 code x'0068' issued. * **************************************************************** * RECOMMENDATION: * **************************************************************** Enqueue and Dequeue mechanisms within CICS code use a combination of NQLOCK, Compare Double and Swap and Compare and swap to manage a chain of Enqueue Element Areas ( NQEA ). A timing window exists where an update of the chain of NQEAs can go undetected because of the use of CS instead of CDS. This means that an NQEA already in use by a task is at the head of the NQEA free chain and is available for use by another task. If another task obtains the NQEA, message DFHDS0002 is produced. In addition, CICS trace may contain *EXC entries showing DSKE_TASK_SUSP_TOK_IN_USE and/or SUSP_ALREADY_SUSPENDED. Keywords: DFHME0116 DS0002 msgDFHDS0002 DFHMQTRU
Problem conclusion
DFHNQED has been amended to use a CDS instruction rather than a CS when removing an NQEA from the free chain.
Temporary fix
FIX AVAILABLE BY PTF ONLY
Comments
APAR Information
APAR number
PM29899
Reported component name
CICSTS V3 Z/OS
Reported component ID
5655M1500
Reported release
500
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2011-01-05
Closed date
2011-02-22
Last modified date
2011-03-02
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
PM32183 UK65104
Modules/Macros
DESNQNQ DFHMQTRU DFHNQED DFHNQEDT DFHNQNQ DFHNQNQT
Fix information
Fixed component name
CICSTS V3 Z/OS
Fixed component ID
5655M1500
Applicable component levels
R500 PSY UK65104
UP11/02/26 P F102
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":"SSGMGV","label":"CICS Transaction Server"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"3.2","Edition":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}},{"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":"3.2","Edition":"","Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
02 March 2011