win32 socket函数没有返回

时间:2016-02-17 06:52:55

标签: sockets winapi

我正在调试win32程序中的挂起问题。 主线程调用堆栈是:

ntdll.dll!_NtWaitForSingleObject@12()  + 0x15 bytes 
ntdll.dll!_NtWaitForSingleObject@12()  + 0x15 bytes 
ntdll.dll!_NtWaitForSingleObject@12()  + 0x15 bytes 
kernel32.dll!_LocalBaseRegQueryValue@24()  + 0x215 bytes    
kernel32.dll!_RegQueryValueExW@24()  + 0x107 bytes  
mswsock.dll!_SockLoadTransportMapping@8()  + 0x33 bytes 
mswsock.dll!_SockGetTdiName@40()  + 0x6c9f bytes    
mswsock.dll!_SockSocket@40()  + 0x9f bytes  
mswsock.dll!_WSPSocket@28()  + 0xe3 bytes   
ws2_32.dll!_WSASocketW@24()  + 0x9d bytes   
ws2_32.dll!_socket@12()  + 0x56 bytes   
......

似乎socket()没有返回,所以程序挂断了。传递给socket()的参数是2,2,17,这意味着创建一个IPv4 UDP套接字。我没有调用win32 API的源代码

我有搜索谷歌但没有找到任何有用的东西,我不知道这个错误。转储文件中有更多信息,但由于某种原因我无法在此处上传。如果有任何不清楚的地方,请询问,我会发布相关信息。

BTW,每次都不会出现这个错误,每15000次运行一次。

1 个答案:

答案 0 :(得分:0)

最后问题是openssl将在Heap32Next中使用RAND_poll函数在Windows上生成rand。它会导致win7或其他窗口出现死锁(我不确定)。任何人都可以轻松地从谷歌搜索许多错误报告,只需搜索Heap32NextRAND_poll

最后,原谅我没有提供有问题的源代码。