| Предыдущий | Следующий |
| MACH_SEND_INVALID_TRAILER | MACH_SEND_INVALID_RT_OOL_SIZE |
MACH_SEND_INVALID_CONTEXT
Назначение отклонило связанный с отправкой контекст отправителя
MACH_SEND_INVALID_CONTEXT отличается от неверного имени порта или недопустимого заголовка. Современное определение XNU указывает, что контекст отправляющего потока не совпал с контекстом целевого порта. Иными словами, сообщение может быть структурно правильным, но при этом не пройти проверку связи между отправляющим потоком и назначением, которую обеспечивает ядро.
Для диагностики это важно, поскольку изменение полезной нагрузки не устраняет несоответствие контекста. Результат также отличается от тайм-аута: отправка отклонена проверкой согласованности, а не задержана заполненной очередью. Сохраняйте в диагностике поток, порт и контекст операции вместе, чтобы последующая трассировка могла отличить устаревший или неверно связанный конечный объект от ошибочной структуры сообщения.
Что исследовать
- Зафиксируйте имя целевого порта, вызывающий поток, параметры сообщения и платформу либо подсистему, создавшую порт.
- Проверьте код передачи и жизненного цикла, который до отправки перемещает запрос в другую очередь, задачу или контекст выполнения.
- Не сводите этот результат к
MACH_SEND_INVALID_DEST: последний обозначает недопустимое право назначения, тогда как данный код сообщает о несоответствии контекста. - По возможности заново создайте запрос через владеющий им API, а не повторно используйте закэшированную низкоуровневую связь порта.
Ссылки
- Исходный код Apple XNU: mach/message.h
- Справочник интерфейса ядра Mach: mach_msg
- Справочное руководство GNU Mach: межпроцессное взаимодействие
Нужно найти другой код? Найти другой код состояния или ошибки.