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

 
Предыдущий Следующий
MACH_MSG_MASK MACH_SEND_INVALID_DATA

MACH_SEND_IN_PROGRESS

Внутренний признак ожидания

MACH_SEND_IN_PROGRESS объявлен в текущих заголовочных файлах XNU как предназначенный только для внутреннего использования. Он представляет поток, ожидающий в пути отправки, и не является обычным общедоступным результатом завершения, который код приложения должен обрабатывать как стабильный исход API. Переполненная очередь сообщений, параметр тайм-аута, прерывание или событие жизненного цикла порта могут определить окончательный общедоступный результат после завершения ожидания.

Если эта константа появилась в журнале приложения, сначала установите, откуда она получена. Её могут раскрыть трассировка ядра, проверка отладчиком, анализ сбоя, закрытые оболочки или код, записывающий промежуточное состояние потока. Считать её эквивалентом MACH_SEND_TIMED_OUT неверно: «выполняется» описывает ожидание, а тайм-аут является результатом завершённой операции.

Что проверить

  • Сохраните окончательное возвращаемое значение mach_msg и использованные параметры, особенно поведение тайм-аута и прерывания.
  • Проверьте нагрузку на очередь назначения и оставалось ли право получения действительным во время ожидания.
  • Не сохраняйте это внутреннее значение как межверсионное состояние протокола.
  • При диагностике зависшего потока проверяйте причину его ожидания и принимающую службу, а не запускайте неограниченные повторы из другого потока.

Ссылки


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