28.12.2012 Views

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

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!