Freigeben über


Fehlerüberprüfung 0x116: VIDEO_TDR_FAILURE

Die VIDEO_TDR_FAILURE Fehlerüberprüfung weist den Wert 0x00000116 auf. Diese Fehlerüberprüfung gibt an, dass ein Versuch, den Anzeigetreiber zurückzusetzen und aus einem Timeout wiederherzustellen, fehlgeschlagen ist.

Wichtig

Dieser Artikel richtet sich an Programmierer*innen. Wenn Sie Kunde sind, der/die einen Bluescreen-Fehlercode bei der Benutzung eines Computers erhalten hat, lesen Sie bitte Fehlerbehebung bei Bluescreen-Fehlern.

VIDEO_TDR_FAILURE-Parameter

Parameter Beschreibung
1 Der Zeiger zum internen TDR-Wiederherstellungskontext, falls verfügbar.
2 Ein Zeiger für das verantwortliche Gerätetreibermodul (z. B. das Besitzertag).
3 Der Fehlercode des letzten fehlgeschlagenen Vorgangs, falls verfügbar.
4 Interne kontextabhängige Daten, falls verfügbar.

Ursache

Ein gängiges Stabilitätsproblem in Grafiken tritt auf, wenn das System beim Verarbeiten eines Endbenutzerbefehls oder -vorgangs vollständig eingefroren oder aufgehängt erscheint. In der Regel ist die GPU mit der Verarbeitung intensiver Grafikvorgänge beschäftigt, üblicherweise während des Spielens. Es treten keine Bildschirmaktualisierungen auf, und Benutzer gehen davon aus, dass ihr System eingefroren ist. Benutzer warten in der Regel einige Sekunden, und starten das System dann neu, indem sie den Ein-/Aus-Schalter drücken. Windows versucht, diese problematischen Aufhängungen zu erkennen und einen reaktionsfähigen Desktop dynamisch wiederherzustellen.

Dieser Prozess der Erkennung und Wiederherstellung wird als Timeout Detection and Recovery (TDR) bezeichnet. Die Standardverzögerung beträgt 2 Sekunden. Im TDR-Prozess für Grafikkarten ruft der GPU-Scheduler des Betriebssystems die DxgkDdiResetFromTimeout-Funktion des Display-Miniporttreibers auf, um den Treiber neu zu initialisieren und die GPU zurückzusetzen.

Während dieses Vorgangs teilt das Betriebssystem dem Treiber mit, nicht auf die Hardware oder den Arbeitsspeicher zuzugreifen, und gibt ihm eine kurze Zeit, bis derzeit ausgeführte Threads abgeschlossen werden. Wenn die Threads nicht innerhalb des Timeouts abgeschlossen sind, überprüft der Systemfehler mit 0x116 VIDEO_TDR_FAILURE. Weitere Informationen finden Sie unter Threadsynchronisierung und TDR.

Das System kann auch eine Fehlerüberprüfung mit VIDEO_TDR_FAILURE durchführen, wenn mehrere TDR-Ereignisse in kurzer Zeit auftreten. Der Standardwert beträgt mehr als fünf TDRs in einer Minute.

Wenn der Wiederherstellungsvorgang erfolgreich ist, wird eine Meldung angezeigt, die angibt, dass der Anzeigetreiber nicht mehr reagiert und wiederhergestellt wurde.

Weitere Informationen finden Sie unter Timeouterkennung und -wiederherstellung (TDR), TDR-Registrierungsschlüssel und TDR-Änderungen in Windows 8 und höher.

Lösung

Die GPU benötigt mehr Zeit als zulässig, um Grafiken auf Ihrem Monitor anzuzeigen. Dieses Verhalten kann aus einem oder mehreren der folgenden Gründe auftreten:

  • Möglicherweise müssen Sie die neuesten Updates für Ihren Anzeigetreiber installieren, damit der TDR-Prozess ordnungsgemäß unterstützt wird.
  • Hardwareprobleme, die die Fähigkeit der Grafikkarte beeinflussen, ordnungsgemäß zu funktionieren, einschließlich:
    • Übertaktete Komponenten, z. B. das Motherboard
    • Falsche Komponentenkompatibilität und -einstellungen (insbesondere Speicherkonfiguration und Anzeigedauer)
    • Unzureichende Systemkühlung
    • Unzureichende Systemleistung
    • Defekte Teile (Speichermodule, Motherboards usw.)
  • Visuelle Effekte oder zu viele Programme, die im Hintergrund ausgeführt werden, verlangsamen ihren PC möglicherweise, sodass die Grafikkarte nicht nach Bedarf reagieren kann.

Die !analyze-Debugerweiterung zeigt Informationen zur Fehlerüberprüfung an und kann bei der Ermittlung der Ursache hilfreich sein.

1: kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

