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

 
Предыдущий Следующий
MACH_SEND_INVALID_RT_OOL_SIZE MACH_SEND_MSG_FILTERED

MACH_SEND_NO_GRANT_DEST

Сообщение пытается передать порт назначению, которое это запрещает

MACH_SEND_NO_GRANT_DEST означает, что целевой порт не принимает порты в теле сообщения. Это имеет значение только для сложного сообщения Mach с дескрипторами портов: отправитель пытается передать возможность, а не просто обычные байты. Поэтому даже допустимое право назначения может отклонить именно такое тело.

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

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

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

Ссылки


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