0

我们最近观察到显示以下症状的罕见 UDP 通信问题:

  1. 套接字sendto()调用失败并出现错误WSAENOBUFS (10055)
  2. 尽管 Wireshark 显示网络接口实际上收到了预期的数据报,但对该套接字的后续recvfrom()调用不会收到任何内容。这种情况持续大约 8 秒,之后可以再次从套接字接收新的传入数据报。
  3. 在 Windows 系统日志中,出现错误时出现了内核常规信息条目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 Workstations 版本 10.0.17763 Build 17763 的客户系统上。

在该系统上,我们能够通过一个用 C++ 编写的简单测试程序来重现该问题,该程序与 UDP 数据报相呼应。我们验证了从套接字接收的线程实际上一直在响应,通过使用 指定 1 秒的超时SO_RCVTIMEO,打印一些“仍然活着”的输出并立即recvfrom()再次调用。

在我们自己的测试系统上,我们无法在与客户相同的情况下观察到问题。但是,当测试运行时,我们可以在使用网络适配器设置时产生类似的效果。启用会Microsoft LLDP Protocol Driver显示sendto()错误,有时还会导致 8 秒的“静默”期,但没有任何 Windows 系统日志条目。

非常感谢任何提示。

4

1 回答 1

0

该问题似乎与自 Windows 10 1809 以来的 Microsoft Provisioning Tool 有关。

禁用它可以解决我们案例中的问题:

打开任务计划程序,转到 Microsoft/Windows/Management/Provisioning 并禁用登录任务。

资料来源:Windows TenForums

于 2019-11-04T10:23:00.013 回答