Environment
Novell NetWare 6.5 Support Pack 6
Novell NetWare 6.5 Support Pack 5
3rd Party Operating Systems and Products
Symantec Anti-Virus RTVSCAN.NLM Version 10.00.00
June 15, 2006
Situation
Server abended often with Running Process: RTV
Client/Child Process.
Abends with EIP = SERVER.NLM|_SchedGetReadyThread+54
Resolution
Fixed in an updated SERVER.EXE - Server Version 5.70.06
January 22, 2007 for NetWare 6.5 SP6
SERVER.EXE - Server Version 5.70.05 January 31, 2007 for
NetWare 6.5 SP5
Fix can now be downloaded in patch NW65OS6A.ZIP
Workaround:
You can temporarily disable all secondary processors.
This can be done through the NRM (NetWare Remote Manager) tool or
by the following console command: STOP PROCESSOR 1 and so on for
the number of secondary processors.
Additional Information
It was a problem inside the kernel scheduling code where a
spinlock was released a little too soon which allowed the counter
on the run queue to be off by one so when we called
_SchedGetReadyThread() which is a call to pull the next thread or
process on the run queue and put it on the CPU to run.
The CPU Run queue list was unprotected for a couple instructions
but on a Multiple Processor server, even nanoseconds make a
world of difference. The spinlock problem was inside the
kConditionSignal() code.
These same abends have been seen in other 3rd party
running processes as well other than Symantec's.