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

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

MACH_SEND_INVALID_DATA

Встроенная часть сообщения не прошла проверку на стороне отправки

MACH_SEND_INVALID_DATA — результат отправки Mach для недопустимых встроенных данных. Он возникает при проверке исходящего сообщения ядром, до его получения назначением. Статус относится к данным, содержащимся непосредственно в буфере сообщения; он не сообщает о недоступности целевого порта и не относится к случаю внестрочной памяти, представленному MACH_SEND_INVALID_MEMORY.

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

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

  • Запишите маску операции, msgh_size, идентификатор сообщения и признак того, было ли оно помечено как сложное.
  • Убедитесь, что полный заголовок, количество элементов тела, дескрипторы и встроенная полезная нагрузка инициализированы по одним и тем же определениям ABI и структур.
  • Сравните исходящую структуру с контрактом принимающей службы; не выводите формат протокола только из символического имени ошибки.
  • Отделяйте этот случай от недопустимого указателя на внестрочную память и неверной диспозиции дескриптора, для которых предусмотрены собственные результаты Mach.

Ссылки


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