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

 
Предыдущий Следующий
MACH_SEND_INVALID_VOUCHER MACH_SEND_MSG_TOO_SMALL

MACH_SEND_INTERRUPTED

Семантика прерываемой отправки

MACH_SEND_INTERRUPTED означает, что программное прерывание отменило отправку, ожидавшую в ядре. Статус особенно значим, если вызов использовал MACH_SEND_INTERRUPT; иначе пользовательская оболочка mach_msg обычно повторяет прерванную отправку. Следовательно, это явный результат управления потоком, выбранный вызывающей стороной, а не доказательство отклонения запроса назначением.

Для этого результата Mach использует путь восстановления pseudo-receive, чтобы по возможности вернуть сообщение. Это важно для сложных сообщений с перемещаемыми правами или внестрочной памятью. Не предполагайте, что запрос поставлен в очередь, и не освобождайте и не дублируйте переданные ресурсы до проверки их состояния после возврата.

Как обрабатывать

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

Ссылки


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