Condividi tramite


0x116 di controllo dei bug: VIDEO_TDR_FAILURE

Il controllo dei bug VIDEO_TDR_FAILURE ha un valore pari a 0x00000116. Questo controllo di bug indica che un tentativo di reimpostare il driver di visualizzazione e il ripristino da un timeout non è riuscito.

Importante

Questo articolo è destinato ai programmatori. Se si è un cliente che ha ricevuto un codice di errore della schermata blu durante l'uso del computer, vedere Risolvere gli errori della schermata blu.

parametri VIDEO_TDR_FAILURE

Parametro Descrizione
1 Puntatore al contesto di ripristino TDR interno, se disponibile.
2 Puntatore al modulo driver di dispositivo responsabile(ad esempio, il tag proprietario).
3 Codice di errore dell'ultima operazione non riuscita, se disponibile.
4 Dati dipendenti dal contesto interno, se disponibili.

Causa

Un problema di stabilità comune nella grafica si verifica quando il sistema appare completamente bloccato o bloccato durante l'elaborazione di un comando o un'operazione dell'utente finale. In genere la GPU è occupata nell'elaborazione di operazioni grafiche a elevato utilizzo, in genere durante il gioco. Non si verificano aggiornamenti dello schermo e gli utenti presuppongono che il sistema sia bloccato. Gli utenti in genere attendono alcuni secondi e quindi riavviano il sistema premendo il pulsante di alimentazione. Windows tenta di rilevare queste situazioni di blocco problematiche e ripristinare dinamicamente un desktop reattivo.

Questo processo di rilevamento e ripristino è noto come Timeout Detection and Recovery (TDR). Il timeout predefinito è 2 secondi. Nel processo TDR per le schede video, l'utilità di pianificazione GPU del sistema operativo chiama la funzione DxgkDdiResetFromTimeout del driver miniport di visualizzazione per reinizializzare il driver e reimpostare la GPU.

Durante questo processo, il sistema operativo indica al driver di non accedere all'hardware o alla memoria e concede un breve tempo per il completamento dei thread attualmente in esecuzione. Se i thread non vengono completati entro il timeout, il bug di sistema verifica con 0x116 VIDEO_TDR_FAILURE. Per altre informazioni, vedere Sincronizzazione dei thread e TDR.

Il sistema può anche controllare i bug con VIDEO_TDR_FAILURE se si verificano più eventi TDR in un breve periodo di tempo. L'importo predefinito è maggiore di cinque TDR in un minuto.

Se il processo di ripristino ha esito positivo, verrà visualizzato un messaggio che indica che il driver di visualizzazione ha smesso di rispondere ed è stato ripristinato.

Per altre informazioni, vedere Rilevamento e ripristino di timeout (TDR), chiavi del Registro di sistema TDR e modifiche TDR in Windows 8 e versioni successive.

Risoluzione

La GPU richiede più tempo rispetto al tempo consentito per visualizzare la grafica nel monitor. Questo comportamento può verificarsi per uno o più dei motivi seguenti:

  • Potrebbe essere necessario installare gli aggiornamenti più recenti per il driver di visualizzazione, in modo che supporti correttamente il processo TDR.
  • Problemi hardware che influiscono sulla capacità della scheda video di funzionare correttamente, tra cui:
    • Componenti over-clock, ad esempio la scheda madre
    • Compatibilità e impostazioni dei componenti non corretti (in particolare la configurazione e gli intervalli di memoria)
    • Raffreddamento del sistema insufficiente
    • Alimentazione del sistema insufficiente
    • Parti difettose (moduli di memoria, schede madri e così via)
  • Gli effetti visivi o troppi programmi in esecuzione in background potrebbero rallentare il PC, quindi la scheda video non può rispondere in base alle esigenze.

L'estensione di debug !analyze visualizza informazioni sul controllo dei bug e può essere utile per determinare la causa radice.

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.

...

Viene visualizzato anche il nome del modulo di errore.

