错误检查 0x117:VIDEO_TDR_TIMEOUT_DETECTED
VIDEO_TDR_TIMEOUT_DETECTED 实时转储的值为 0x00000117。 这表示显示驱动程序未能及时响应。
(此代码永远不能用于真正的错误检查;它用于标识实时转储。)
重要
这篇文章适合程序员阅读。 如果您是在使用计算机时收到蓝屏错误代码的客户,请参阅蓝屏错误疑难解答。
VIDEO_TDR_TIMEOUT_DETECTED 参数
参数 | 说明 |
---|---|
1 |
指向内部 TDR 恢复上下文的指针(如果可用)。 |
2 |
指向负责的设备驱动程序模块(例如所有者标记)的指针。 |
3 |
特定于辅助驱动程序的存储桶密钥。 |
4 |
内部上下文相关数据(如果可用)。 |
原因
如果在处理最终用户命令或操作时系统出现完全冻结或挂起,图形中会出现常见的稳定性问题。 通常,GPU 忙于处理密集型图形操作,通常是在游戏过程中。 没有屏幕更新发生,用户假定其系统已冻结。 用户通常等待几秒钟,然后按电源按钮重新启动系统。 Windows 会尝试检测这些有问题的挂起情况,并动态恢复响应式桌面。
检测和恢复过程称为超时检测和恢复 (TDR)。 默认超时值为 2 秒。 在视频卡的 TDR 进程中,操作系统的 GPU 计划程序调用显示微型端口驱动程序的 DxgkDdiResetFromTimeout 函数来重新初始化驱动程序并重置 GPU。
如果恢复过程成功,将显示一条消息来表明“显示驱动程序停止响应并已恢复”。
有关详细信息,请参阅超时检测和恢复 (TDR)、TDR 注册表项和 Windows 中的 TDR 更改(位于超时检测和恢复中 (TDR) 中)。
解决方法
GPU 向显示器显示图形所需的时间比允许的时间要长。 以下一种或多种原因可能会导致此行为:
- 您可能需要为显示驱动程序安装最新更新,以便它正确支持 TDR 进程。
- 影响显卡正常运行能力的硬件问题,包括:
- 超频组件,例如主板
- 组件兼容性和设置不正确(尤其是内存配置和计时)
- 系统冷却不足
- 系统电源不足
- 有缺陷的部件(内存模块、主板等)
- 视觉效果或后台运行的程序过多可能会降低电脑的速度,因此显卡无法根据需要做出响应。
!analyze 调试扩展显示有关错误检查的信息,并有助于确定根本原因。
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 bug check; it is used to identify live dumps.)
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]
如果可以一致地重现停止代码,还可以在导致此停止代码的代码中设置断点,并尝试单步进入错误代码。
有关详细信息,请参阅以下主题:
使用 Windows 调试器 (WinDbg) 进行故障转储分析
如果您不具备使用 Windows 调试器来解决此问题的能力,则可以使用一些基本的故障排除技术。
在事件查看器中检查系统日志以获取其他错误消息,这可能有助于识别导致此错误检查的设备或驱动程序。
如果在错误检查消息中标识了驱动程序,请禁用该驱动程序,或与制造商联系以获取驱动程序更新。
验证所有与图形相关的软件(如 DirectX 和 OpenGL)是否都是最新的,并且所有图形密集型应用程序(如游戏)都已完全修补。
确保安装的任何新硬件都与已安装的 Windows 版本兼容。 例如,可以在 Windows 10 规范中获取所需硬件的相关信息。
使用安全模式
请考虑使用安全模式来帮助隔离此问题。 在 Windows 启动过程中,使用安全模式只会加载所需的最低驱动程序和系统服务。 若要进入安全模式,请使用设置中的更新和安全。 选择恢复->高级启动以启动进入维护模式。 在生成的菜单中,选择故障排除->高级选项->启动设置->重启。 Windows 重启进入“启动设置”界面后,选择选项 4、5 或 6 以启动进入安全模式。
在启动时按下功能键(例如 F8)可以进入安全模式。 有关具体的启动选项,请参阅制造商提供的信息。
运行 Windows 内存诊断工具以测试内存。 在控制面板搜索框中键入“内存”,然后选择诊断计算机内存问题。运行测试后,使用事件查看器查看系统日志下的结果。 查找“内存诊断结果”条目以查看结果。
你可尝试运行系统制造商提供的硬件诊断。
有关其他常规故障排除信息,请参阅分析错误检查蓝屏数据。
注解
硬件认证要求
有关硬件设备在实现 TDR 时必须满足的要求的信息,请参阅 Device.Graphics…TDRResiliency 上的文档。