Причины редких проблем sendto () / recvfrom () под Winsock? - PullRequest
0 голосов
/ 28 октября 2019

В последнее время мы наблюдаем редкие проблемы связи UDP, которые проявляются следующими симптомами:

  1. Сбой вызова sendto() с ошибкой WSAENOBUFS (10055)
  2. Последующий вызов recvfrom() на этом сокете ничего не получает, хотя Wireshark показывает, что сетевой интерфейс действительно получил ожидаемые дейтаграммы. Эта ситуация сохраняется в течение приблизительно 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 для рабочих станций, версия 10.0.17763, сборка 17763.

В этой системе мы смогли воспроизвести проблему с помощью простой тестовой программы, написанной на C ++, которая повторяет дейтаграммы UDP. Мы убедились, что поток, получающий из сокета, действительно реагировал все время, указав время ожидания в 1 секунду, используя SO_RCVTIMEO, напечатав некоторые «еще живые» выходные данные и немедленно снова вызвав recvfrom().

Вкл. В нашей собственной тестовой системе мы не смогли наблюдать проблему при тех же обстоятельствах, что и у клиента. Тем не менее, мы смогли вызвать аналогичные эффекты, когда играли с настройками сетевого адаптера во время выполнения теста. Включение Microsoft LLDP Protocol Driver показало ошибку sendto() и иногда также приводило к 8-секундному периоду молчания, но без записи в системном журнале Windows.

Любые советы приветствуются.

1 Ответ

0 голосов
/ 04 ноября 2019

Похоже, что проблема связана с Microsoft Provisioning Tool начиная с Windows 10 1809.

Отключение этого исправило проблему в нашем случае:

Откройте планировщик задач, перейдите в Microsoft /Windows / Управление / Предоставление и отключение задачи входа в систему.

Источник: Windows TenForums

...