Проверка ошибок 0x133 DPC_WATCHDOG_VIOLATION

Проверка ошибок DPC_WATCHDOG_VIOLATION имеет значение 0x00000133. Эта проверка ошибок указывает на то, что служба наблюдения DPC была выполнена либо из-за того, что она обнаружила один длительный вызов отложенной процедуры (DPC), либо потому, что система провела длительное время на уровне запроса прерывания (IRQL) DISPATCH_LEVEL или более поздней версии.

Значение параметра 1 указывает, превышено ли время ожидания одного DPC или система провела длительный период времени в IRQL DISPATCH_LEVEL или более поздней версии. ЦП не должно выполняться дольше 100 микросекунд, а isR не должно выполняться дольше 25 микросекунд, однако фактические значения времени ожидания в системе задаются гораздо выше.

Дополнительные сведения об ЦП см. в разделе "Введение в объекты DPC" и Windows внутренних 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)

Анализ файла дампа Kernel-Mode с помощью WinDbg

Использование расширения !analyze и !analyze

Дополнительные сведения о Windows DPC см. в разделе Windows Internals 7th Edition Part 1 от Павла Йосифовича, Марка Е. Руссиновича, Дэвида А. Соломона и Алекса Ионеску.

Пример 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 (Отображение стека 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 (тип отображения) можно использовать для отображения дополнительных сведений о dpCs и DPC Watchdog. Для адреса используйте 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)

Анализ файла дампа Kernel-Mode с помощью WinDbg

Bug Check Code Reference (Справочник с кодами критических ошибок)