Bug bites Windows Terminal Services
- 05 June, 2001 22:00
- An independent tester says he has uncovered a bug that causes a total collapse of Windows Terminal Services running on Windows 2000 at specific processor speeds.
But Microsoft is trying to debunk the claim that the problem is with Win 2000.
The bug appears when Terminal Services runs on a dual-processor computer with 933-MHz or 1-GHz clock speeds. Other clock speeds do not trigger the bug. Terminal Services is built into Win 2000 to support multiuser thin-client computing.
The problem is linked to a process that executes in the kernel of Win 2000 known as Win32K.sys, which is a kernel-mode function that governs the drawing of graphics on a computer screen.
"The failure is catastrophic," says Randy Kennedy, who as director of research for Competitive Systems Analysis uncovered the flaw. "It will blow everyone off the server." It is a timing issue in Win 2000, says Kennedy, who recreated the bug many times during his testing.
The issue could be significant for IT executives who support multiple desktops through Terminal Services.
"We have 80% of our organisation running on Citrix," says Jeff Cichocki, programmer analyst for WG&R Furniture, which runs Office, Outlook, Internet Explorer and homegrown applications on Terminal Server. "This is a large concern."
Microsoft says it is investigating the issue but would not say if it is a problem with Win 2000, the hardware or a driver. Microsoft says it was not able to recreate the bug, but company officials say it may be only evident in Kennedy's test lab. The bug has not been reported in any corporate deployments.
"Win32k.sys looks to be the culprit but it can be impacted by bad hardware or a bad driver," says Mark Aggar, product manager for Microsoft Terminal Services technologies. "I think that it is pure conjecture to say the cause of the problem is Windows 2000."
But Aggar says Microsoft has not excluded the operating system as the source. "We don't have any results back, but the signs point to a hardware problem," he says. Kennedy says the problem is most definitely in the software and that he used standard hardware components on his test machine, including an Intel i840 chipset.
The bug kills Terminal Services at 933 MHz when it is run using Microsoft's Remote Desktop Protocol, according to Kennedy.
"The bug also crashes Citrix MetaFrame 1.8 and XP application server and ICA clients running on Terminal Services at 1 GHz," he says. He adds that it takes only 10 to 15 users to trigger the bug.
Kennedy says he found the flaw while running Microsoft Office through Win 2000 Terminal Services on a dual-processor Pentium III server as part of an evaluation of Terminal Services' scalability.
"Win32k.sys is so optimized for Windows 2000 it's hard to track the problem and debug," Kennedy says. "But this is the kind of bug that, if not corrected at the core, could rear its head over and over again."
Terminal Services is used to centrally run applications such as Office for low-powered or thin-client desktops. The application logic runs on the server, and the screen images are passed to desktops.
Controversy around Win32K.sys dates back to 1996, when it was added into the kernel of Windows NT 4.0 to improve the performance of desktop applications. On a multiuser server application, the operating system must virtually replicate Win32k.sys so each client connection thinks it has its own copy, according to Mark Russinovich, co-founder of SysInternals, a website that offers Windows monitoring utilities.
He says the Terminal Server issue likely arises from the fact that any kernel component running in a multiprocessor environment has to handle synchronisation so processors can work in harmony.
"There is a synchronisation problem somewhere," he says. "This is not a fatal flaw in the [operating system]; it is an implementation bug."