Поделиться через


0xEA проверки ошибок: THREAD_STUCK_IN_DEVICE_DRIVER

Проверка ошибок THREAD_STUCK_IN_DEVICE_DRIVER имеет значение 0x000000EA. Это означает, что поток в драйвере устройства бесконечно вращается.

Важно!

Эта статья предназначена для программистов. Если вы являетесь клиентом, который получил код ошибки синего экрана во время работы с компьютером, см. статью Устранение ошибок синего экрана.

Параметры THREAD_STUCK_IN_DEVICE_DRIVER

Параметр Описание

1

Указатель на застрявший объект потока

2

Указатель на объект DEFERRED_WATCHDOG

3

Указатель на имя драйвера, вызывающее оскорбление.

4

В отладчике ядра: Количество попаданий в проверка 0xEA "перехвата" ошибки

На синем экране: 1

Причина

Драйвер устройства вращается в бесконечном цикле и, скорее всего, ожидает, пока оборудование не будет бездействующим.

Обычно это означает проблему с самим оборудованием или драйвером устройства, который неправильно программирует оборудование. Часто это является результатом плохого видео карта или неправильного драйвера дисплея.

Решение

Расширение отладки !analyze отображает сведения о проверка ошибок и может быть полезно для определения первопричины.

Используйте команду .thread (Set Register Context) вместе с параметром 1. Затем используйте kb (Display Stack Backtrace), чтобы найти расположение, в котором завис поток.

Если отладчик ядра уже подключен и запущен, когда Windows обнаруживает условие времени ожидания. Затем dbgBreakPoint будет вызываться вместо KeBugCheckEx. В отладчик будет выведено подробное сообщение. Дополнительные сведения см. в разделе Отправка выходных данных в отладку.

Это сообщение будет содержать сведения об ошибке проверка параметрах. Так как фактические проверка ошибок не были выданы, команда .bugcheck (Отображение данных проверки ошибок) не будет полезной. Четыре параметра также можно получить из глобальных переменных Watchdog с помощью dd watchdog!g_WdBugCheckData L5" в 32-разрядной системе или dq watchdog!g_WdBugCheckData L5" в 64-разрядной системе.

Отладка этой ошибки в интерактивном режиме, например это, позволит найти обижающий поток, задать в нем точки останова, а затем с помощью g (Go) вернуться к вращаемом коду для дальнейшей его отладки.

На многопроцессорных компьютерах (сборка ОС 3790 или более ранней версии) можно установить время ожидания, если вращаемый поток прерывается аппаратным прерыванием и во время проверка ошибки выполняется подпрограмма ISR или DPC. Это связано с тем, что рабочий элемент времени ожидания может быть доставлен и обработан на втором ЦП и в то же время. В этом случае необходимо более подробно рассмотреть стек потока, вызывающий ошибку, чтобы определить код, который вызвал истечение времени ожидания. Для этого используйте команду dds (Отображение слов и символов ).