最近、次の症状を示すまれな UDP 通信の問題が確認されています。
- ソケット
sendto()
呼び出しがエラーWSAENOBUFS (10055)で失敗する - このソケットでの後続の
recvfrom()
呼び出しは、ネットワーク インターフェイスが予想されるデータグラムを実際に受信したことを Wireshark が示していても、何も受信しません。この状況は約 8 秒間持続し、その後、新しい受信データグラムをソケットから再度受信できます。 - 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 ビルド 17763 を実行している顧客システムで発生します。
そのシステムでは、UDP データグラムをエコーする C++ で記述された単純なテスト プログラムで問題を再現することができました。ソケットから受信するスレッドが実際に常に応答していることを確認しましSO_RCVTIMEO
たrecvfrom()
。
独自のテスト システムでは、お客様と同じ状況で問題を確認できませんでした。ただし、テストの実行中にネットワーク アダプターの設定をいじると、同様の効果を引き起こすことができました。有効Microsoft LLDP Protocol Driver
にするとエラーがsendto()
表示され、8 秒間の「無音」期間が発生することもありましたが、Windows システム ログのエントリはありませんでした。
どんなヒントでも大歓迎です。