Spinlock Abend in NCPIP.NLM
Articles and Tips: qna
01 Mar 2003
Q.
I am getting a strange Abend error on my NetWare 6 Support Pack 2 server:
Abend: Found spinlock to be busy with single processor active
The Abend is occurring in the NCPIP.NLM. Any help would be appreciated.
Spinlocked in Sao Vicente
A.
Dear Spinlocked: The server abended because WaitForSpinLock in the NCPIP.NLM was waiting for the connlock/spinlock for more than one minute. This spinlock is in the IP connection structure. NCPIP is trying to tear down the connection but it can't because the spinlock has been asserted. It keeps trying and then abends due to the timeout.
There is an error path in the NCPIP.NLM which is taken whenever the NCPIP receives an acknowledge (ack) from the TCP stack for more data than the NCPIP believes it has sent for a given connection. Typically such a condition should never occur, but apparently it is happening on this server. In this error path, the connLock spinlock is already locked when it makes a call to the subroutine which schedules the tear down of the connection. The tear down subroutine then tries to lock the same spinlock.
On a single-processor machine, such a deadlock is detected immediately and abends. This is our case, but on a multi-processor box there is no way to know which processor is holding the spinlock, so there is a timeout associated with the deadlock of 1 minute. When a spinlock is used properly, the processor holding the lock will release the spinlock before the timeout occurs. But a deadlock such as this one will eventually time out, causing this abend.
The fix has been made by the Novell Protocol Stack Team. You just need to update the NCPIP.NLM to v5.62 dated 8/19/2002 or later.
* Originally published in Novell AppNotes
Disclaimer
The origin of this information may be internal or external to Novell. While Novell makes all reasonable efforts to verify this information, Novell does not make explicit or implied claims to its validity.