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

 
Предыдущий Следующий
MACH_RCV_PORT_CHANGED MACH_RCV_INVALID_DATA

MACH_RCV_INVALID_NOTIFY

Ошибка настройки канала уведомлений

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

Этот результат отличается от MACH_RCV_INVALID_NAME. Основная цель приёма может быть допустимой, тогда как вторичная конечная точка уведомления — нет. Диагностируйте два порта отдельно и не считайте это доказательством получения сообщения или отказа основного порта.

Что исправить

  • Запишите цель приёма и порт уведомления как отдельные значения с предполагаемыми типами прав.
  • Создайте конечную точку уведомления до выдачи приёма и сохраняйте её право приёма до завершения или отмены.
  • Проверьте параллельные пути очистки, способные освободить или переместить право уведомления.
  • Предпочитайте API уведомлений высокоуровневой среды, если она владеет полным жизненным циклом прав портов.

Ссылки


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