Comprobación de errores 0xEA: THREAD_STUCK_IN_DEVICE_DRIVER
La comprobación de errores de THREAD_STUCK_IN_DEVICE_DRIVER tiene un valor de 0x000000EA. Esto indica que un subproceso de un controlador de dispositivo está girando sin fin.
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 THREAD_STUCK_IN_DEVICE_DRIVER
Parámetro | Descripción |
---|---|
1 |
Puntero al objeto de subproceso bloqueado |
2 |
Puntero al objeto DEFERRED_WATCHDOG |
3 |
Puntero al nombre del controlador infractor. |
4 |
En el depurador de kernel: Número de veces que se alcanzó la comprobación de errores "interceptado" 0xEA En la pantalla azul: 1 |
Causa
Un controlador de dispositivo está girando en un bucle infinito, lo más probable es que espere a que el hardware esté inactivo.
Esto suele indicar un problema con el propio hardware o con el controlador de dispositivo que programa el hardware incorrectamente. Con frecuencia, este es el resultado de una tarjeta de vídeo incorrecta o un controlador de pantalla incorrecto.
Resolución
La extensión !analyze debug muestra información sobre la comprobación de errores y puede ser útil para determinar la causa principal.
Use el comando .thread (Establecer contexto de registro) junto con el parámetro 1. A continuación, use kb (Display Stack Backtrace) para buscar la ubicación donde está bloqueado el subproceso.
Si el depurador de kernel ya está conectado y en ejecución cuando Windows detecta una condición de tiempo de espera. A continuación, se llamará a DbgBreakPoint en lugar de KeBugCheckEx. Se imprimirá un mensaje detallado en el depurador. Para obtener más información, consulte Envío de salida a la depuración.
Este mensaje incluirá lo que habría sido los parámetros de comprobación de errores. Dado que no se emitió ninguna comprobación de errores real, el comando .bugcheck (Mostrar datos de comprobación de errores) no será útil. Los cuatro parámetros también se pueden recuperar de las variables globales de Watchdog mediante dd watchdog!g_WdBugCheckData L5" en un sistema de 32 bits o dq watchdog!g_WdBugCheckData L5" en un sistema de 64 bits.
La depuración de este error de forma interactiva, como esta, le permitirá encontrar un subproceso infractor, establecer puntos de interrupción en él y, a continuación, usar g (Go) para volver al código giratorio para depurarlo más.
En las máquinas multiprocesador (compilación del sistema operativo 3790 o versiones anteriores), puede agotar el tiempo de espera si el subproceso giratorio se interrumpe por una interrupción de hardware y se ejecuta una rutina ISR o DPC en el momento de la comprobación de errores. Esto se debe a que el elemento de trabajo del tiempo de espera se puede entregar y controlar en la segunda CPU y al mismo tiempo. Si esto ocurre, debe profundizar en la pila del subproceso infractor para determinar el código giratorio que provocó que se produjera el tiempo de espera. Use el comando dds (Mostrar palabras y símbolos) para hacerlo.