Comprobación de errores 0x116: VIDEO_TDR_FAILURE

La comprobación de errores VIDEO_TDR_FAILURE tiene un valor de 0x00000116. Esta comprobación de errores indica que se ha producido un error al intentar restablecer el controlador de pantalla y recuperarse de un tiempo de espera.

Importante

Este artículo es para programadores. Si es un cliente que ha recibido un código de error de pantalla azul mientras usa el equipo, consulte Solución de errores de pantalla azul.

parámetros de VIDEO_TDR_FAILURE

Parámetro Descripción
1 Puntero al contexto de recuperación de TDR interno, si está disponible.
2 Puntero al módulo de controlador de dispositivo responsable (por ejemplo, la etiqueta de propietario).
3 Código de error de la última operación con error, si está disponible.
4 Datos dependientes del contexto interno, si están disponibles.

Causa

Un problema de estabilidad común en los gráficos se produce cuando el sistema aparece completamente inmovilizado o bloqueado al procesar un comando o una operación del usuario final. Normalmente, la GPU está ocupada procesando operaciones gráficas intensivas, normalmente durante el juego. No se producen actualizaciones de pantalla y los usuarios asumen que su sistema está inmovilizado. Los usuarios suelen esperar unos segundos y, a continuación, reiniciar el sistema presionando el botón de encendido. Windows intenta detectar estas situaciones de bloqueo problemáticas y recuperar dinámicamente un escritorio con capacidad de respuesta.

Este proceso de detección y recuperación se conoce como detección y recuperación de tiempo de espera (TDR). El tiempo de espera predeterminado es de 2 segundos. En el proceso de TDR para tarjetas de vídeo, el programador de GPU del sistema operativo llama a la función DxgkDdiResetFromTimeout del controlador de miniporte de pantalla para reinicializar el controlador y restablecer la GPU.

Durante este proceso, el sistema operativo indica al controlador que no acceda al hardware o la memoria y le da un breve tiempo para que se completen los subprocesos que se están ejecutando actualmente. Si los subprocesos no se completan dentro del tiempo de espera, el error del sistema comprueba con 0x116 VIDEO_TDR_FAILURE. Para obtener más información, consulte Sincronización de subprocesos y TDR.

El sistema también puede comprobar con VIDEO_TDR_FAILURE si se producen varios eventos de TDR en un breve período de tiempo. La cantidad predeterminada es de más de cinco TDR en un minuto.

Si el proceso de recuperación se realiza correctamente, se mostrará un mensaje que indica que el controlador de pantalla dejó de responder y se recuperó.

Para obtener más información, consulte Detección y recuperación de tiempo de espera (TDR),Claves del Registro de TDR y Cambios de TDR en Windows 8 y versiones posteriores.

Resolución

La GPU tarda más tiempo de lo permitido para mostrar gráficos en el monitor. Este comportamiento puede producirse por uno o varios de los siguientes motivos:

  • Es posible que tenga que instalar las actualizaciones más recientes para el controlador de pantalla, por lo que admite correctamente el proceso de TDR.
  • Problemas de hardware que afectan a la capacidad de la tarjeta de vídeo para funcionar correctamente, entre los que se incluyen:
    • Componentes a lo largo del reloj, como la placa base
    • Compatibilidad y configuración incorrectas de los componentes (especialmente la configuración y los intervalos de memoria)
    • Refrigeración insuficiente del sistema
    • Alimentación insuficiente del sistema
    • Piezas defectuosas (módulos de memoria, placas base, etc.)
  • Los efectos visuales, o demasiados programas que se ejecutan en segundo plano pueden ralentizar el equipo, por lo que la tarjeta de vídeo no puede responder según sea necesario.

La extensión de depuración !analyze muestra información sobre la comprobación de errores y puede ser útil para determinar la causa principal.

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.

...

También se muestra el nombre del módulo con errores.

MODULE_NAME: nvlddmkm

IMAGE_NAME:  nvlddmkm.sys

Puede usar el comando lm (Enumerar módulos cargados) para mostrar información sobre el controlador con errores, incluida la marca de tiempo.

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

El parámetro 1 contiene un puntero al TDR_RECOVERY_CONTEXT. Como se muestra en la salida !analyze, si tiene símbolos para el código asociado, puede usar el dt comando para mostrar estos datos.

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) 

El parámetro 2 contiene un puntero al módulo de controlador de dispositivo responsable (por ejemplo, la etiqueta de propietario).

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

Es posible que desee examinar el seguimiento de la pila mediante el 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]

También puede establecer un punto de interrupción en el código que conduce a este código de detención e intentar avanzar un paso hacia delante en el código de error, si puede reproducir de forma coherente el código de detención.

Para obtener más información, consulte Análisis de archivos de volcado de memoria mediante WinDbg.

Si no está equipado para usar el depurador de Windows para trabajar con este problema, puede usar algunas técnicas básicas de solución de problemas.

  • Compruebe el inicio de sesión del sistema Visor de eventos para ver otros mensajes de error que puedan ayudar a identificar el dispositivo o el controlador que está causando esta comprobación de errores.

  • Si un controlador está identificado en el mensaje de comprobación de errores, deshabilita el controlador o ponte en contacto con el fabricante para obtener actualizaciones de controladores.

  • Compruebe que todo el software relacionado con gráficos, como DirectX y OpenGL, estén actualizados y que todas las aplicaciones de uso intensivo de gráficos (como juegos) estén totalmente revisadas.

  • Confirme que cualquier nuevo hardware instalado sea compatible con la versión instalada de Windows. Por ejemplo, puede obtener información sobre el hardware necesario en Windows 10 Especificaciones.

  • Ejecute la herramienta Diagnóstico de memoria de Windows para probar la memoria. En el cuadro de búsqueda del panel de control, escriba Memoria y, a continuación, seleccione Diagnosticar problemas de memoria del equipo. Una vez ejecutada la prueba, use visor de eventos para ver los resultados en el registro del sistema. Busque la entrada MemoryDiagnostics-Results para ver los resultados.

  • Puede intentar ejecutar los diagnósticos del hardware proporcionados por el fabricante del sistema.

  • Uso del modo seguro

    Considere la posibilidad de usar el modo seguro para ayudar a aislar este problema. El uso del modo seguro solo carga los controladores y servicios del sistema mínimos necesarios durante el inicio de Windows.

    1. Para entrar en modo seguro, vaya a Actualizar y seguridad en Configuración.
    2. Seleccione Inicioavanzado de recuperación> para arrancar en modo de mantenimiento.
    3. En el menú resultante, elija Solucionar problemas de>configuración> deinicio opciones >avanzadasReiniciar.
    4. Después de que Windows se reinicie en la pantalla Configuración de inicio , seleccione la opción 4, 5 o 6 para arrancar en modo seguro.

    El modo seguro puede estar disponible presionando una tecla de función en el arranque, por ejemplo F8. Consulte la información del fabricante para obtener opciones de inicio específicas.

Para obtener información general sobre la solución de problemas, consulte Datos de pantalla azul.

Comentarios

Para obtener información sobre los requisitos que deben cumplir los dispositivos de hardware al implementar TDR, consulte la documentación del Kit de laboratorio de hardware de Windows . Por ejemplo, TDR2: gráficos de prueba estándar de dos dispositivos.

Consulte también

Bug Check Code Reference (Referencia de código de comprobación de errores)