Page Fault abend in _SchedGetReadyThread

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

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.