Read this section if a resource name of LMQUEUE has been shown for a task. It means that the suspended task cannot acquire the lock on a resource it has requested, probably because another task has not released it.
A user task cannot explicitly acquire a lock on a resource, but many of the CICS® modules that run on behalf of user tasks do lock resources. If this is a genuine wait, and the system is not just running slowly, this could indicate a CICS system error.
You need to take a system dump, and format it using keywords LM and DS. This formats the storage areas belonging to lock manager domain and dispatcher domain. This section describes the data that you should find there if the resource locks are being managed correctly.
Turn to the lock manager summary information (Figure 12 shows an example of this).
LOCK LOCK OWNER MODE COUNT # LOCK # LOCK -> QUEUE
NAME TOKEN REQUESTS SUSPENDS
---- ----- ----- ---- ----- -------- -------- --------
SMLOCK 03B051D8 0 0
DSITLOCK 03B05208 4 0
LD_GBLOK 03B05238 03B0AAD0 EXCL 1 1 03B09378
LD_LBLOK 03B05268 0 0
DMLOCKNM 03B05298 03B0B690 EXCL 35 0
CCSERLCK 03B052C8 0 0
==LM: LOCK WAIT QUEUE
LOCK ADDRESS -> NEXT OWNER MODE SUSPEND STATUS
NAME TOKEN
---- ------- ------- ----- ---- ------- ------
LD_GBLOK 03B09378 00000000 03B0B3A0 EXCL 010B0001
Table 8 describes each of the fields in the lock manager summary information.
Field | Description |
---|---|
LOCK NAME | The name given to the lock by the domain that originally issued the ADD_LOCK command. |
LOCK TOKEN | The token assigned by the lock manager to uniquely identify the lock. |
OWNER | A token that uniquely identifies the owner of the lock. It is blank unless a task currently holds the lock, in which case the KE_TAS number of the task is given. |
MODE | The lock mode. It can be:
|
COUNT | Blank unless the lock mode is SHR, when it shows the number of tasks currently holding the shared lock. |
# LOCK REQUESTS | The cumulative total of the number of times a lock has been requested--that is, the number of times the LOCK request has been issued for the lock. |
# LOCK SUSPENDS | The cumulative total of the number of tasks that have been suspended when requesting this lock because the lock is held by another task. |
-> QUEUE | Blank unless tasks are currently suspended, awaiting the lock. If this is the case, this field contains the address of the first such task. Further information about the task is given in the ‘LOCK WAIT QUEUE’ section of the information. |
ADDRESS | The address of the lock manager LOCK_ELEMENT that represents the suspended task. |
-> NEXT | The address of the next task in the queue awaiting the lock. If this field is zeros, this is the last task in the queue. |
OWNER | The KE_TAS number of the task that is currently suspended, awaiting the lock. |
MODE | The lock mode. It can be:
|
SUSPEND TOKEN | The dispatcher suspend token for the suspended task. |
STATUS | The status of the suspended task. It can be:
|
The first step is to establish which lock the suspended task is waiting on. Obtain the KE_TAS number from the dispatcher domain summary for the suspended task and match this with an OWNER in the ‘LOCK WAIT QUEUE’ section of the lock manager summary information.
In the example, only one task is suspended and waiting to obtain the LD_GBLOK lock. The owner (KE_TAS identifier) of this task is 03B0B3A0.
You then have to find out which task currently holds the lock that the suspended task is waiting on. You can do this by looking at the lock manager summary for that lock--in this case, LD_GBLOK.
If the mode of the lock is SHR (shared), you will not be able to proceed any further and you will have to contact your IBM® Support Center.
If the mode is EXCL (exclusive), the identifier of the task that currently holds the lock is given in the OWNER field. In the example, the task that currently has the lock--LD_GBLOK--is 030B0AAD0. Because the OWNER field is the KE_TAS identifier of the task, you can find out from the dispatcher domain summary the status, dispatcher task number, and TCA address of the task that currently holds the lock.
When you have all this information ready, contact the IBM Support Center and report the problem to them.
If you find that a task is waiting on ECB PSTDECB, it indicates either an error within CICS or IMS™ code, or some hardware fault preventing a PSB or DMB from being loaded.
If you have no evidence of a hardware fault, contact the IBM Support Center and report the problem to them.