views:

1831

answers:

4

Attempt to send a message through a socket failed with WinSock error 10038. After around 40 seconds, messages are received successfully from the same socket and subsequently the send() is also succeeding in the same socket. This behaviour has been witnessed in Windows Server 2003. Is this any known behaviour with WinSock and Windows Server 2003?

+1  A: 

Winsock error 10038 means "An operation was attempted on something that is not a socket".

Little trick to find info about error codes (usefull for all sorts of windows error codes):

  • Open a command prompt
  • Type "net helpmsg 10038"

What language is your application written in? If it's C/C++, could it be that you are using an invalid socket handle?

Otherside
A: 

Hi

Thanks for your response.

The WinSock application under concern is a well-behaved TCP Server application written using C++ (and ACE framework) that has been running robustly since the past 5, 6 years in Win2K Platform.

Recently this Service is implemented in Win2K3 platform and the mentioned buggy behaviour has happened just for once in the past 4 months of running.

The Socket handle seems to have become invalid just for a period of 30, 40 seconds. Besides attempting to identify any bugs in the code (where none has been found so far) I am wondering whether this could also be a platform issue.

Thanks!

A: 

Not a platform issue, I can guarantee that. Most likely, whatever variable you are using to access the socket handle is not thread-safe and is being used in the send() call before the actual socket is created.

Another possible cause is the presence of layered winsock providers. "netsh winsock show" at a cmd prompt will show you the installed providers and you can try removing any non-microsoft ones.

A: 

Thanks so much to a_mole for the idea of checking for layered winsock providers. We are having problems with some of our PC's and TimesTen DB. When we try to setup and ODBC Client DSN, we get a 10038 error. On examining the netsh output from the affected PC's, we found that they have Embassy Trust Suite by Wave Systems installed. Evidently Dell pre-installed this on some of their PC's. Anyway, on uninstalling this software, the problem has been solved.

Thanks again

Lou

Lou