Что означает код NTSTATUS 0xC0000194 (STATUS_POSSIBLE_DEADLOCK)?

 
Предыдущий Следующий
STATUS_ACCOUNT_EXPIRED STATUS_NETWORK_CREDENTIAL_CONFLICT

STATUS_POSSIBLE_DEADLOCK

Наблюдаемый порядок блокировок может образовать цикл взаимоблокировки

Возможная взаимоблокировка относится к порядку захвата, а не обязательно к уже зависшей системе. Обнаружение взаимоблокировок Driver Verifier строит граф порядка захвата ресурсов и ищет циклы. Цикл означает, что два или более пути кода могут захватывать общие блокировки в несовместимом порядке и взаимоблокироваться при совпадении времени.

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

Что проверить

  • Зафиксируйте оба пути порядка блокировок, создающие цикл.
  • Определите и соблюдайте единую иерархию захвата во всём общем коде.
  • Используйте обнаружение взаимоблокировок Driver Verifier и данные отладчика о блокировках до изменения тайм-аутов.

Ссылки


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