Проверка ошибок 0x133: DPC_WATCHDOG_VIOLATION
Проверка ошибок DPC_WATCHDOG_VIOLATION имеет значение 0x00000133. Эта проверка ошибок указывает на то, что сторожевой объект DPC выполнялся либо из-за того, что он обнаружил один длительный отложенный вызов процедуры (DPC), либо так как система провела длительное время на уровне запроса прерывания (IRQL) DISPATCH_LEVEL или более поздней версии.
Значение параметра 1 указывает, превышено ли время ожидания одного DPC или время ожидания в течение длительного периода времени в IRQL DISPATCH_LEVEL или более поздней версии. ЦП не должно выполняться дольше 100 микросекунд, и isR не должны выполняться дольше 25 микросекунд, однако фактические значения времени ожидания в системе задаются гораздо выше.
Дополнительные сведения об ЦП см. в разделе "Введение в объекты DPC" и Windows Internals 7-й выпуск, часть 1 от Павла Йосифовича, Марка Э. Руссиновича, Дэвида А. Соломона и Алекса Ионеску.
Внимание
Эта статья предназначена для программистов. Если вы являетесь клиентом, который получил код ошибки синего экрана при использовании компьютера, см. статью "Устранение неполадок синим экраном".
Параметры DPC_WATCHDOG_VIOLATION
Параметр 1 указывает тип нарушения. Значение других параметров зависит от значения параметра 1.
Параметр 1 | Параметр 2 | Параметр 3 | Параметр 4 | Причина ошибки |
---|---|---|---|---|
0 | Число времени DPC (в галочках) | Выделение времени DPC (в галочки). | приведение к nt! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, которая содержит дополнительные сведения об этом одном тайм-ауте DPC | Один DPC или ISR превысил свое время выделения. Как правило, компонент обиженного компонента можно идентифицировать с помощью трассировки стека. |
1 | Период сторожевой | приведение к nt! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, которая содержит дополнительные сведения об этом одном тайм-ауте DPC | Зарезервировано | Система совокупно провела длительный период времени в IRQL DISPATCH_LEVEL или более поздней версии. Как правило, компонент обиженного компонента можно идентифицировать с помощью трассировки стека. |
Причина
Чтобы определить причину, требуется отладчик Windows, интерфейс программирования и доступ к исходному коду для модуля сбоя.
Дополнительные сведения см. в следующих статьях:
Анализ аварийного дампа с помощью отладчиков Windows (WinDbg)
Анализ файла дампа в режиме ядра с помощью WinDbg
Использование расширения !analyze и !analyze
Дополнительные сведения о Windows DPC см. в статье Windows Internals 7th Edition Part 1 by Павел Yosifovich, Марк Э. Руссинович, Дэвид А. Соломон и Алекс Ionescu.
Пример 1
Расширение отладки !analyze отображает сведения о проверке ошибок и может оказаться полезным при определении первопричины.
Параметр 1 = 0
В этом примере число галок 501 превышает выделение времени DPC 500. Имя изображения указывает, что этот код выполняется при возникновении ошибки.
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
...
Используйте следующие команды отладчика, чтобы получить дополнительные сведения о сбоях с параметром 0:
k (Display Stack Backtrace) для просмотра кода, выполняемого при возникновении кода остановки.
Вы можете использовать команду u, ub, uu (Unassemble), чтобы узнать больше о специфике выполняемого кода.
Расширение !pcr отображает текущее состояние области управления процессором (PCR) на определенном процессоре. В выходных данных будет адрес 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
С помощью команды dt (Display Type) можно отобразить дополнительные сведения о ЦП и сторожевой службе DPC. Для адреса используется Prcb, указанный в выходных данных !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
Пример 2
Параметр 1 = 1
Для параметра 1 код может не остановиться в области кода. В этом случае одним из способов является использование трассировки событий для отслеживания того, какой драйвер превышает обычную длительность выполнения.
Используйте расширение отладки !analyze для отображения сведений о проверке ошибок.
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
Приведение адреса nt! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK для отображения сведений об этом.
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
Используйте команду !dpcs для отображения очередных ЦП.
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
Разрешение
Чтобы определить конкретную причину и создать исправление кода, интерфейс программирования и доступ к исходному коду модуля сбоя, требуется.
Замечания
Как правило, этот код остановки вызван неисправным кодом драйвера, который в определенных условиях не завершает работу в течение выделенного интервала времени.
Если вы не оснащены отладчиком Windows для этой проблемы, следует использовать некоторые основные методы устранения неполадок.
Если драйвер определен в сообщении проверки ошибок, чтобы изолировать проблему, отключите драйвер. Обратитесь к изготовителю обновлений драйверов.
Проверьте системный журнал в Просмотр событий для получения дополнительных сообщений об ошибках, которые могут помочь определить устройство или драйвер, вызывающий проверку ошибок 0x133.
Убедитесь, что любое новое оборудование, которое установлено, совместимо с установленной версией Windows. Например, для Windows 10 можно получить сведения о требуемом оборудовании в спецификациях Windows 10.
Дополнительные общие сведения об устранении неполадок см. в разделе "Анализ данных с синим экраном".
См. также
Анализ аварийного дампа с помощью отладчиков Windows (WinDbg)
Анализ файла дампа в режиме ядра с помощью WinDbg
Bug Check Code Reference (Справочник с кодами критических ошибок)