The GetAncestor() Function Can Cause "Stop 0x1e" in Win32k.sys (280582)



The information in this article applies to:

  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional

This article was previously published under Q280582

SYMPTOMS

If you pass the handle of a top-level non-desktop window and a GA_ROOT flag to the GetAncestor function, it automatically assumes that the window is a child of the desktop and dereferences the NULL spwndParent field. The resulting stop code in Service Pack 1 (SP1) is:
Stop 0x0000001e (0xc0000005, 0xa00f8d53, 0x00000000, 0x0000000c)

CAUSE

This problem is caused by a file handle of a window of the type that is described above when you call GetAncestor(hWnd,GA_ROOT). The problem occurs every time you do this. A crash dump in Win32k.sys shows that the crash always occurs in the context of Wfshell.exe. User-mode program components contributed to the crash. A program is passing the handle of the "root" window to GetAncestor. GetAncestor is not capable of handling this case with a GA_ROOT flag set and ends up dereferencing the parent pointer of the "root" window.

The "root" window is hidden from access by User-mode programs, but if a program can obtain the handle somehow and then call GetAncestor on the handle, the problem occurs

RESOLUTION

To resolve this problem, obtain the latest service pack for Windows 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

260910 How to Obtain the Latest Windows 2000 Service Pack

The English version of this fix should have the following file attributes or later:
   Date       Time    Version          Size      File name
   ---------------------------------------------------
   5/31/2001  03:30p  5.0.2195.3649    222,480   Gdi32.dll
   5/31/2001  03:44p  5.0.2195.3660  1,641,360   Win32k.sys(uniprocessor)
   5/31/2001  03:32p  5.0.2195.3649    243,472   Winsrv.dll(uniprocessor)
   5/31/2001  03:30p  5.0.2195.3649    379,664   User32.dll
   5/31/2001  03:06p  5.0.2195.3660  1,641,360   Win32k.sys
   5/31/2001  03:32p  5.0.2195.3649    243,472   Winsrv.dll
				

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Windows 2000 Service Pack 3.

MORE INFORMATION

For additional information about how to obtain a hotfix for Windows 2000 Datacenter Server, click the article number below to view the article in the Microsoft Knowledge Base:

265173 The Datacenter Program and Windows 2000 Datacenter Server Product

For additional information about how to install multiple hotfixes with only one reboot, click the article number below to view the article in the Microsoft Knowledge Base:

296861 Use QChain.exe to Install Multiple Hotfixes with One Reboot

For additional information about how to install Windows 2000 and Windows 2000 hotfixes at the same time, click the article number below to view the article in the Microsoft Knowledge Base:

249149 Installing Microsoft Windows 2000 and Windows 2000 Hotfixes


Modification Type:MinorLast Reviewed:9/26/2005
Keywords:kbHotfixServer kbQFE kbbug kbfix kbshell kbWin2000PreSP3Fix kbWin2000sp3fix KB280582