VIDEO_TDR_FAILURE (116)
Attempt to reset the display driver and recover from timeout failed.
Arguments:
Arg1: ffffe000c2c404c0, Optional pointer to internal TDR recovery context (TDR_RECOVERY_CONTEXT).
Arg2: fffff8016470c14c, The pointer into responsible device driver module (e.g. owner tag).
Arg3: ffffffffc000009a, Optional error code (NTSTATUS) of the last failed operation.
Arg4: 0000000000000004, Optional internal context dependent data.

...

Der Name des fehlerhaften Moduls wird ebenfalls angezeigt.

MODULE_NAME: nvlddmkm

IMAGE_NAME:  nvlddmkm.sys

Mit dem Befehl lm (List Loaded Modules) können Sie Informationen zum fehlerhaften Treiber, einschließlich des Zeitstempels, anzeigen.

1: kd> lmvm nvlddmkm
Browse full module list
start             end                 module name
fffff801`63ec0000 fffff801`649a7000   nvlddmkm T (no symbols)           
    Loaded symbol image file: nvlddmkm.sys
    Image path: \SystemRoot\system32\DRIVERS\nvlddmkm.sys
    Image name: nvlddmkm.sys
    Browse all global symbols  functions  data
    Timestamp:        Wed Jul  8 15:43:44 2015 (559DA7A0)
    CheckSum:         00AA7491
    ImageSize:        00AE7000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4

Parameter 1 enthält einen Zeiger auf TDR_RECOVERY_CONTEXT. Wie in der Ausgabe "!analyze" gezeigt, können Sie mithilfe des dt Befehls diese Daten anzeigen, wenn Sie Über Symbole für den zugehörigen Code verfügen.

