Comprobación de errores 0x133: DPC_WATCHDOG_VIOLATION
La comprobación de errores DPC_WATCHDOG_VIOLATION tiene un valor de 0x00000133. Esta comprobación de errores indica que el guardián de DPC se ejecutó, ya sea porque detectó una única llamada de procedimiento diferido de larga duración (DPC) o porque el sistema pasó un tiempo prolongado en un nivel de solicitud de interrupción (IRQL) de DISPATCH_LEVEL o superior.
El valor del parámetro 1 indica si un único DPC superó un tiempo de espera o si el sistema pasó un período prolongado de tiempo en IRQL DISPATCH_LEVEL o superior. Los DPC no deben ejecutar más de 100 microsegundos e ISR no deben ejecutarse más de 25 microsegundos, pero los valores de tiempo de espera reales en el sistema se establecen mucho más altos.
Para obtener más información sobre los DPC, consulte Introduction to DPC Objects y Windows Internals 7th Edition Part 1 de Pavel Yosifovich, Mark E. Russinovich, David A. Solomon y Alex Ionescu.
Importante
Este artículo va dirigido a 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 DPC_WATCHDOG_VIOLATION
El parámetro 1 indica el tipo de infracción. El significado de los demás parámetros depende del valor del Parámetro 1.
Parámetro 1 | Parámetro 2 | Parámetro 3 | Parámetro 4 | Causa del error |
---|---|---|---|---|
0 | Recuento de tiempo de DPC (en tics) | Asignación de tiempo DPC (en tics). | conversión a nt! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, que contiene información adicional sobre este único tiempo de espera de DPC | Un único DPC o ISR superó su asignación de tiempo. Normalmente, el componente infractor se puede identificar con un seguimiento de pila. |
1 | El período de guardián | conversión a nt! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, que contiene información adicional sobre este único tiempo de espera de DPC | Reserved | El sistema pasó de forma acumulativa un período prolongado de tiempo en IRQL DISPATCH_LEVEL o superior. Normalmente, el componente infractor se puede identificar con un seguimiento de pila. |
Causa
Para determinar la causa se requiere el depurador de Windows, experiencia en programación y acceso al código fuente del módulo que falla.
Para obtener más información, consulte los siguientes temas:
Análisis de volcado de memoria mediante los depuradores de Windows (WinDbg)
Análisis de un archivo de volcado en modo kernel con WinDbg
Uso de la extensión !analyze y !analyze
Para obtener más información sobre Windows DPC, consulte Windows Internals 7th Edition Part 1 de Pavel Yosifovich, Mark E. Russinovich, David A. Solomon y Alex Ionescu.
Ejemplo 1
La extensión de depuración !analyze indica información sobre la comprobación de errores y puede resultar útil para determinar la causa principal.
Parámetro 1 = 0
En este ejemplo, el recuento de tics de 501 supera la asignación de tiempo de DPC de 500. El nombre de la imagen indica que este código se estaba ejecutando cuando se produjo la comprobación de errores.
0: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
DPC_WATCHDOG_VIOLATION (133)
The DPC watchdog detected a prolonged run time at an IRQL of DISPATCH_LEVEL
or above.
Arguments:
Arg1: 0000000000000000, A single DPC or ISR exceeded its time allotment. The offending
component can usually be identified with a stack trace.
Arg2: 0000000000000501, The DPC time count (in ticks).
Arg3: 0000000000000500, The DPC time allotment (in ticks).
Arg4: 0000000000000000
...
IMAGE_NAME: BthA2DP.sys
...
Use los siguientes comandos del depurador para recopilar más información sobre los errores con un parámetro 0:
k (Mostrar seguimiento de pila) para ver qué código se estaba ejecutando cuando se produjo el código de detención.
Es posible que quiera usar el comando u, ub, uu (Desensamblar) para profundizar en los detalles del código que se estaba ejecutando.
La extensión !pcr muestra el estado actual de la región de control del procesador (PCR) en un procesador específico. En la salida será la dirección del Prcb.
0: kd> !pcr
KPCR for Processor 0 at fffff8035f5a4000:
Major 1 Minor 1
NtTib.ExceptionList: fffff80368e77fb0
NtTib.StackBase: fffff80368e76000
NtTib.StackLimit: 0000000000000000
NtTib.SubSystemTib: fffff8035f5a4000
NtTib.Version: 000000005f5a4180
NtTib.UserPointer: fffff8035f5a4870
NtTib.SelfTib: 000000b6d3086000
SelfPcr: 0000000000000000
Prcb: fffff8035f5a4180
Irql: 0000000000000000
IRR: 0000000000000000
IDR: 0000000000000000
InterruptMode: 0000000000000000
IDT: 0000000000000000
GDT: 0000000000000000
TSS: 0000000000000000
CurrentThread: fffff80364926a00
NextThread: ffffe40b77c12040
IdleThread: fffff80364926a00
Puede usar el comando dt (Tipo de visualización) para mostrar información adicional sobre los DPC y el guardián de DPC. Para la dirección, use el Prcb enumerado en la salida !pcr:
dt nt!_KPRCB fffff80309974180 Dpc*
0: kd> dt nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK fffff803648fa320
+0x000 Signature : 0xaebecede
+0x004 Revision : 1
+0x006 Size : 0x10
+0x008 DpcWatchdogProfileOffset : 0x84a8
+0x00c DpcWatchdogProfileLength : 0x8200
Ejemplo 2
Parámetro 1 = 1
Para el parámetro 1, es posible que el código no se detenga en el área del código infractor. En este caso, un enfoque consiste en usar el seguimiento de eventos para intentar realizar un seguimiento del controlador que supera la duración normal de la ejecución.
Use la extensión de depuración !analyze para mostrar información sobre la comprobación de errores.
0: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
DPC_WATCHDOG_VIOLATION (133)
The DPC watchdog detected a prolonged run time at an IRQL of DISPATCH_LEVEL
or above.
Arguments:
Arg1: 0000000000000001, The system cumulatively spent an extended period of time at
DISPATCH_LEVEL or above. The offending component can usually be
identified with a stack trace.
Arg2: 0000000000001e00, The watchdog period.
Arg3: fffff803648fa320, cast to nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, which contains
additional information regarding the cumulative timeout
Arg4: 0000000000000000
Convierta la dirección de nt! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK para mostrar información sobre ella.
0: kd> dt nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK fffff803648fa320
+0x000 Signature : 0xaebecede
+0x004 Revision : 1
+0x006 Size : 0x10
+0x008 DpcWatchdogProfileOffset : 0x84a8
+0x00c DpcWatchdogProfileLength : 0x8200
Use el comando !dpcs para mostrar los DPC en cola.
3: kd> !dpcs
CPU Type KDPC Function
0: Normal : 0xfffff8035f5ac290 0xfffff80363e15630 nt!PpmPerfAction
Failed to read DPC at 0xffffe40b77190dd8
0: Threaded: 0xfffff8035f5ac3d8 0xfffff80363f27d70 nt!KiDpcWatchdog
Solución
Para determinar la causa específica y crear una corrección de código, se requiere experiencia en programación y acceso al código fuente del módulo que falla.
Comentarios
En general, este código de detención se debe al código de controlador defectuoso que, en determinadas condiciones, no completa su trabajo dentro del período de tiempo asignado.
Si no está equipado para usar el depurador de Windows para este problema, debe usar algunas técnicas básicas de solución de problemas.
Si se identifica un controlador en el mensaje de comprobación de errores, para aislar el problema, deshabilite el controlador. Consulte con el fabricante las actualizaciones de controladores.
Consulte el registro del sistema en el Visor de eventos para ver otros mensajes de error que puedan ayudarle a identificar el dispositivo o controlador que provoca la comprobaciones de errores 0x133.
Confirme que todo el hardware nuevo que se instale sea compatible con la versión instalada de Windows. Por ejemplo, para Windows 10, puede obtener información sobre el hardware necesario en Especificaciones de Windows 10.
Para obtener información adicional sobre la solución de problemas generales, consulte Análisis de los datos de la comprobación de errores de la pantalla azul.
Consulte también
Análisis de volcado de memoria mediante los depuradores de Windows (WinDbg)
Análisis de un archivo de volcado en modo kernel con WinDbg
Bug Check Code Reference (Referencia de código de comprobación de errores)