Windows stopt de fout THREAD_STUCK_IN_DEVICE_DRIVER

Het THREAD_STUCK_IN_DEVICE_DRIVER-foutbericht verschijnt wanneer een apparaatstuurprogramma vastloopt in een oneindige lus en wacht tot de bijbehorende hardware inactief wordt.

Dit probleem is vaak het gevolg van een hardwareprobleem of een probleem met het stuurprogramma dat probeert de hardware te programmeren. Deze fout komt vaker voor bij een defect videokaart- of videokaartstuurprogramma.

Eindgebruikersoplossingen

Als u een eindgebruiker bent (die het stuurprogramma niet ontwikkelt) en deze fout tegenkomt, controleert u of er bijgewerkte stuurprogramma's voor uw apparaat zijn. Als er geen bijgewerkte stuurprogramma's zijn en er geen nieuwe hardware is toegevoegd, is het veilig om aan te nemen dat de hardware op de computer is mislukt en moet worden vervangen.

Ontwikkelaar oplossingen

Als u de ontwikkelaar van de driver bent of probeert om dit probleem te debuggen, gebruikt u de opdracht .thread ( Set Register Context ). Zoek vervolgens naar de opdracht kb ( Backstage weergeven in de Stack-stack ) om vast te stellen waar de thread vastzit.

Het is misschien mogelijk om informatie in de foutopsporing ook te gebruiken om dit probleem op te lossen. De DbgBreakPoint zal worden aangeroepen wanneer de fout optreedt als de kerndebugger al werd uitgevoerd toen Windows de fout of de time- outvoorwaarde detecteerde. In dit geval wordt de KeBugCheckEx niet aangeroepen en gebruikt de .bugcheck ( Display Bug Check Data ) -opdracht geen nuttige informatie (als er al informatie is).

De foutopsporing bevat informatie die vergelijkbaar is met de bovenstaande parameters. U kunt de vier parameters nog steeds bekijken door ze op te halen uit de globale variabelen van de Watchdog met behulp van een van de twee opdrachten, afhankelijk van het besturingssysteem.

  • 32-bits systeem: dd watchdog! G_WdBugCheckData L5
  • 64-bits systeem: dq watchdog! G_WdBugCheckData L5

Door deze interactieve methode te gebruiken om fouten te debuggen, kunt u de thread vinden die de fout veroorzaakt, onderbrekingspunten in de thread instellen en later de opdracht g (Go) gebruiken om de looping-code te debuggen.