Program May Hang When It Calls the ioctlsocket() Function (297110)



The information in this article applies to:

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

This article was previously published under Q297110

SYMPTOMS

If you have a socket based client/server program in which the client and server are running on two different physical computer, and if the client programs uses the ioctlsocket function to make a socket non-blocking, the client program may stop responding (hang). When this problem occurs, the only way to recover is to "kill" the client program.

CAUSE

This problem occurs because the Windows 2000 Socket services are not handling the socket non-blocking request correctly.

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
   ----------------------------------------------------------
   4/16/2001   04:40p   5.0.2195.3503   118,800   Afd.sys
   5/2/2001    07:53p   5.0.2195.3566   104,720   Msafd.dll
   5/2/2001    06:07p   5.0.2195.3560   311,696   Tcpip.sys
   4/6/2001    05:55p   5.0.2195.3474    16,208   Tdi.sys
   5/2/2001    07:53p   5.0.2195.2104    17,680   Wshtcpip.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

When this problem occurs, if you attach a User-mode debugger (such as Windbg) to the client program, the top of the call stack may be similar to this:

0:000> kb
ChildEBP RetAddr  Args to Child              
0012ef40 77f82474 000001a0 00000000 00000000 ntdll!_ZwWaitForSingleObject+0xb
0012efb4 77f823e5 01302800 74fd1777 01302848 ntdll!RtlpWaitForCriticalSection+0x9e
0012efbc 74fd1777 01302848 008650e0 0012f060 ntdll!_RtlEnterCriticalSection+0x46
0012f008 55610122 000001d4 0000ffff 00002005 msafd!WSPGetSockOpt+0x93
0012f034 75036bf4 000001d4 0000ffff 00002005 wspwsp+0x10122
0012f2e4 750373cb 000001d4 ffffffff 004a6c80 WS2_32!DCATALOG__FindIFSProviderForSocket+0x80
0012f2f8 75038ca4 00000000 ffffffff 004a6c80 WS2_32!DSOCKET__FindIFSSocket+0x35
0012f314 75038c6b 000001d4 8004667e 0012f3c0 WS2_32!WSAIoctl+0x62
0012f340 00416ec3 000001d4 8004667e 0012f3c0 WS2_32!ioctlsocket+0x20
..........
					

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 kbnetwork kbWin2000PreSP3Fix kbWin2000sp3fix KB297110