다음을 통해 공유


버그 검사 0x133: DPC_WATCHDOG_VIOLATION

DPC_WATCHDOG_VIOLATION 버그 검사의 값은 0x00000133. 이 버그 검사는 DPC watchdog가 DPC(장기 실행 지연 프로시저 호출)를 하나 감지했거나 시스템이 DISPATCH_LEVEL 이상의 IRQL(인터럽트 요청 수준)에서 장기간 소요되었기 때문에 실행되었음을 나타냅니다.

매개 변수 1의 값은 단일 DPC가 시간 제한을 초과했는지 또는 시스템이 IRQL DISPATCH_LEVEL 이상에서 누적적으로 연장된 기간을 보냈는지 여부를 나타냅니다. DPC는 100 마이크로초보다 오래 실행해서는 안 되며 ISR은 25 마이크로초보다 오래 실행되지 않아야 하지만 시스템의 실제 시간 제한 값은 훨씬 더 높게 설정됩니다.

DPC에 대한 자세한 내용은 파벨 요시포비치, 마크 E. 루시노비치, 데이비드 A. 솔로몬, 알렉스 이온스쿠의 DPC 개체Windows Internals 7판 1부 소개를 참조하세요.

Important

이 문서는 프로그래머를 위한 것입니다. 컴퓨터를 사용하는 동안 파란색 화면 오류 코드를 받은 고객인 경우 파란색 화면 오류 문제 해결을 참조하세요.

DPC_WATCHDOG_VIOLATION 매개 변수

매개 변수 1 은 위반 유형을 나타냅니다. 다른 매개 변수의 의미는 매개 변수 1값에 따라 달라집니다.

매개 변수 1입니다. 매개 변수 2 매개 변수 3 매개 변수 4 오류 원인
0 DPC 시간 수(틱) DPC 시간 할당(틱)입니다. nt로 캐스팅! 이 단일 DPC 시간 제한에 대한 추가 정보가 포함된 DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK 단일 DPC 또는 ISR이 시간 할당을 초과했습니다. 일반적으로 잘못된 구성 요소는 스택 추적을 사용하여 식별할 수 있습니다.
1 감시 기간 nt로 캐스팅! 이 단일 DPC 시간 제한에 대한 추가 정보가 포함된 DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK 예약됨 시스템은 IRQL DISPATCH_LEVEL 이상에서 누적적으로 오랜 시간을 보냈습니다. 일반적으로 잘못된 구성 요소는 스택 추적을 사용하여 식별할 수 있습니다.

원인

원인을 확인하려면 Windows 디버거, 프로그래밍 환경 및 오류 모듈의 소스 코드에 대한 액세스 권한이 필요합니다.

자세한 내용은 아래 항목을 참조하세요.

Windows 디버거를 사용한 크래시 덤프 분석(WinDbg)

WinDbg를 사용하여 커널 모드 덤프 파일 분석

!analyze Extension!analyze 사용

Windows DPC에 대한 자세한 내용은 파벨 요시포비치, 마크 E. 루시노비치, 데이비드 A. 솔로몬, 알렉스 이온스쿠의 Windows Internals 7 버전 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(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(표시 형식) 명령을 사용하여 DPC 및 DPC Watchdog에 대한 추가 정보를 표시할 수 있습니다. 주소의 경우 !pcr 출력에 나열된 Prcb를 사용합니다.

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 사양에서 필요한 하드웨어에 대한 정보를 얻을 수 있습니다.

  • 일반적인 추가 문제 해결 정보는 버그 검사 블루 스크린 데이터 분석을 참조 하세요.

참고 항목

Windows 디버거를 사용한 크래시 덤프 분석(WinDbg)

WinDbg를 사용하여 커널 모드 덤프 파일 분석

오류 검사 코드 참조