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

 
Предыдущий Следующий
MACH_RCV_IN_PROGRESS_TIMED kOSMetaClassInternal

MACH_RCV_INVALID_REPLY

Проверка строгого ответа отклонила связь с портом ответа

MACH_RCV_INVALID_REPLY возвращается, когда в сообщении MACH_MSG_STRICT_REPLY используется недопустимый порт ответа. Параметр строгого ответа является ограничением протокола, а не общим режимом приёма: заголовок XNU требует его как на стороне отправки, так и на стороне приёма. Следовательно, этот статус означает, что связь с портом ответа не удовлетворила дополнительным проверкам, предусмотренным для данного обмена.

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

Что исследовать

  • Зафиксируйте полные маски параметров отправки и приёма, включая наличие MACH_MSG_STRICT_REPLY с обеих сторон.
  • Отслеживайте создание, владение, передачу и повторное использование порта ответа для каждого запроса, а не сохраняйте в кэше только числовое имя.
  • В параллельном коде обеспечьте однозначную связь запроса с ответом и не используйте общий конечный объект ответа для несвязанных незавершённых вызовов.
  • Сравните отказ с MACH_RCV_INVALID_NAME: тот код относится к самому имени приёма, а этот — именно к проверке строгого ответа.

Ссылки


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