Microsoft KB Archive/155738

From BetaArchive Wiki
Knowledge Base


Application Coding Error Results in Error 10038 (WSAENOTSOCK)

Article ID: 155738

Article Last Modified on 11/1/2006



APPLIES TO

  • Microsoft Windows NT Workstation 3.5
  • Microsoft Windows NT Workstation 3.51
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Server 3.5
  • Microsoft Windows NT Server 3.51
  • Microsoft Windows NT Server 4.0 Standard Edition



This article was previously published under Q155738

SYMPTOMS

A Windows sockets application may return error 10038 (WSAENOTSOCK) in response to various socket calls.

CAUSE

The Windows NT error "OBJECT_TYPE_MISMATCH" is mapped to Windows Sockets error "WSAENOTSOCK" by the Microsoft Winsock implementation. One possible cause of "OBJECT_TYPE_MISMATCH" error is an application written in such a manner as to close a given handle more than once. Errors are more likely to occur on multiprocessor computers.

Application developers programming with the Win32 API set are instructed to be careful to close all of their handles when they are finished with them. However, if an application is written and linked with C runtime libraries, some of the C runtime code automatically cleans up resources such as handles to a thread. If the application developer closes a thread handle specifically, then calls _endthread() to terminate the thread, the _endthread routine also attempts to close the same handle. If the handle has been re-used at that point (by another thread), it will become an invalid thread and is likely to cause errors such as "INVALID_HANDLE" or "OBJECT_TYPE_MISMATCH."

RESOLUTION

Consult with the application vendor to determine whether there is a possibility of the same handle being closed twice.


Additional query words: socket select 10038 wsaenotsock

Keywords: kbapi kbnetwork kbwinsock KB155738