Что означает код errno 103 (ENOPOLICY)?

 
Также может означать:
КонстантаТипОС
ERROR_TOO_MANY_SEM_REQUESTSОшибка WindowsWindows
HTTP_EARLY_HINTSHTTP-статусЛюбая
ECONNABORTEDerrnoLinux
EALREADYerrnoWindows
CONFIG_INITIALIZATION_FAILEDКод BSODWindows
Предыдущий Следующий
ECONNABORTED EALREADY

ENOPOLICY

На этой странице рассматривается состояние Имя или идентификатор политики Darwin не зарегистрированы. Ядро или инфраструктура безопасности не смогли разрешить запрошенную регистрацию политики.

Что в действительности сообщает формулировка

Обработка системных вызовов Darwin BSD: незарегистрированное имя или идентификатор политики Darwin относится к Darwin errno и должно декодироваться по точному заголовку SDK или XNU, использованному целевой системой. Расширения Darwin и устаревшие имена STREAMS, связанные с этим состоянием, могут отличаться наличием или нумерацией в других UNIX-подобных системах при диагностике незарегистрированной политики Darwin. В рамках Обработки системных вызовов Darwin BSD формулировка, связанная с ENOPOLICY, указывает на исходный интерфейс, но не доказывает, что код вернула современная подсистема с похожим названием.

Darwin назначает нескольким символам errno вне POSIX собственные значения и номера при диагностике незарегистрированной политики Darwin. При исследовании незарегистрированного имени или идентификатора политики Darwin не декодируйте число по таблице Linux и не считайте, что тот же символ возвращается тем же API в другой ОС.

Данные до повторной попытки

СведенияНа какой вопрос отвечают
Идентификатор или имя политики, регистрирующий компонент, поколение загрузки или сеанса, entitlement и вызываемый API.Связывают незарегистрированную политику с одним действующим объектом API, а не только с переведённым сообщением.
Значение Darwin errno и версия заголовка SDK/XNU, по которому оно декодировано при диагностике незарегистрированной политики Darwin.Показывают, возникла ли ошибка в ABI вызывающей стороны, оболочке или поставщике при диагностике незарегистрированной политики Darwin.
Результат первого системного вызова или ioctl, а также процесс, поток и поколение объекта при диагностике незарегистрированной политики Darwin.Сохраняют первую границу до того, как errno может быть перезаписан при диагностике незарегистрированной политики Darwin.
Заведомо исправный объект того же класса в той же сборке macOS при диагностике незарегистрированной политики Darwin.Даёт контрольное сравнение на той же платформе.

Сохраните errno сразу после отказавшего вызова, вернувшего состояние Имя или идентификатор политики Darwin не зарегистрированы, до выполнения форматирования, трассировки, выделения памяти или очистки. Для Имя или идентификатор политики Darwin не зарегистрированы также сохраните возвращаемое значение функции, поскольку многие интерфейсы C сообщают об ошибке через него, а errno используют лишь как дополнительную информацию.

Граничные тесты

  1. Перечислите или зарегистрируйте одну известную политику через владеющую инфраструктуру. Отметьте, достигает ли проверка политики той же границы системного вызова или среды выполнения, что и исходная ошибка.
  2. Немедленно сохраните errno и сравните связанное возвращаемое значение при диагностике незарегистрированной политики Darwin. Если после теста errno изменился, это новая граница, а не иная формулировка той же ошибки.
  3. Повторите тест с одним контролируемым объектом, сохранив идентификатор и песочницу без изменений при диагностике незарегистрированной политики Darwin. После контроля повторите исходную операцию, чтобы результат оставался относящимся к незарегистрированной политике.

Особенно показательны идентификатор или имя политики, регистрирующий компонент, поколение загрузки или сеанса, entitlement и вызываемый API. В качестве контроля перечислите или зарегистрируйте одну известную политику через владеющую инфраструктуру. Для состояния Имя или идентификатор политики Darwin не зарегистрированы эти данные позволяют отличить устаревший идентификатор или неподдерживаемый запрос от общего отказа поставщика без масштабных изменений узла.

Не переводите код без проверки контекста

Соблазнительное предположениеБолее безопасная интерпретация
Английская фраза считается переносимой между платформамиСостояние относится к обработке системных вызовов Darwin BSD; до применения таблицы errno другой платформы проверьте заголовки целевой системы и API, вернувший код
Повтор завершился успешно и стёр исходные данныеПовтор может заменить ошибку другим состоянием; заранее сохраните первый вызов, числовое значение и поколение объекта

Если оболочка преобразует состояние Имя или идентификатор политики Darwin не зарегистрированы в исключение или логическое значение, добавьте инструментирование ниже этой оболочки. Для Имя или идентификатор политики Darwin не зарегистрированы решающее значение имеет системный вызов, ioctl, функция CRT или точка входа совместимости, впервые предоставившая код.

Доказательство исправления

Целевое исправление. Установите или включите поставщика, владеющего политикой, либо прекратите запрашивать частную или удалённую политику.

Доказательство отсутствия регрессии. Требуемая политика регистрируется до использования, а неизвестные политики завершаются ошибкой без перехода к более слабому поведению. Проверьте один поддерживаемый граничный случай и один намеренно отрицательный случай, чтобы обработка состояния Имя или идентификатор политики Darwin не зарегистрированы оставалась явной.

Технические ссылки

Эти источники владельцев и стандартов определяют пространство имён и контракт подсистемы, необходимые для проверки Обработки системных вызовов Darwin BSD ENOPOLICY в установленной версии платформы.

  • Apple XNU: errno.h — определяет используемое пространство статусов при диагностике незарегистрированной политики Darwin.
  • Apple: ошибки системных вызовов intro(2) — описывает границу API или жизненного цикла при диагностике незарегистрированной политики Darwin.
  • Apple OSS: исходный код XNU — предоставляет контекст ABI, реализации или протокола при диагностике незарегистрированной политики Darwin.
  • The Open Group: errno.h — определяет ограничения переносимости и проверки при диагностике незарегистрированной политики Darwin.

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