Die Fehlermeldung THREAD_STUCK_IN_DEVICE_DRIVER tritt auf, wenn ein Gerätetreiber in einer Endlosschleife hängen bleibt und darauf wartet, dass die zugehörige Hardware in den Leerlauf versetzt wird.
Dieses Problem ist oft das Ergebnis eines Hardwareproblems oder eines Problems mit dem Gerätetreiber, der versucht, die Hardware zu programmieren. Dieser Fehler tritt häufiger bei einer defekten Grafikkarte oder einem defekten Grafikkartentreiber auf.
Lösungen für Endbenutzer
Wenn Sie ein Endbenutzer sind (der den Treiber nicht entwickelt) und dieser Fehler auftritt, suchen Sie nach aktualisierten Treibern für Ihr Gerät. Wenn keine aktualisierten Treiber vorhanden sind und keine neue Hardware hinzugefügt wurde, kann davon ausgegangen werden, dass die Hardware im Computer ausgefallen ist und ersetzt werden sollte.
Entwicklerlösungen
Wenn Sie der Entwickler des Treibers sind oder versuchen, dieses Problem zu debuggen, verwenden Sie den Befehl .thread (Set Register Context). Verwenden Sie dann den Befehl kb (Display Stack Backtrace), um herauszufinden, wo der Thread hängen bleibt.
Möglicherweise können Sie Informationen im Debugger verwenden, um dieses Problem ebenfalls zu beheben. Der DbgBreakPoint wird aufgerufen, wenn der Fehler auftritt, wenn der Kernel-Debugger bereits ausgeführt wurde, als Windows den Fehler oder die Timeout-Bedingung erkannte. In diesem Fall wird KeBugCheckEx nicht aufgerufen und die Verwendung des Befehls .bugcheck (Display Bug Check Data) enthält keine nützlichen Informationen (wenn überhaupt Informationen).
Der Debugger enthält ähnliche Informationen wie die obigen Parameter. Sie können die vier Parameter weiterhin anzeigen, indem Sie sie je nach Betriebssystem mit einem der beiden Befehle aus den globalen Variablen des Watchdog abrufen.
-
32-Bit-System: dd watchdog!g_WdBugCheckData L5
-
64-Bit-System: dq watchdog!g_WdBugCheckData L5
Mit dieser interaktiven Methode zum Debuggen des Fehlers können Sie den Thread finden, der den Fehler verursacht, Haltepunkte im Thread setzen und später den Befehl g (Go) verwenden, um den Schleifencode zu debuggen.