Controllo bug 0x117: VIDEO_TDR_TIMEOUT_DETECTED

Il dump live VIDEO_TDR_TIMEOUT_DETECTED ha un valore di 0x00000117. Ciò indica che il driver di visualizzazione non è riuscito a rispondere in modo tempestivo.

Questo codice non può mai essere usato per un controllo di bug reale. Viene usato per identificare i dump in tempo reale.

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_TIMEOUT_DETECTED

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

Chiave di bucket specifica del driver secondario.

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 intensive, 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.

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 Timeout Detection and Recovery (TDR), Chiavi del Registro di sistema TDR e modifiche TDR in Windows 8 che si trovano in Timeout Detection and Recovery (TDR)

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 influisce 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 in modo che la scheda video non possa 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.

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

VIDEO_TDR_TIMEOUT_DETECTED (117)
The display driver failed to respond in timely fashion.
(This code can never be used for a real bug check; it is used to identify live dumps.)
Arguments:
Arg1: 8975d500, Optional pointer to internal TDR recovery context (TDR_RECOVERY_CONTEXT).
Arg2: 9a02381e, The pointer into responsible device driver module (e.g owner tag).
Arg3: 00000000, The secondary driver specific bucketing key.
Arg4: 00000000, Optional internal context dependent data.

...

Verrà visualizzato anche il nome del modulo di errore

MODULE_NAME: atikmpag

IMAGE_NAME:  atikmpag.sys

È possibile usare il comando lmv per visualizzare informazioni sul driver di errore, incluso il timestamp.

3: kd> lmvm atikmpag
Browse full module list
start    end        module name
9a01a000 9a09a000   atikmpag T (no symbols)           
    Loaded symbol image file: atikmpag.sys
    Image path: atikmpag.sys
    Image name: atikmpag.sys
    Browse all global symbols  functions  data
    Timestamp:        Fri Dec  6 12:20:32 2013 (52A23190)
    CheckSum:         0007E58A
    ImageSize:        00080000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4

Il parametro 1 contiene un puntatore al TDR_RECOVERY_CONTEXT.

3: kd> dt dxgkrnl!_TDR_RECOVERY_CONTEXT fffffa8010041010
   +0x000 Signature        : ??
   +0x004 pState           : ???? 
   +0x008 TimeoutReason    : ??
   +0x010 Tick             : _ULARGE_INTEGER
   +0x018 pAdapter         : ???? 
   +0x01c pVidSchContext   : ???? 
   +0x020 GPUTimeoutData   : _TDR_RECOVERY_GPU_DATA
   +0x038 CrtcTimeoutData  : _TDR_RECOVERY_CONTEXT::<unnamed-type-CrtcTimeoutData>
   +0x040 DbgOwnerTag      : ??
   +0x048 PrivateDbgInfo   : _TDR_DEBUG_REPORT_PRIVATE_INFO
   +0xae0 pDbgReport       : ???? 
   +0xae4 pDbgBuffer       : ???? 
   +0xae8 DbgBufferSize    : ??
   +0xaec pDumpBufferHelper : ???? 
   +0xaf0 pDbgInfoExtension : ???? 
   +0xaf4 pDbgBufferUpdatePrivateInfo : ???? 
   +0xaf8 ReferenceCount   : ??
Memory read error 10041b08

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

BUGCHECK_P2: ffffffff9a02381e

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

3: kd> k
 # ChildEBP RetAddr  
00 81d9ace0 976e605e dxgkrnl!TdrUpdateDbgReport+0x93 [d:\blue_gdr\windows\core\dxkernel\dxgkrnl\core\dxgtdr.cxx @ 944]
01 81d9acfc 976ddead dxgkrnl!TdrCollectDbgInfoStage2+0x195 [d:\blue_gdr\windows\core\dxkernel\dxgkrnl\core\dxgtdr.cxx @ 1759]
02 81d9ad24 976e664f dxgkrnl!DXGADAPTER::Reset+0x23f [d:\blue_gdr\windows\core\dxkernel\dxgkrnl\core\adapter.cxx @ 14972]
03 81d9ad3c 977be9e0 dxgkrnl!TdrResetFromTimeout+0x16 [d:\blue_gdr\windows\core\dxkernel\dxgkrnl\core\dxgtdr.cxx @ 2465]
04 81d9ad50 977b7518 dxgmms1!VidSchiRecoverFromTDR+0x13 [d:\blue_gdr\windows\core\dxkernel\dxgkrnl\dxgmms1\vidsch\vidscher.cxx @ 1018]
05 (Inline) -------- dxgmms1!VidSchiRun_PriorityTable+0xfa71
06 81d9ad70 812c01d4 dxgmms1!VidSchiWorkerThread+0xfaf2 [d:\blue_gdr\windows\core\dxkernel\dxgkrnl\dxgmms1\vidsch\vidschi.cxx @ 424]
07 81d9adb0 81325fb1 nt!PspSystemThreadStartup+0x58 [d:\blue_gdr\minkernel\ntos\ps\psexec.c @ 5884]
08 81d9adbc 00000000 nt!KiThreadStartup+0x15 [d:\blue_gdr\minkernel\ntos\ke\i386\threadbg.asm @ 81]

È 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 gli argomenti seguenti:

Analisi del dump di arresto anomalo del sistema usando i debugger di Windows (WinDbg)

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

  • Controllare l'accesso di sistema Visualizzatore eventi per ulteriori 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.

  • Uso della 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. Per attivare la modalità provvisoria, usare Update and Security in Settings (Aggiorna e sicurezza ) in Settings (Impostazioni). Selezionare Ripristino-Avvio> avanzato per avviare la modalità di manutenzione. Nel menu risultante scegliere Risoluzione dei problemi-Opzioni> avanzate ->Impostazioni di avvio ->Riavvia. 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.

  • Eseguire lo strumento Diagnostica memoria windows per testare la memoria. Nella casella di ricerca del pannello di controllo digitare Memoria e quindi selezionare Diagnostica 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.

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

Osservazioni:

Requisiti di certificazione hardware

Per informazioni sui requisiti che i dispositivi hardware devono soddisfare quando implementano il TDR, vedere la documentazione di WHCK in Device.Graphics... TDRResiliency.