Comprobación de errores 0x133: DPC_WATCHDOG_VIOLATION
La comprobación de errores de 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 a procedimiento diferido de larga duración (DPC), o porque el sistema ha dedicado 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 del sistema se establecen mucho más alto.
Para obtener más información sobre los DPC, vea Introduction to DPC Objects and Windows Internals 7th Edition Part 1 by Pavel Yosifovich, Mark E. Russinovich, David A. Solomon y Alex Ionescu.
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 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) | La asignación de tiempo de DPC (en tics). | ¡cast to 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 | ¡cast to nt! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, que contiene información adicional sobre este único tiempo de espera de DPC | Reservado | El sistema pasó 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, es necesario que el depurador de Windows, la experiencia de programación y el acceso al código fuente del módulo de error.
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 de Kernel-Mode con WinDbg
Uso de la extensión !analyze y !analyze
Para obtener más información sobre Windows DPC, consulta Windows Internals 7th Edition Part 1 by Pavel Yosifovich, Mark E. Russinovich, David A. Solomon y Alex Ionescu.
Ejemplo 1
La extensión !analyze debug muestra información sobre la comprobación de errores y puede ser ú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 de 0:
k (Mostrar backtrace de pila) para ver qué código se estaba ejecutando cuando se produjo el código de detención.
Es posible que desee usar el comando u, ub, uu (Unassemble) para profundizar en los detalles de un 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 pantalla) 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 ofendida del código. En este caso, un enfoque consiste en usar el seguimiento de eventos para intentar realizar un seguimiento del controlador que supere 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 del nt! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK 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
Resolución
Para determinar la causa específica y crear una corrección de código, se requiere experiencia de programación y acceso al código fuente del módulo de error.
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 si hay actualizaciones de controladores.
Compruebe el inicio de sesión del sistema Visor de eventos si hay mensajes de error adicionales que pueden ayudar a identificar el dispositivo o controlador que está causando la comprobación de errores 0x133.
Confirme que cualquier nuevo hardware instalado sea compatible con la versión instalada de Windows. Por ejemplo, para Windows 10, puede obtener información sobre el hardware necesario en Windows 10 Especificaciones.
Para obtener información general adicional sobre la solución de problemas, consulte Datos de pantalla azul.
Consulte también
Análisis de volcado de memoria mediante los depuradores de Windows (WinDbg)
Análisis de un archivo de volcado de Kernel-Mode con WinDbg
Bug Check Code Reference (Referencia de código de comprobación de errores)
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de