| Предыдущий | Следующий |
| MACH_SEND_INVALID_RIGHT | MACH_SEND_INVALID_MEMORY |
MACH_SEND_INVALID_NOTIFY
Когда этот код применим
MACH_SEND_INVALID_NOTIFY относится к параметрам отправки, запрашивающим уведомления, например MACH_SEND_CANCEL. Аргумент notify должен обозначать право получения, способное принять уведомление ядра. Передача права отправки, мёртвого имени, несвязанного порта или устаревшего числового значения не может создать такой канал обратного вызова.
Обычно это ошибка настройки IPC на стороне вызывающей программы. Это не уведомление о сбое службы назначения, и исходную отправку нельзя считать доставленной только потому, что был указан порт уведомления. Исправьте жизненный цикл конечной точки уведомления до повторения операции.
Полезные проверки
- Зафиксируйте точную маску параметров Mach и различайте порты назначения, ответа и уведомления.
- Убедитесь, что задача владеет правом получения порта уведомления в течение всей операции.
- Проверьте, что очистка не может освободить или переместить это право получения, пока другой поток начинает отправку.
- Используйте высокоуровневый API фреймворка, если он управляет отменой и уведомлениями; ручное смешение прав подвержено ошибкам.
Ссылки
- Справочник интерфейса ядра Mach: mach_msg
- Исходный код Apple XNU: mach/message.h
- Руководство Apple по программированию ядра: обзор Mach
Нужно найти другой код? Найти другой код состояния или ошибки.
