Поделиться через


Проверка ошибок 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 (Справочник с кодами критических ошибок)