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

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

MACH_SEND_INVALID_DEST

Почему это происходит

MACH_SEND_INVALID_DEST означает, что msgh_remote_port нельзя использовать как адрес назначения отправки. Имя порта Mach имеет смысл только в пространстве прав вызывающей задачи; число из другой задачи, освобождённое право, dead name или право с неверной диспозицией непригодны. Работающая служба также может исчезнуть после кэширования клиентом права send.

Это не отказ прикладного сервера: ядро не доставило запрос службе. Рассматривайте ошибку как отказ конечной точки IPC или владения и создавайте запрос заново только после повторного обнаружения или установления права назначения.

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

  • Запишите имя порта назначения, remote disposition в msgh_bits и компонент, предоставивший право.
  • Убедитесь, что вызывающая задача всё ещё владеет send/send-once, а не receive, dead name или устаревшим числом.
  • Для launchd, XPC или MIG повторите документированный поиск службы вместо хранения порта через её перезапуск.
  • Не считайте запрос обработанным; выбор повтора зависит от идемпотентности RPC.

Ссылки


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