Что означает код errno 104 (EBADMSG)?

 
Также может означать:
КонстантаТипОС
ERROR_INVALID_AT_INTERRUPT_TIMEОшибка WindowsWindows
ECONNRESETerrnoLinux
ENOTRECOVERABLEerrnomacOS
FILE_INITIALIZATION_FAILEDКод BSODWindows
Предыдущий Следующий
ENOTRECOVERABLE ENOBUFS

EBADMSG

Что означает EBADMSG в Windows UCRT

EBADMSG означает «Сообщение не содержит данных». Для условия «Сообщение не содержит данных» код EBADMSG нужно связывать с первым возвратившим его вызовом и контекстом: сообщение, очередь, STREAMS/IPC-объект или служебный интерфейс.

Для условия «Сообщение не содержит данных» сначала установите канал ошибки: UCRT использует errno, Win32 API — GetLastError(), а Winsock — WSAGetLastError(); эти значения не взаимозаменяемы. Для EBADMSG исходная английская страница также выделяет EPROTO, UCRT и RPC; эти данные полезно записать вместе с return value, потоком и временем события.

Диагностика

  • При ошибке «Сообщение не содержит данных» (Windows UCRT, EBADMSG) запишите тип объекта, команду, размер сообщения, идентификаторы и состояние очереди или потока.
  • При ошибке «Сообщение не содержит данных» (Windows UCRT, EBADMSG) проверьте структуру и длину относительно версии интерфейса и фактической архитектуры процесса.
  • При ошибке «Сообщение не содержит данных» (Windows UCRT, EBADMSG) установите, существует ли owner/peer и не был ли объект удалён между поиском и операцией.
  • При ошибке «Сообщение не содержит данных» (Windows UCRT, EBADMSG) не сводите специализированный статус к общей ошибке ввода-вывода до проверки контракта IPC.

На платформе Windows UCRT исправление EBADMSG считается подтверждённым, когда исходная операция даёт ожидаемый результат, а отдельный отрицательный тест по-прежнему воспроизводит именно условие «Сообщение не содержит данных» без утечки ресурсов и потери первичной диагностики.

Ссылки для EBADMSG


Нужно найти другой код? Найти другой код состояния или ошибки.