Windows 2012 R2 closesocket() 在侦听套接字上挂起
Windows 2012 R2 closesocket() hangs on listening socket
我在生产服务器上遇到了一个奇怪的情况。
我们有一个用 C++ 编写的网络应用程序,它通过使用 IOCP 编写的 TCP 服务用户请求。
两天前我们对 Windows 2012 R2 进行了更新(它安装了最新的安全更新。上一次更新是在 6 个月前)。在尝试停止服务时更新后,我们在日志中看到服务器 挂起以关闭监听套接字
closesocket(session->listen_socket);
停止网络系统的方案如下:
PostQueuedCompletionStatus(m_completion_port, 0, NULL, NULL);
x
工作线程数
等待所有工作线程完成它们的工作
CloseHandle(m_completion_port);
closesocket(session->accept_socket);
closesocket(session->listen_socket);
这在过去 4 年里运行良好,但在 Windows 2012 R2 更新之后服务器突然挂起 closesocket(session->listen_socket);
我也尝试过将 LINGER 选项设置为 0 超时来阻止关闭,但它没有帮助。
关于如何解决此问题或进行任何其他诊断的所有想法?
这个问题是由 Microsoft KB4338815 的补丁引起的,它导致 closesocket 在 Intel Xeon 处理器上永远挂起,这也由 FileZilla 人员在此线程中发布
https://forum.filezilla-project.org/viewtopic.php?t=49308
我在生产服务器上遇到了一个奇怪的情况。
我们有一个用 C++ 编写的网络应用程序,它通过使用 IOCP 编写的 TCP 服务用户请求。
两天前我们对 Windows 2012 R2 进行了更新(它安装了最新的安全更新。上一次更新是在 6 个月前)。在尝试停止服务时更新后,我们在日志中看到服务器 挂起以关闭监听套接字
closesocket(session->listen_socket);
停止网络系统的方案如下:
PostQueuedCompletionStatus(m_completion_port, 0, NULL, NULL);
x 工作线程数等待所有工作线程完成它们的工作
CloseHandle(m_completion_port);
closesocket(session->accept_socket);
closesocket(session->listen_socket);
这在过去 4 年里运行良好,但在 Windows 2012 R2 更新之后服务器突然挂起 closesocket(session->listen_socket);
我也尝试过将 LINGER 选项设置为 0 超时来阻止关闭,但它没有帮助。
关于如何解决此问题或进行任何其他诊断的所有想法?
这个问题是由 Microsoft KB4338815 的补丁引起的,它导致 closesocket 在 Intel Xeon 处理器上永远挂起,这也由 FileZilla 人员在此线程中发布 https://forum.filezilla-project.org/viewtopic.php?t=49308