Windows 蓝屏代码 0x117:VIDEO_TDR_TIMEOUT_DETECTED

VIDEO_TDR_TIMEOUT_DETECTED 错误检查的值为 0x00000117.
这表明显示驱动程序未能及时响应。

解决方法

GPU 在显示器上显示图形所花的时间超过了允许的时间。
出现此行为的原因可能是以下一种或者多种:

  • 我们可能需要为显示驱动程序安装最新更新,以便它正确支持 TDR 过程。
  • 影响显卡正常运行能力的硬件问题,包括:
  • 超频组件,例如主板
  • 组件兼容性和设置不正确(尤其是内存配置和时序)
  • 系统冷却不足
  • 系统电源不足
  • 有缺陷的部件(内存模块、主板等)
  • 视觉效果或者后台运行的程序过多可能会降低 PC 速度,从而导致显卡无法根据需要做出响应。

!analyze 调试扩展显示有关错误检查的信息,有助于确定根本原因。
详细步骤查看我们的教程 在windows 中使用WinDBG 调试dmp文件

3: kd> !analyze -v
***
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
***
VIDEO_TDR_TIMEOUT_DETECTED (117)
The display driver failed to respond in timely fashion.
(This code can never be used for a real bugcheck.)
Arguments:
Arg1: 8975d500, Optional pointer to internal TDR recovery context (TDR_RECOVERY_CONTEXT).
Arg2: 9a02381e, The pointer into responsible device driver module (e.g owner tag).
Arg3: 00000000, The secondary driver specific bucketing key.
Arg4: 00000000, Optional internal context dependent data.
...

还会显示故障模块名称

MODULE_NAME: atikmpag
IMAGE_NAME:  atikmpag.sys

我们可以使用 lmv 命令显示有关故障驱动程序的信息,包括时间戳。

3: kd> lmvm atikmpag
Browse full module list
start    end        module name
9a01a000 9a09a000   atikmpag T (no symbols)           
    Loaded symbol image file: atikmpag.sys
    Image path: atikmpag.sys
    Image name: atikmpag.sys
    Browse all global symbols  functions  data
    Timestamp:        Fri Dec  6 12:20:32 2013 (52A23190)
    CheckSum:         0007E58A
    ImageSize:        00080000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4

参数 1 包含一个指向 TDR_RECOVERY_CONTEXT 的指针。

3: kd> dt dxgkrnl!_TDR_RECOVERY_CONTEXT fffffa8010041010
   +0x000 Signature        : ??
   +0x004 pState           : ???? 
   +0x008 TimeoutReason    : ??
   +0x010 Tick             : _ULARGE_INTEGER
   +0x018 pAdapter         : ???? 
   +0x01c pVidSchContext   : ???? 
   +0x020 GPUTimeoutData   : _TDR_RECOVERY_GPU_DATA
   +0x038 CrtcTimeoutData  : _TDR_RECOVERY_CONTEXT::<unnamed-type-CrtcTimeoutData>
   +0x040 DbgOwnerTag      : ??
   +0x048 PrivateDbgInfo   : _TDR_DEBUG_REPORT_PRIVATE_INFO
   +0xae0 pDbgReport       : ???? 
   +0xae4 pDbgBuffer       : ???? 
   +0xae8 DbgBufferSize    : ??
   +0xaec pDumpBufferHelper : ???? 
   +0xaf0 pDbgInfoExtension : ???? 
   +0xaf4 pDbgBufferUpdatePrivateInfo : ???? 
   +0xaf8 ReferenceCount   : ??
Memory read error 10041b08

参数 2 包含指向负责的设备驱动程序模块(例如,所有者标记)的指针。

BUGCHECK_P2: ffffffff9a02381e

我们可能希望使用 k、kb、kc、kd、kp、kP、kv(显示堆栈回溯)命令检查堆栈跟踪。

3: kd> k
 # ChildEBP RetAddr  
00 81d9ace0 976e605e dxgkrnl!TdrUpdateDbgReport+0x93 [d:\blue_gdr\windows\core\dxkernel\dxgkrnl\core\dxgtdr.cxx @ 944]
01 81d9acfc 976ddead dxgkrnl!TdrCollectDbgInfoStage2+0x195 [d:\blue_gdr\windows\core\dxkernel\dxgkrnl\core\dxgtdr.cxx @ 1759]
02 81d9ad24 976e664f dxgkrnl!DXGADAPTER::Reset+0x23f [d:\blue_gdr\windows\core\dxkernel\dxgkrnl\core\adapter.cxx @ 14972]
03 81d9ad3c 977be9e0 dxgkrnl!TdrResetFromTimeout+0x16 [d:\blue_gdr\windows\core\dxkernel\dxgkrnl\core\dxgtdr.cxx @ 2465]
04 81d9ad50 977b7518 dxgmms1!VidSchiRecoverFromTDR+0x13 [d:\blue_gdr\windows\core\dxkernel\dxgkrnl\dxgmms1\vidsch\vidscher.cxx @ 1018]
05 (Inline) -------- dxgmms1!VidSchiRun_PriorityTable+0xfa71
06 81d9ad70 812c01d4 dxgmms1!VidSchiWorkerThread+0xfaf2 [d:\blue_gdr\windows\core\dxkernel\dxgkrnl\dxgmms1\vidsch\vidschi.cxx @ 424]
07 81d9adb0 81325fb1 nt!PspSystemThreadStartup+0x58 [d:\blue_gdr\minkernel\ntos\ps\psexec.c @ 5884]
08 81d9adbc 00000000 nt!KiThreadStartup+0x15 [d:\blue_gdr\minkernel\ntos\ke\i386\threadbg.asm @ 81]

我们还可以在导致此停止代码的代码中设置断点,并尝试单步前进到故障代码,如果我们可以始终如一地重现停止代码。

欢迎来到之路教程(on itroad-com)

原因

当系统在处理最终用户命令或者操作时出现完全冻结或者挂起时,会出现图形中常见的稳定性问题。
通常 GPU 忙于处理密集的图形操作,通常是在玩游戏期间。
没有屏幕更新发生,用户认为他们的系统被冻结。
用户通常等待几秒钟,然后按电源按钮重新启动系统。
Windows 尝试检测这些有问题的挂起情况并动态恢复响应式桌面。

此检测和恢复过程称为超时检测和恢复 (TDR)。
默认超时为 2 秒。
在显卡的 TDR 过程中,操作系统的 GPU 调度程序调用显示微型端口驱动程序的 DxgkDdiResetFromTimeout 函数重新初始化驱动程序并重置 GPU。

如果恢复过程成功,将显示一条消息,指示“显示驱动程序停止响应并已恢复”。

有关详细信息,请参阅位于超时检测和恢复 (TDR) 中的超时检测和恢复 (TDR)、Windows 8 中的 TDR 注册表项和 TDR 更改

VIDEO_TDR_TIMEOUT_DETECTED 参数

参数描述
1指向内部 TDR 恢复上下文的指针(如果可用)。
2指向负责设备驱动程序模块的指针(例如,所有者标签)。
3辅助驱动程序特定的分桶键。
4内部上下文相关数据(如果可用)。
日期:2020-09-17 00:16:17 来源:oir作者:oir