버그 검사 0x116: VIDEO_TDR_FAILURE

VIDEO_TDR_FAILURE 버그 검사 값은 0x00000116. 이 버그 검사 디스플레이 드라이버를 재설정하고 시간 제한에서 복구하려는 시도가 실패했음을 나타냅니다.

중요

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

VIDEO_TDR_FAILURE 매개 변수

매개 변수 Description
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입니다.

복구 프로세스가 성공하면 "표시 드라이버가 응답을 중지하고 복구됨"을 나타내는 메시지가 표시됩니다.

자세한 내용은 TDR(시간 제한 검색 및 복구),TDR 레지스트리 키Windows 8 이상에서의 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 시작 중에 필요한 최소 드라이버 및 시스템 서비스만 로드됩니다.

    1. 안전 모드로 전환하려면 설정에서 업데이트 및 보안 으로 이동합니다.
    2. 복구>고급 시작을 선택하여 유지 관리 모드로 부팅합니다.
    3. 결과 메뉴에서고급 옵션>시작 설정>다시시작 문제 해결>을 선택합니다.
    4. Windows가 시작 설정 화면으로 다시 시작되면 옵션 4, 5 또는 6을 선택하여 안전 모드로 부팅합니다.

    안전 모드는 부팅 시 함수 키를 눌러 사용할 수 있습니다(예: F8). 특정 시작 옵션은 제조업체의 정보를 참조하세요.

일반적인 문제 해결 정보는 Blue Screen Data를 참조하세요.

설명

하드웨어 디바이스가 TDR을 구현할 때 충족해야 하는 요구 사항에 대한 자세한 내용은 Windows 하드웨어 랩 키트 설명서를 참조하세요. 예를 들어 TDR2 - 표준 두 디바이스 테스트 그래픽입니다.

추가 정보

오류 검사 코드 참조