0x133 проверки ошибок: DPC_WATCHDOG_VIOLATION

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

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

Дополнительные сведения о DPC см. в статье Introduction to DPC Objects and Windows Internals 7th Edition Part 1 by Павел Yosifovich, Mark E. Russinovich, David A. Solomon и Alex Ionescu.

Важно!

Эта статья предназначена для программистов. Если вы являетесь клиентом, который получил код ошибки "синий экран" во время работы с компьютером, см. статью Устранение ошибок синего экрана.

Параметры DPC_WATCHDOG_VIOLATION

Параметр 1 указывает тип нарушения. Значение других параметров зависит от значения параметра 1.

Параметр 1 Параметр 2 Параметр 3 Параметр 4 Причина ошибки
0 Количество времени DPC (в тактах) Выделение времени DPC (в тактах). cast to nt! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, которая содержит дополнительные сведения об этом отдельном тайм-ауте DPC Для одного DPC или ISR превышено время выделения. Компонент, на который возникает ошибка, обычно можно идентифицировать с помощью трассировки стека.
1 Период наблюдения cast to nt! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, которая содержит дополнительные сведения об этом отдельном тайм-ауте DPC Зарезервировано Система совокупно потратила длительный период времени на IRQL DISPATCH_LEVEL или выше. Компонент, на который возникает ошибка, обычно можно идентифицировать с помощью трассировки стека.

Причина

Чтобы определить причину, требуется отладчик Windows, опыт программирования и доступ к исходному коду модуля сбоя.

Дополнительные сведения см. в следующих статьях:

Анализ аварийного дампа с помощью отладчиков Windows (WinDbg)

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

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

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

Пример 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 (Обратная трассировка стека отображения) для просмотра того, какой код выполнялся при возникновении кода остановки.

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

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.

  • Дополнительные общие сведения об устранении неполадок см. в разделе Blue Screen Data.

См. также раздел

Анализ аварийного дампа с помощью отладчиков Windows (WinDbg)

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

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