Partager via


Bug Check 0x116: VIDEO_TDR_FAILURE

Le bug check VIDEO_TDR_FAILURE a une valeur de 0x00000116. Cette erreur d’arrêt indique qu’une tentative de réinitialisation du pilote d’affichage et de récupération après un dépassement de délai a échoué.

Important

Cet article s’adresse aux programmeurs. Si vous êtes un client qui a reçu un code d’erreur écran bleu en utilisant votre ordinateur, veuillez consulter la section Dépanner les erreurs d’écran bleu.

Paramètres VIDEO_TDR_FAILURE

Paramètre Description
1 Le pointeur vers le contexte de récupération TDR interne, si disponible.
2 Un pointeur dans le module du pilote de périphérique responsable (par exemple, l’étiquette du propriétaire).
3 Le code d’erreur de la dernière opération échouée, si disponible.
4 Données contextuelles internes dépendantes, si disponibles.

Cause

Un problème de stabilité commun en graphisme se produit lorsque le système semble complètement gelé ou bloqué lors du traitement d’une commande ou d’une opération de l’utilisateur final. Généralement, le GPU est occupé à traiter des opérations graphiques intensives, typiquement pendant le jeu. Aucune mise à jour de l’écran ne se produit, et les utilisateurs supposent que leur système est gelé. Les utilisateurs attendent généralement quelques secondes, puis redémarrent le système en appuyant sur le bouton d’alimentation. Windows essaie de détecter ces situations de blocage problématiques et de récupérer dynamiquement un bureau réactif.

Ce processus de détection et de récupération est connu sous le nom de Timeout Detection and Recovery (TDR). Le délai d’expiration par défaut est de 2 secondes. Dans le processus TDR pour les cartes vidéo, le planificateur GPU du système d’exploitation appelle la fonction DxgkDdiResetFromTimeout du pilote miniport d’affichage pour réinitialiser le pilote et le GPU.

Pendant ce processus, le système d’exploitation indique au pilote de ne pas accéder au matériel ou à la mémoire et lui donne un court délai pour terminer les threads en cours d’exécution. Si les threads ne se terminent pas dans le délai imparti, le système génère une erreur d’arrêt avec 0x116 VIDEO_TDR_FAILURE. Pour plus d’informations, veuillez consulter la section Synchronisation des threads et TDR.

Le système peut également générer une erreur d’arrêt avec VIDEO_TDR_FAILURE si plusieurs événements TDR se produisent dans un court laps de temps. La valeur par défaut est plus de cinq TDR en une minute.

Si le processus de récupération réussit, un message sera affiché, indiquant que le « pilote d’affichage a cessé de répondre et a été récupéré ».

Pour plus d’informations, veuillez consulter la section Détection et récupération de dépassement de délai (TDR), Clés de registre TDR, et Modifications de TDR dans Windows 8 et versions ultérieures.

Résolution

Le GPU prend plus de temps que permis pour afficher les graphiques sur votre moniteur. Ce comportement peut être dû à différentes raisons :

  • Vous devrez peut-être installer les dernières mises à jour pour votre pilote d’affichage afin qu’il prenne correctement en charge le processus TDR.
  • Problèmes matériels affectant la capacité de la carte vidéo à fonctionner correctement, y compris :
    • Des composants surcadencés, tels que la carte mère
    • Compatibilité et paramètres incorrects des composants (en particulier la configuration et les timings de la mémoire)
    • Refroidissement insuffisant du système
    • Puissance du système insuffisante
    • Pièces défectueuses (modules de mémoire, cartes mères, etc.)
  • Les effets visuels ou trop de programmes exécutés en arrière-plan peuvent ralentir votre PC, empêchant ainsi la carte vidéo de répondre comme nécessaire.

L'extension de débogage !analyze affiche des informations sur la vérification d'un bogue et peut être utile pour déterminer la cause racine.

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.

...

Le nom du module défaillant est également affiché.