MODULE_NAME: nvlddmkm

IMAGE_NAME:  nvlddmkm.sys

È possibile usare il comando lm (Elenca moduli caricati) per visualizzare informazioni sul driver di errore, incluso il timestamp.

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

Il parametro 1 contiene un puntatore al TDR_RECOVERY_CONTEXT. Come illustrato nell'output !analyze, se sono presenti simboli per il codice associato, è possibile usare il dt comando per visualizzare questi dati.

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) 

Il parametro 2 contiene un puntatore nel modulo driver di dispositivo responsabile(ad esempio, il tag proprietario).

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

È possibile esaminare l'analisi dello stack usando il comando k, kb, kc, kd, kp, kP, kv (Display Stack Backtrace).

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]

È anche possibile impostare un punto di interruzione nel codice che conduce a questo codice di arresto e tentare di eseguire un singolo passaggio avanti nel codice di errore, se è possibile riprodurre in modo coerente il codice di arresto.

Per altre informazioni, vedere Analizzare i file di dump di arresto anomalo del sistema tramite WinDbg.

Se non si è dotati di usare il debugger Windows per risolvere questo problema, è possibile usare alcune tecniche di risoluzione dei problemi di base.

  • Controllare il log di sistema Visualizzatore eventi per altri messaggi di errore che potrebbero aiutare a identificare il dispositivo o il driver che causa questo controllo del bug.

  • Se un driver viene identificato nel messaggio di controllo dei bug, disabilitare il driver o rivolgersi al produttore per verificare la presenza di aggiornamenti dei driver.

  • Verificare che tutti i software correlati alla grafica, ad esempio DirectX e OpenGL, siano aggiornati e che tutte le applicazioni a elevato utilizzo di grafica (ad esempio i giochi) siano completamente patch.

  • Verificare che qualsiasi nuovo hardware installato sia compatibile con la versione installata di Windows. Ad esempio, puoi ottenere informazioni sull'hardware necessario in Specifiche di Windows 10.

  • Eseguire lo strumento Diagnostica memoria di Windows per testare la memoria. Nella casella di ricerca del pannello di controllo immettere Memoria e quindi selezionare Diagnosi dei problemi di memoria del computer. Dopo l'esecuzione del test, usare il Visualizzatore eventi per visualizzare i risultati nel log di sistema. Cercare la voce MemoryDiagnostics-Results per visualizzare i risultati.

  • È possibile provare a eseguire la diagnostica hardware fornita dal produttore del sistema.

  • Usare la modalità provvisoria

    Prendere in considerazione l'uso della modalità provvisoria per isolare questo problema. L'uso della modalità provvisoria carica solo i driver e i servizi di sistema minimi necessari durante l'avvio di Windows.

    1. Per accedere alla modalità provvisoria, passare a Aggiorna e sicurezza in Impostazioni.
    2. Selezionare Recovery Advanced startup (Avvio avanzato ripristino>) per avviare la modalità di manutenzione.
    3. Nel menu risultante scegliere Risolvere i problemi>delle impostazioni>di avvio opzioni>avanzate Riavvia.
    4. Dopo il riavvio di Windows nella schermata Impostazioni di avvio, selezionare l'opzione 4, 5 o 6 per l'avvio in modalità provvisoria.

    La modalità provvisoria può essere disponibile premendo un tasto funzione all'avvio, ad esempio F8. Fare riferimento alle informazioni del produttore per opzioni di avvio specifiche.

Per informazioni generali sulla risoluzione dei problemi, vedere Analizzare i dati della schermata blu di controllo dei bug.

Osservazioni:

Per informazioni sui requisiti che i dispositivi hardware devono soddisfare quando implementano TDR, vedere la documentazione di Windows Hardware Lab Kit . Ad esempio, TDR2 - Standard Two Device Test Graphics.For example, TDR2 - Standard Two Device Test Graphics.

Vedi anche

Riferimento al codice del controllo errori