Windows зупинить помилку THREAD_STUCK_IN_DEVICE_DRIVER

Повідомлення про помилку THREAD_STUCK_IN_DEVICE_DRIVER виникає, коли драйвер пристрою зависає у нескінченному циклі, очікуючи, що відповідне обладнання стане бездіяльним.

Ця проблема часто є результатом апаратної проблеми або проблеми з драйвером пристрою, який намагається програмувати апаратне забезпечення. Ця помилка виникає частіше з дефектною відеокарткою або драйвером відеокарти.

Рішення для кінцевих користувачів

Якщо ви - кінцевий користувач (не розробляє драйвер) і виникає ця помилка, перевірте наявність оновлених драйверів для вашого пристрою. Якщо немає оновлених драйверів і не було додано жодного нового обладнання, можна з впевненістю припустити, що апаратне забезпечення комп'ютера не вдалося виправити і його слід замінити.

Рішення для розробників

Якщо ви розробник драйвера або намагаєтеся налагодити цю проблему, використовуйте команду .thread ( Set Register Context ). Потім, щоб знайти місце, де застряг потік, скористайтеся командою kb ( Display Stack Backtrace ).

Для вирішення цієї проблеми також можна використовувати інформацію в отладчике. DbgBreakPoint буде викликано, коли помилка виникне, якщо відладчик ядра вже працював, коли Windows виявив умову помилки або вимкнення . У цьому випадку KeBugCheckEx не викликатиметься, і за допомогою команди .bugcheck ( відображення даних перевірки помилок ) не буде міститися жодної корисної інформації (якщо така інформація взагалі є).

Відладчик буде містити інформацію, подібну до вищевказаних параметрів. Ви все ще можете переглядати чотири параметри, отримуючи їх із глобальних змінних Watchdog за допомогою однієї з двох команд, залежно від операційної системи.

  • 32-розрядна система: dd watchdog! G_WdBugCheckData L5
  • 64-розрядна система: dq watchdog! G_WdBugCheckData L5

Використовуючи цей інтерактивний метод для налагодження помилки, можна знайти потік, що викликає помилку, встановити точки розриву в потоці і пізніше скористатися командою g (Go) для налагодження циклу циклу.