버그 검사 0x116: VIDEO_TDR_FAILURE
VIDEO_TDR_FAILURE 버그 검사의 값은 0x00000116. 이 버그 검사는 디스플레이 드라이버를 재설정하고 시간 제한에서 복구하지 못했음을 나타냅니다.
Important
이 문서는 프로그래머를 위한 것입니다. 컴퓨터를 사용하는 동안 파란색 화면 오류 코드를 받은 고객인 경우 파란색 화면 오류 문제 해결을 참조하세요.
VIDEO_TDR_FAILURE 매개 변수
매개 변수 | 설명 |
---|---|
1 | 사용 가능한 경우 내부 TDR 복구 컨텍스트에 대한 포인터입니다. |
2 | 책임 있는 디바이스 드라이버 모듈(예: 소유자 태그)에 대한 포인터입니다. |
3 | 마지막으로 실패한 작업의 오류 코드(사용 가능한 경우)입니다. |
4 | 내부 컨텍스트 종속 데이터(사용 가능한 경우)입니다. |
원인
그래픽의 일반적인 안정성 문제는 최종 사용자 명령 또는 작업을 처리하는 동안 시스템이 완전히 고정되거나 중단된 것처럼 보일 때 발생합니다. 일반적으로 GPU는 주로 게임 플레이 중에 집중적인 그래픽 작업을 처리하는 중입니다. 화면 업데이트가 발생하지 않으며 사용자는 시스템이 고정되어 있다고 가정합니다. 사용자는 일반적으로 몇 초 정도 기다린 다음 전원 단추를 눌러 시스템을 다시 부팅합니다. Windows는 이러한 문제가 있는 중단 상황을 감지하고 반응형 데스크톱을 동적으로 복구하려고 합니다.
이 검색 및 복구 프로세스를 TDR(시간 제한 검색 및 복구)으로 알려져 있습니다. 기본 시간 제한은 2초입니다. 비디오 카드에 대한 TDR 프로세스에서 운영 체제의 GPU 스케줄러는 디스플레이 미니포트 드라이버의 DxgkDdiResetFromTimeout 함수를 호출하여 드라이버를 다시 초기화하고 GPU를 다시 설정합니다.
이 프로세스 중에 운영 체제는 드라이버에 하드웨어 또는 메모리에 액세스하지 않도록 지시하고 현재 실행 중인 스레드가 완료되는 짧은 시간을 제공합니다. 시간 제한 내에 스레드가 완료되지 않으면 시스템 버그가 0x116 VIDEO_TDR_FAILURE 확인합니다. 자세한 내용은 스레드 동기화 및 TDR을 참조하세요.
또한 짧은 기간 동안 여러 TDR 이벤트가 발생하는 경우 시스템은 VIDEO_TDR_FAILURE 버그 검사를 수행할 수 있습니다. 기본값은 1분 안에 5개 이상의 TDR입니다.
복구 프로세스가 성공하면 "표시 드라이버가 응답을 중지하고 복구되었습니다"라는 메시지가 표시됩니다.
자세한 내용은 Windows 8 이상에서 TDR(시간 제한 검색 및 복구), TDR 레지스트리 키 및 TDR 변경 내용을 참조하세요.
해결
GPU는 모니터에 그래픽을 표시하는 데 허용되는 시간보다 더 많은 시간이 소요됩니다. 다음 이유 중 하나 이상으로 인해 이 동작이 발생할 수 있습니다.
- 디스플레이 드라이버에 대한 최신 업데이트를 설치해야 할 수 있으므로 TDR 프로세스를 제대로 지원합니다.
- 다음을 포함하여 비디오 카드가 제대로 작동하는 기능에 영향을 주는 하드웨어 문제
- 마더보드와 같은 오버 클럭 구성 요소
- 잘못된 구성 요소 호환성 및 설정(특히 메모리 구성 및 타이밍)
- 시스템 냉각 부족
- 시스템 전원 부족
- 결함이 있는 부품(메모리 모듈, 마더보드 등)
- 시각 효과 또는 백그라운드에서 실행되는 프로그램이 너무 많으면 PC 속도가 느려질 수 있으므로 비디오 카드가 필요에 따라 응답할 수 없습니다.
!analyze 디버그 확장은 버그 검사에 대한 정보를 표시하며 근본 원인을 확인하는 데 도움이 될 수 있습니다.
1: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
VIDEO_TDR_FAILURE (116)
Attempt to reset the display driver and recover from timeout failed.
Arguments:
Arg1: ffffe000c2c404c0, Optional pointer to internal TDR recovery context (TDR_RECOVERY_CONTEXT).
Arg2: fffff8016470c14c, The pointer into responsible device driver module (e.g. owner tag).
Arg3: ffffffffc000009a, Optional error code (NTSTATUS) of the last failed operation.
Arg4: 0000000000000004, Optional internal context dependent data.
...
오류가 있는 모듈 이름도 표시됩니다.
MODULE_NAME: nvlddmkm
IMAGE_NAME: nvlddmkm.sys
lm(로드된 모듈 나열) 명령을 사용하여 타임스탬프를 포함하여 오류 드라이버에 대한 정보를 표시할 수 있습니다.
1: kd> lmvm nvlddmkm
Browse full module list
start end module name
fffff801`63ec0000 fffff801`649a7000 nvlddmkm T (no symbols)
Loaded symbol image file: nvlddmkm.sys
Image path: \SystemRoot\system32\DRIVERS\nvlddmkm.sys
Image name: nvlddmkm.sys
Browse all global symbols functions data
Timestamp: Wed Jul 8 15:43:44 2015 (559DA7A0)
CheckSum: 00AA7491
ImageSize: 00AE7000
Translations: 0000.04b0 0000.04e4 0409.04b0 0409.04e4
매개 변수 1에는 TDR_RECOVERY_CONTEXT 대한 포인터가 포함되어 있습니다. !analyze 출력에 표시된 것처럼 연결된 코드에 대한 기호가 있는 경우 이 명령을 사용하여 dt
이 데이터를 표시할 수 있습니다.
1: kd> dt dxgkrnl!_TDR_RECOVERY_CONTEXT ffffe000c2c404c0
+0x000 Signature : 0x52445476
+0x008 pState : 0xffffe000`c2b12a40 ??
+0x010 TimeoutReason : 9 ( TdrEngineTimeoutPromotedToAdapterReset )
+0x018 Tick : _ULARGE_INTEGER 0xb2
+0x020 pAdapter : 0xffffe000`c2a89010 DXGADAPTER
+0x028 pVidSchContext : (null)
+0x030 GPUTimeoutData : _TDR_RECOVERY_GPU_DATA
+0x048 CrtcTimeoutData : _TDR_RECOVERY_CONTEXT::<unnamed-type-CrtcTimeoutData>
+0x050 pProcessName : (null)
+0x058 DbgOwnerTag : 0xfffff801`6470c14c
+0x060 PrivateDbgInfo : _TDR_DEBUG_REPORT_PRIVATE_INFO
+0xb00 pDbgReport : 0xffffe000`c2c3f750 _WD_DEBUG_REPORT
+0xb08 pDbgBuffer : 0xffffc000`bd000000 Void
+0xb10 DbgBufferSize : 0x37515
+0xb18 pDumpBufferHelper : (null)
+0xb20 pDbgInfoExtension : 0xffffc000`ba7e47a0 _DXGKARG_COLLECTDBGINFO_EXT
+0xb28 pDbgBufferUpdatePrivateInfo : 0xffffc000`bd000140 Void
+0xb30 ReferenceCount : 0n1
+0xb38 pResetCompletedEvent : (null)
매개 변수 2에는 책임 있는 디바이스 드라이버 모듈(예: 소유자 태그)에 대한 포인터가 포함됩니다.
1: kd> ub fffff8016470c14c
nvlddmkm+0x84c132:
fffff801`6470c132 cc int 3
fffff801`6470c133 cc int 3
fffff801`6470c134 48ff254d2deaff jmp qword ptr [nvlddmkm+0x6eee88 (fffff801`645aee88)]
fffff801`6470c13b cc int 3
fffff801`6470c13c 48ff252d2eeaff jmp qword ptr [nvlddmkm+0x6eef70 (fffff801`645aef70)]
fffff801`6470c143 cc int 3
fffff801`6470c144 48ff257d2deaff jmp qword ptr [nvlddmkm+0x6eeec8 (fffff801`645aeec8)]
fffff801`6470c14b cc int 3
k, kb, kc, kd, kp, kP, kv(Stack Backtrace 표시) 명령을 사용하여 스택 추적을 검사할 수 있습니다.
1: kd> k
# Child-SP RetAddr Call Site
00 ffffd001`7d53d918 fffff801`61ba2b4c nt!KeBugCheckEx [d:\th\minkernel\ntos\ke\amd64\procstat.asm @ 122]
01 ffffd001`7d53d920 fffff801`61b8da0e dxgkrnl!TdrBugcheckOnTimeout+0xec [d:\th\windows\core\dxkernel\dxgkrnl\core\dxgtdr.cxx @ 2731]
02 ffffd001`7d53d960 fffff801`61b8dd7f dxgkrnl!ADAPTER_RENDER::Reset+0x15e [d:\th\windows\core\dxkernel\dxgkrnl\core\adapter.cxx @ 19443]
03 ffffd001`7d53d990 fffff801`61ba2385 dxgkrnl!DXGADAPTER::Reset+0x177 [d:\th\windows\core\dxkernel\dxgkrnl\core\adapter.cxx @ 19316]
04 ffffd001`7d53d9e0 fffff801`63c5fba7 dxgkrnl!TdrResetFromTimeout+0x15 [d:\th\windows\core\dxkernel\dxgkrnl\core\dxgtdr.cxx @ 2554]
05 ffffd001`7d53da10 fffff801`63c47e5d dxgmms1!VidSchiRecoverFromTDR+0x11b [d:\th\windows\core\dxkernel\dxgkrnl\dxgmms1\vidsch\vidscher.cxx @ 1055]
06 ffffd001`7d53dbc0 fffff801`aa55c698 dxgmms1!VidSchiWorkerThread+0x8d [d:\th\windows\core\dxkernel\dxgkrnl\dxgmms1\vidsch\vidschi.cxx @ 426]
07 ffffd001`7d53dc00 fffff801`aa5c9306 nt!PspSystemThreadStartup+0x58 [d:\th\minkernel\ntos\ps\psexec.c @ 6845]
08 ffffd001`7d53dc60 00000000`00000000 nt!KxStartSystemThread+0x16 [d:\th\minkernel\ntos\ke\amd64\threadbg.asm @ 80]
중지 코드를 일관되게 재현할 수 있는 경우 이 중지 코드로 이어지는 코드에서 중단점을 설정하고 오류 코드로 한 단계 앞으로 나아갈 수도 있습니다.
자세한 내용은 WinDbg를 사용하여 크래시 덤프 파일 분석을 참조 하세요.
Windows 디버거를 사용하여 이 문제를 해결할 준비가 되지 않은 경우 몇 가지 기본적인 문제 해결 기술을 사용할 수 있습니다.
이 버그 검사를 일으키는 디바이스 또는 드라이버를 식별하는 데 도움이 될 수 있는 다른 오류 메시지는 시스템 로그인 이벤트 뷰어 확인합니다.
버그 확인 메시지에서 드라이버가 식별되면 드라이버를 사용하지 않도록 설정하거나 제조업체에 드라이버 업데이트를 확인합니다.
DirectX 및 OpenGL과 같은 모든 그래픽 관련 소프트웨어가 최신 상태이고 그래픽 집약적 애플리케이션(예: 게임)이 완전히 패치되었는지 확인합니다.
설치된 새 하드웨어가 설치된 Windows 버전과 호환되는지 확인합니다. 예를 들어 Windows 10 사양에서 필요한 하드웨어에 대한 정보를 가져올 수 있습니다.
Windows 메모리 진단 도구를 실행하여 메모리를 테스트합니다. 제어판 검색 상자에 메모리를 입력한 다음 컴퓨터의 메모리 문제 진단을 선택합니다. 테스트를 실행한 후 이벤트 뷰어를 사용하여 시스템 로그 아래의 결과를 봅니다. 결과를 보려면 MemoryDiagnostics-Results 항목을 찾습니다.
시스템 제조업체에서 제공한 하드웨어 진단 프로그램을 실행할 수 있습니다.
안전 모드 사용
안전 모드를 사용하여 이 문제를 격리하는 것이 좋습니다. 안전 모드를 사용하면 Windows를 시작하는 동안 필요한 최소 드라이버 및 시스템 서비스만 로드됩니다.
- 안전 모드로 전환하려면 설정에서 업데이트 및 보안 으로 이동합니다.
- 복구>고급 시작을 선택하여 유지 관리 모드로 부팅합니다.
- 결과 메뉴에서 고급 옵션>시작 설정>다시 시작 문제 해결>을 선택합니다.
- Windows가 시작 설정 화면으로 다시 시작되면 4, 5 또는 6 옵션을 선택하여 안전 모드로 부팅합니다.
안전 모드는 부팅 시 함수 키를 눌러 사용할 수 있습니다(예: F8). 특정 시작 옵션은 제조업체의 정보를 참조하세요.
일반적인 문제 해결 정보는 버그 검사 블루 스크린 데이터 분석을 참조 하세요.
설명
하드웨어 디바이스가 TDR을 구현할 때 충족해야 하는 요구 사항에 대한 자세한 내용은 Windows 하드웨어 랩 키트 설명서를 참조하세요. 예를 들어 TDR2 - 표준 두 디바이스 테스트 그래픽