我们最近观察到了罕见的UDP通信问题,这些问题显示以下症状:
sendto()
调用失败,并出现错误WSAENOBUFS(10055)recvfrom()
调用不会收到任何信息,即使Wireshark显示网络接口实际上已收到了预期的数据报。这种情况持续了大约8秒钟,之后new可以再次从套接字接收传入的数据报。sendto()
错误时出现一个内核常规信息条目:The access history in hive \??\C:\ProgramData\Microsoft\Provisioning\Microsoft-Desktop-Provisioning-Sequence.dat was cleared updating 0 keys and creating 0 modified pages.
此问题发生在运行Microsoft Windows 10 Pro for Workstation版本10.0.17763 Build 17763的客户系统上。
在该系统上,我们可以用一个用C ++编写的简单测试程序来重现该问题,该程序可以回显UDP数据报。我们通过使用SO_RCVTIMEO
指定1秒钟的超时,打印一些“仍然存在”的输出并立即再次调用recvfrom()
,来验证从套接字接收的线程实际上一直在响应。
在我们自己的测试系统上,我们无法在与客户相同的情况下观察到该问题。但是,当测试运行时,在使用网络适配器设置时,我们能够引起类似的效果。启用Microsoft LLDP Protocol Driver
会显示sendto()
错误,有时还会导致8秒钟的“静默”时间,但没有任何Windows系统日志条目。
非常感谢任何提示。
[我们最近观察到了罕见的UDP通信问题,这些问题显示以下症状:套接字sendto()调用失败,错误为WSAENOBUFS(10055)此套接字上的后续recvfrom()调用没有...
自Windows 10 1809起,此问题似乎与Microsoft Provisioning Tool有关。