| Предыдущий | Следующий |
| KERN_CODESIGN_ERROR | KERN_INSUFFICIENT_BUFFER_SIZE |
KERN_POLICY_STATIC
Изменение политики, которое целевой поток не принимает
KERN_POLICY_STATIC означает, что запрошенное свойство в этот момент изменить нельзя. Для операций с политикой потока Mach это отличается и от неверно сформированного запроса, и от обычного отказа в авторизации: целевой поток имеет статические параметры политики, поэтому планировщик не применяет запрошенное изменение через этот путь.
Современная XNU проверяет состояние static_param потока перед применением изменений политики. Как реализация thread_policy_set в ядре, так и устаревший путь абсолютного приоритета могут вернуть KERN_POLICY_STATIC для такого потока.
Почему приложение может не увидеть код 51 напрямую
Общедоступные оболочки libsyscall для thread_policy_set, thread_policy и thread_set_policy после базового RPC ядра явно преобразуют KERN_POLICY_STATIC в KERN_SUCCESS. Поэтому необработанный результат Mach, внутренняя трассировка или низкоуровневый клиент могут показывать этот код, тогда как вызывающая сторона, использующая общедоступную оболочку, наблюдает только успех.
При диагностике не считайте успех на уровне оболочки достаточным доказательством того, что устаревшее изменение политики вступило в силу. Проверьте политику, фактически действующую для целевого потока, и точный интерфейс, вернувший статус.
Что проверить
- Запишите, был ли результат получен из общедоступной оболочки, прямого RPC Mach, расширения ядра или диагностического инструмента.
- Определите запрошенную разновидность и целевой поток. Повтор с тем же объектом и статическим состоянием не сделает свойство изменяемым.
- Не классифицируйте это автоматически как проблему привилегий.
KERN_PROTECTION_FAILUREиKERN_DENIEDописывают другие классы отказов. - Если целью является обычная отзывчивость приложения, используйте документированный высокоуровневый механизм планирования или QoS, подходящий приложению, а не предполагайте, что устаревший запрос политики Mach сможет переопределить статическую политику.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
