Что означает код возврата ядра macOS 0x10004003 (MACH_RCV_TIMED_OUT)?

 
Предыдущий Следующий
MACH_RCV_INVALID_NAME MACH_RCV_TOO_LARGE

MACH_RCV_TIMED_OUT

Ожидаемый результат состояния простоя

MACH_RCV_TIMED_OUT означает, что операция приёма использовала MACH_RCV_TIMEOUT, но до истечения интервала не поступило подходящее сообщение. Сообщение не было извлечено из очереди. В цикле событий это часто нормальная возможность выполнить периодическую работу, проверить отмену или обновить состояние жизнеспособности; само по себе это не означает неисправность порта, сервера или клиента.

Интерпретация тайм-аута зависит от параметров. Исторический интерфейс Mach предупреждает, что если прерывание приёма не запрошено, прерванный вызов может быть повторён с исходным тайм-аутом, поэтому частые прерывания способны сделать наблюдаемое ожидание дольше простого расчёта по настенным часам. Если важен точный общий срок операции, используйте в логике высокого уровня монотонный deadline.

Как правильно использовать

  • Различайте в журналах и метриках тайм-аут простоя, deadline протокола и сбой однорангового узла.
  • Записывайте имя порта или набора портов, значение тайм-аута и состояние очереди, если оно доступно.
  • Используйте цикл с deadline, если общий бюджет операции должен включать прерывания и повторы.
  • Не опрашивайте с очень малыми тайм-аутами, когда достаточно событийного блокирующего приёма.

Ссылки


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