我正在调试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次运行一次。答案 0 :(得分:0)
最后问题是openssl
将在Heap32Next
中使用RAND_poll
函数在Windows上生成rand。它会导致win7或其他窗口出现死锁(我不确定)。任何人都可以轻松地从谷歌搜索许多错误报告,只需搜索Heap32Next
或RAND_poll
。
最后,原谅我没有提供有问题的源代码。