Page Fault abend in _SchedGetReadyThread

  • 3200596
  • 06-Nov-2007
  • 26-Apr-2012


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


Server abended often with Running Process: RTV Client/Child Process.
Abends with EIP = SERVER.NLM|_SchedGetReadyThread+54


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
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.