z/VM: System Messages and Codes Š CP - z/VM - IBM
z/VM: System Messages and Codes Š CP - z/VM - IBM
z/VM: System Messages and Codes Š CP - z/VM - IBM
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
LCK001 LCK005<br />
LCK001<br />
Explanation: H<strong>CP</strong>LCK was called to release<br />
ownership of a lock, but failed for one of the following<br />
reasons:<br />
v The lock was not held.<br />
v The lock was not held by the calling <strong>VM</strong>DBK.<br />
v An attempt was made to do a shared release of a<br />
lock held exclusively.<br />
v An attempt was made to do an exclusive release of a<br />
lock held shared.<br />
v The contents of a lock were overlaid.<br />
User Response: Examine the dump <strong>and</strong> the trace<br />
table <strong>and</strong> try to determine what went wrong. Register<br />
R4 points to the lock (a LKWRD, described by<br />
H<strong>CP</strong>LKWRD COPY). Examine the save area to<br />
determine the calling module. Check that the caller<br />
invoked the appropriate H<strong>CP</strong>LCK entry point according<br />
to the holding of the lock (shared or exclusive). If an<br />
exclusive release is being performed, check the<br />
LKWSTATE field of the lock. It should contain the<br />
address of the owning <strong>VM</strong>DBK, OR’ed with<br />
x’80000001’. This <strong>VM</strong>DBK address should be the same<br />
as the dispatched <strong>VM</strong>DBK (R11) which is attempting to<br />
do the exclusive release. If these addresses don’t<br />
match, one possibility is that the control was switched<br />
from one <strong>VM</strong>DBK to another (usually by calling<br />
H<strong>CP</strong>DSBSW), <strong>and</strong> that ownership of the lock should<br />
have been transferred beforeh<strong>and</strong> (by calling<br />
H<strong>CP</strong>DSBPX), but wasn’t. Contact your <strong>IBM</strong> support<br />
Personnel.<br />
LCK002<br />
Explanation: Entry point H<strong>CP</strong>LCKAD was called with<br />
the same lockword address in R1 <strong>and</strong> R2. H<strong>CP</strong>LCKAD<br />
requires R1 to address a lock already held exclusive,<br />
<strong>and</strong> requires R2 to address a lock to be obtained<br />
exclusive concurrently.<br />
User Response: Examine the storage dump. R13<br />
points to a save area. Identify the caller by the module<br />
base address (R12) <strong>and</strong> return address (R14) in the<br />
save area. Look at the system trace table for the<br />
sequence of events that led to the caller’s invoking<br />
H<strong>CP</strong>LCKAD with two copies of the same lockword<br />
address.<br />
LCK003<br />
Explanation: A lock (or LKWRD, described by<br />
H<strong>CP</strong>LKWRD COPY) was found to be in an incorrect<br />
state. The first fullword of the LKWRD contains an<br />
incorrect code.<br />
User Response: Examine the dump <strong>and</strong> try to<br />
determine how the incorrect value came to be stored in<br />
the LKWRD. Register R4 points to the LKWRD. Contact<br />
your <strong>IBM</strong> support Personnel.<br />
68 z/<strong>VM</strong>: <strong>System</strong> <strong>Messages</strong> <strong>and</strong> <strong>Codes</strong> — <strong>CP</strong><br />
LCK004<br />
Explanation: The count of requests enqueued <strong>and</strong><br />
waiting to obtain a lock (or LKWRD, described by<br />
H<strong>CP</strong>LKWRD COPY) became negative.<br />
User Response: Examine the dump <strong>and</strong> the trace<br />
table <strong>and</strong> try to determine why the count went negative.<br />
Register R4 points to the LKWRD, <strong>and</strong> LKWDQLEN is<br />
the count field within the LKWRD. Contact your <strong>IBM</strong><br />
support personnel.<br />
LCK005<br />
Explanation: The critical process count, <strong>VM</strong>DCTCRT<br />
in the base <strong>VM</strong>DBK, became negative. Usually this<br />
count represents the number of locks held by the virtual<br />
machine. (The degree of criticality is usually equal to<br />
the number of locks held.)<br />
Some, but not all, of the possible causes of this abend<br />
are:<br />
v The code that was to decrement <strong>VM</strong>DCTCRT was<br />
somehow allowed to execute before the code that<br />
was to do the corresponding increment. For example,<br />
if the following sequence is possible:<br />
1. Lock ownership is switched to another <strong>VM</strong>DBK<br />
2. The other <strong>VM</strong>DBK is immediately enabled to<br />
begin running on another processor with the lock<br />
3. <strong>VM</strong>DCTCRT is incremented in the <strong>VM</strong>DBK that<br />
just was granted the lock.<br />
It is potentially possible for the second processor to<br />
execute the code that releases the lock <strong>and</strong><br />
decrements <strong>VM</strong>DCTCRT before the first processor<br />
increments <strong>VM</strong>DCTCRT. <strong>VM</strong>DCTCRT must always<br />
be incremented before it is possible for another<br />
processor to start processing the code that will do the<br />
corresponding decrement.<br />
v <strong>VM</strong>DCTCRT was incremented on one <strong>VM</strong>DBK, then<br />
a <strong>VM</strong>DBK switch occurred before the corresponding<br />
decrement took place. This may often happen on<br />
task threads that switch between a user <strong>VM</strong>DBK <strong>and</strong><br />
the system <strong>VM</strong>DBK, or switch between <strong>VM</strong>DBKs in a<br />
single virtual MP complex.<br />
v A task thread did not properly serialize its increment<br />
or decrement of <strong>VM</strong>DCTCRT, such as by using the<br />
compare-<strong>and</strong>-swap instruction.<br />
v When attempting to increment <strong>VM</strong>DCTCRT on other<br />
than the running <strong>VM</strong>DBK, the wrong <strong>VM</strong>DBK was<br />
chosen.<br />
User Response: Examine the <strong>CP</strong> trace table <strong>and</strong><br />
storage dump <strong>and</strong> try to determine why the base<br />
<strong>VM</strong>DBK changed from zero to a negative value in the<br />
<strong>VM</strong>DCTCRT field. Register R11 points to the dispatched<br />
<strong>VM</strong>DBK. The field <strong>VM</strong>DBASE in the dispatched <strong>VM</strong>DBK<br />
points to the <strong>VM</strong>DBK containing <strong>VM</strong>DCTCRT. Contact<br />
your <strong>IBM</strong> support personnel.