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

 
Предыдущий Следующий
MACH_SEND_INVALID_DEST MACH_SEND_INVALID_VOUCHER

MACH_SEND_TIMED_OUT

Что означает тайм-аут

MACH_SEND_TIMED_OUT обычно является результатом обратного давления. При MACH_SEND_TIMEOUT отправитель, ожидающий свободного места в очереди целевого порта, возвращается после истечения заданного интервала. Это не сетевой тайм-аут удалённой системы: порты Mach являются локальными конечными объектами IPC ядра. Служба может работать, но недостаточно быстро освобождать очередь, быть заблокированной зависимостью или перегруженной производителями запросов.

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

Восстановление и диагностика

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

Ссылки


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