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

 
Предыдущий Следующий
MACH_SEND_INVALID_TYPE MACH_SEND_INVALID_TRAILER

MACH_SEND_INVALID_HEADER

Заголовок не описывает допустимую отправку

MACH_SEND_INVALID_HEADER означает, что поля mach_msg_header_t не образуют допустимую комбинацию для отправки из пользовательского пространства в ядро. Наиболее важное поле — msgh_bits: оно кодирует диспозиции портов назначения, ответа и voucher, а также признак сложного сообщения. Зарезервированные или несовместимые биты, недопустимая для указанного поля порта диспозиция либо несогласованный заголовок могут сделать всё сообщение недопустимым.

Условие полезно тем, что возникает до доставки сообщения. Оно указывает на логику сериализации или построения интерфейса, а не на доступность сервера. Замена только константы, возвращаемой обёрткой, не является исправлением: проверьте весь заголовок и код его заполнения.

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

  • Задавайте диспозиции портов документированными макросами MACH_MSGH_BITS, а не числовыми литералами.
  • Обнуляйте зарезервированные биты и инициализируйте все поля заголовка до назначения портов.
  • Убедитесь, что поле remote содержит допустимое право send или send-once, а поле local/reply совместимо с протоколом.
  • Проверьте упаковку структуры и сгенерированные привязки, если сообщение пересекает границу языка или ABI.

Ссылки


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