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

 
Предыдущий Следующий
MACH_SEND_INVALID_RIGHT MACH_SEND_INVALID_MEMORY

MACH_SEND_INVALID_NOTIFY

Когда этот код применим

MACH_SEND_INVALID_NOTIFY относится к параметрам отправки, запрашивающим уведомления, например MACH_SEND_CANCEL. Аргумент notify должен обозначать право получения, способное принять уведомление ядра. Передача права отправки, мёртвого имени, несвязанного порта или устаревшего числового значения не может создать такой канал обратного вызова.

Обычно это ошибка настройки IPC на стороне вызывающей программы. Это не уведомление о сбое службы назначения, и исходную отправку нельзя считать доставленной только потому, что был указан порт уведомления. Исправьте жизненный цикл конечной точки уведомления до повторения операции.

Полезные проверки

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

Ссылки


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