MODULE_NAME: nvlddmkm

IMAGE_NAME:  nvlddmkm.sys

Vous pouvez utiliser la commande lm (Liste des modules chargés) pour afficher des informations sur le pilote défaillant, y compris l’horodatage.

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

Le paramètre 1 contient un pointeur vers le TDR_RECOVERY_CONTEXT. Comme indiqué dans la sortie !analyze, si vous avez des symboles pour le code associé, vous pouvez utiliser la commande dt pour afficher ces données.

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) 

Le paramètre 2 contient un pointeur dans le module du pilote de périphérique responsable (par exemple, l’étiquette du propriétaire).

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

Vous pouvez examiner la trace d’appels en utilisant la commande k, kb, kc, kd, kp, kP, kv (Afficher la trace de la pile).

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]

Vous pouvez également définir un point d’arrêt dans le code précédant ce code d’arrêt et essayer d’avancer pas à pas dans le code défaillant, si vous pouvez reproduire systématiquement le code d’arrêt.

Pour plus d’informations, veuillez consulter la section Analyser les fichiers de vidage sur incident en utilisant WinDbg.

Si vous n’êtes pas équipé pour utiliser le débogueur Windows pour travailler sur ce problème, vous pouvez utiliser certaines techniques de dépannage de base.

  • Vérifiez le journal système dans l’Observateur d’événements pour d’autres messages d’erreur qui pourraient aider à identifier le périphérique ou le pilote à l’origine de cette erreur d’arrêt.

  • Si un pilote est identifié dans le message de bug check, désactivez le pilote ou vérifiez auprès du fabricant les mises à jour du pilote.

  • Vérifiez que tous les logiciels liés aux graphismes tels que DirectX et OpenGL sont à jour, et que toutes les applications intensives en graphismes (comme les jeux) sont entièrement corrigées.

  • Assurez-vous que tout nouveau matériel installé est compatible avec la version de Windows installée. Par exemple, vous pouvez obtenir des informations sur le matériel requis sur les Spécifications de Windows 10.

  • Exécutez l’outil de diagnostic de la mémoire Windows pour tester la mémoire. Dans la boîte de recherche du panneau de configuration, saisissez Mémoire, puis sélectionnez Diagnostiquer les problèmes de mémoire de votre ordinateur.‌ Après l’exécution du test, utilisez l’Observateur d’événements pour consulter les résultats dans le journal Système. Recherchez l’entrée MemoryDiagnostics-Results pour afficher les résultats.

  • Vous pouvez essayer d’exécuter les diagnostics matériels fournis par le fabricant du système.

  • Utilisez le Mode sans échec

    Envisagez d’utiliser le mode sans échec pour aider à isoler ce problème. L’utilisation du mode sans échec charge uniquement les pilotes et services système minimum requis pendant le démarrage de Windows.

    1. Pour entrer en Mode sans échec, allez dans Mise à jour et sécurité dans les Paramètres.
    2. Sélectionnez Récupération>Démarrage avancé pour démarrer en mode maintenance.
    3. Dans le menu résultant, choisissez Dépannage>Options avancées>Paramètres de démarrage>Redémarrer.
    4. Après le redémarrage de Windows sur l’écran Paramètres de démarrage, sélectionnez l’option 4, 5 ou 6 pour démarrer en mode sans échec.

    Le mode sans échec peut être disponible en appuyant sur une touche de fonction au démarrage, par exemple F8. Consultez les informations du fabricant pour des options de démarrage spécifiques.

Pour des informations générales de dépannage, veuillez consulter la section Analyser les données d’erreur d’arrêt d’écran bleu.

Notes

Pour obtenir des informations sur les exigences que les périphériques matériels doivent respecter lorsqu’ils implémentent TDR, veuillez consulter la documentation du Windows Hardware Lab Kit. Par exemple, TDR2 : Test standard de deux périphériques graphiques.

Voir aussi

Référence du Code de vérification de bogue