1: kd> dt dxgkrnl!_TDR_RECOVERY_CONTEXT ffffe000c2c404c0
   +0x000 Signature        : 0x52445476
   +0x008 pState           : 0xffffe000`c2b12a40 ??
   +0x010 TimeoutReason    : 9 ( TdrEngineTimeoutPromotedToAdapterReset )
   +0x018 Tick             : _ULARGE_INTEGER 0xb2
   +0x020 pAdapter         : 0xffffe000`c2a89010 DXGADAPTER
   +0x028 pVidSchContext   : (null) 
   +0x030 GPUTimeoutData   : _TDR_RECOVERY_GPU_DATA
   +0x048 CrtcTimeoutData  : _TDR_RECOVERY_CONTEXT::<unnamed-type-CrtcTimeoutData>
   +0x050 pProcessName     : (null) 
   +0x058 DbgOwnerTag      : 0xfffff801`6470c14c
   +0x060 PrivateDbgInfo   : _TDR_DEBUG_REPORT_PRIVATE_INFO
   +0xb00 pDbgReport       : 0xffffe000`c2c3f750 _WD_DEBUG_REPORT
   +0xb08 pDbgBuffer       : 0xffffc000`bd000000 Void
   +0xb10 DbgBufferSize    : 0x37515
   +0xb18 pDumpBufferHelper : (null) 
   +0xb20 pDbgInfoExtension : 0xffffc000`ba7e47a0 _DXGKARG_COLLECTDBGINFO_EXT
   +0xb28 pDbgBufferUpdatePrivateInfo : 0xffffc000`bd000140 Void
   +0xb30 ReferenceCount   : 0n1
   +0xb38 pResetCompletedEvent : (null) 

Parameter 2 enthält einen Zeiger auf das verantwortliche Gerätetreibermodul (z. B. das Besitzertag).

1: kd> ub fffff8016470c14c
nvlddmkm+0x84c132:
fffff801`6470c132 cc              int     3
fffff801`6470c133 cc              int     3
fffff801`6470c134 48ff254d2deaff  jmp     qword ptr [nvlddmkm+0x6eee88 (fffff801`645aee88)]
fffff801`6470c13b cc              int     3
fffff801`6470c13c 48ff252d2eeaff  jmp     qword ptr [nvlddmkm+0x6eef70 (fffff801`645aef70)]
fffff801`6470c143 cc              int     3
fffff801`6470c144 48ff257d2deaff  jmp     qword ptr [nvlddmkm+0x6eeec8 (fffff801`645aeec8)]
fffff801`6470c14b cc              int     3

Sie können die Stapelablaufverfolgung mit dem Befehl k, kb, kc, kd, kp, kP, kv (Display Stack Backtrace) untersuchen.

1: kd> k
 # Child-SP          RetAddr           Call Site
00 ffffd001`7d53d918 fffff801`61ba2b4c nt!KeBugCheckEx [d:\th\minkernel\ntos\ke\amd64\procstat.asm @ 122]
01 ffffd001`7d53d920 fffff801`61b8da0e dxgkrnl!TdrBugcheckOnTimeout+0xec [d:\th\windows\core\dxkernel\dxgkrnl\core\dxgtdr.cxx @ 2731]
02 ffffd001`7d53d960 fffff801`61b8dd7f dxgkrnl!ADAPTER_RENDER::Reset+0x15e [d:\th\windows\core\dxkernel\dxgkrnl\core\adapter.cxx @ 19443]
03 ffffd001`7d53d990 fffff801`61ba2385 dxgkrnl!DXGADAPTER::Reset+0x177 [d:\th\windows\core\dxkernel\dxgkrnl\core\adapter.cxx @ 19316]
04 ffffd001`7d53d9e0 fffff801`63c5fba7 dxgkrnl!TdrResetFromTimeout+0x15 [d:\th\windows\core\dxkernel\dxgkrnl\core\dxgtdr.cxx @ 2554]
05 ffffd001`7d53da10 fffff801`63c47e5d dxgmms1!VidSchiRecoverFromTDR+0x11b [d:\th\windows\core\dxkernel\dxgkrnl\dxgmms1\vidsch\vidscher.cxx @ 1055]
06 ffffd001`7d53dbc0 fffff801`aa55c698 dxgmms1!VidSchiWorkerThread+0x8d [d:\th\windows\core\dxkernel\dxgkrnl\dxgmms1\vidsch\vidschi.cxx @ 426]
07 ffffd001`7d53dc00 fffff801`aa5c9306 nt!PspSystemThreadStartup+0x58 [d:\th\minkernel\ntos\ps\psexec.c @ 6845]
08 ffffd001`7d53dc60 00000000`00000000 nt!KxStartSystemThread+0x16 [d:\th\minkernel\ntos\ke\amd64\threadbg.asm @ 80]

Sie können auch einen Haltepunkt im Code festlegen, der zu diesem Stoppcode führt, und versuchen, einen einzelnen Schritt vorwärts in den fehlerhaften Code zu gehen, wenn Sie den Stoppcode konsistent reproduzieren können.

Weitere Informationen finden Sie unter Analysieren von Absturzabbilddateien mithilfe von WinDbg.

Wenn Sie nicht mit dem Windows-Debugger für die Arbeit an diesem Problem ausgestattet sind, können Sie einige grundlegende Problembehandlungstechniken verwenden.

  • Überprüfen Sie das Systemprotokoll in der Ereignisanzeige auf andere Fehlermeldungen, die Ihnen helfen könnten, das Gerät oder den Treiber zu identifizieren, das bzw. der die Fehlerüberprüfung verursacht.

  • Wenn in der Fehlerüberprüfungsmeldung ein Treiber angegeben ist, deaktivieren Sie den Treiber oder erkundigen Sie sich beim Hersteller nach Treiberupdates.

  • Stellen Sie sicher, dass sämtliche grafikbezogene Software wie DirectX und OpenGL auf dem neuesten Stand sind und alle grafikintensiven Anwendungen (z. B. Spiele) vollständig gepatcht sind.

  • Bestätigen Sie, dass die neu installierte Hardware mit der installierten Windows-Version kompatibel ist. Informationen zur benötigten Hardware finden Sie beispielsweise unter Windows 10-Spezifikationen.

  • Führen Sie das Windows-Speicherdiagnosetool aus, um den Arbeitsspeicher zu testen. Geben Sie im Suchfeld der Systemsteuerung Speicher ein, und wählen Sie dann Speicherprobleme Ihres Computers diagnostizieren aus. Nachdem der Test ausgeführt wurde, verwenden Sie die Ereignisanzeige, um die Ergebnisse im Systemprotokoll anzuzeigen. Suchen Sie nach dem Eintrag MemoryDiagnostics-Results, um die Ergebnisse anzuzeigen.

  • Sie können versuchen, die vom Systemhersteller bereitgestellte Hardwarediagnose auszuführen.

  • Verwenden des abgesicherten Modus

    Erwägen Sie die Verwendung des abgesicherten Modus, um dieses Problem zu isolieren. Die Verwendung des abgesicherten Modus lädt nur die minimal erforderlichen Treiber und Systemdienste während des Windows-Starts.

    1. Um in den abgesicherten Modus zu wechseln, navigieren Sie zu Update" und "Sicherheit in den Einstellungen.
    2. Wählen Sie Wiederherstellung>-Erweiterter Start aus, um mit dem Wartungsmodus zu starten.
    3. Wählen Sie im resultierenden Menü Problembehandlung>-Erweiterte Optionen >Starteinstellungen>Neustart aus.
    4. Wählen Sie nach dem Neustart von Windows auf dem Bildschirm Starteinstellungen die Option 4, 5 oder 6 aus, um im abgesicherten Modus zu starten.

    Der abgesicherte Modus kann durch Drücken einer Funktionstaste beim Start verfügbar sein, z. B. F8. Informationen zu den spezifischen Startoptionen finden Sie in den Informationen des Herstellers.

Allgemeine Informationen zur Fehlerbehebung finden Sie unter Analysieren von Fehlerüberprüfungs-Bluescreen-Daten.

Hinweise

Informationen zu den Anforderungen, die Hardwaregeräte erfüllen müssen, wenn sie TDR implementieren, finden Sie in der Dokumentation zum Windows Hardware Lab Kit . Beispielsweise TDR2 – Standard Two Device Test Graphics.

Siehe auch

Bug Check Code Reference (Referenz zu Fehlerüberprüfungscodes)