CSocket::Create function has thrown exception
-
I have my application run with gflags with Pageheap enabled to track down the page heap corruption. Now the application has crashed and it shows this error, i could not interpret these lines (other than having a feeel of resource inavailablity) Can anyone throw a light on what exactly is the reason that has caused the carsh of the app. [info : Application is a multithreaded one about 500 threads running,in a multi - processor machine) kernel32!RaiseException+53 msvcrt!_CxxThrowException+36 mfc42u!AfxThrowResourceException+19 mfc42u!AfxRegisterWndClass+ab mfc42u!CAsyncSocket::AttachHandle+5c mfc42u!CAsyncSocket::Socket+25 mfc42u!CAsyncSocket::Create+14 Pls help
-
I have my application run with gflags with Pageheap enabled to track down the page heap corruption. Now the application has crashed and it shows this error, i could not interpret these lines (other than having a feeel of resource inavailablity) Can anyone throw a light on what exactly is the reason that has caused the carsh of the app. [info : Application is a multithreaded one about 500 threads running,in a multi - processor machine) kernel32!RaiseException+53 msvcrt!_CxxThrowException+36 mfc42u!AfxThrowResourceException+19 mfc42u!AfxRegisterWndClass+ab mfc42u!CAsyncSocket::AttachHandle+5c mfc42u!CAsyncSocket::Socket+25 mfc42u!CAsyncSocket::Create+14 Pls help
Elsie wrote:
Application is a multithreaded one about 500 threads running
Do not use CSocket, consider using
CAsyncSocket
if it has to be MFC based. Also see CSocket considered harmful[^] in the Winsock Programmer's FAQ. /MMy webchat in Europe :java:
-
I have my application run with gflags with Pageheap enabled to track down the page heap corruption. Now the application has crashed and it shows this error, i could not interpret these lines (other than having a feeel of resource inavailablity) Can anyone throw a light on what exactly is the reason that has caused the carsh of the app. [info : Application is a multithreaded one about 500 threads running,in a multi - processor machine) kernel32!RaiseException+53 msvcrt!_CxxThrowException+36 mfc42u!AfxThrowResourceException+19 mfc42u!AfxRegisterWndClass+ab mfc42u!CAsyncSocket::AttachHandle+5c mfc42u!CAsyncSocket::Socket+25 mfc42u!CAsyncSocket::Create+14 Pls help
Hi Guys, This same problem has driven me nuts but finally i fixed it and it is working. This is bug with MFC socket library that when inside a thread [other than main application thread], If we try to do something like
CSocket socket; socket.Create();
It will throws an unhandled exception. I found an article on it See What Microsoft says about this that said something from Microsoft but that did not help me either. So here is a workaround i have found and i hope it can help some frustrated fellow like me. Inside thread, do thisCSocket mySock; SOCKET sockethandle = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); mySock.m_hSocket= sockethandle;
After that DO NOT call mySock.Create as it has been created already through assignment of socket handle. I am not sure if we can use mySock.Attach(sockethandle) as i did not try it yet. After that you can call Connect etc directly. When you are done using the socket, DO NOT call- rather call
closesocket(mySock.m_hSocket);
And that will free the socket object. If Attach works in above case then i guess we need to do Detach here when to free the socket. Good Luck Nauman Khan