錯誤檢查0x116:VIDEO_TDR_FAILURE
VIDEO_TDR_FAILURE錯誤檢查的值為 0x00000116。 這個錯誤檢查指出嘗試重設顯示驅動程式並從逾時復原失敗。
重要
本文適用于程式設計人員。 如果您是在使用電腦時收到藍色螢幕錯誤碼的客戶,請參閱 針對藍色畫面錯誤進行疑難排解。
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。 預設金額在一分鐘內超過五個 TDR。
如果復原程式成功,將會顯示訊息,指出「顯示驅動程式已停止回應並已復原」。
如需詳細資訊,請參閱逾時偵測和復原 (TDR) 、TDR 登錄機碼和Windows 8和更新版本中的 TDR 變更。
解決方案
GPU 花費的時間比允許將圖形顯示至監視器還要久。 下列一個或多個原因會發生此行為:
- 您可能需要安裝顯示驅動程式的最新更新,因此它可正確支援 TDR 程式。
- 影響視訊卡正常運作能力的硬體問題,包括:
- 超時鐘元件,例如主機板
- 元件相容性和設定不正確, (特別是記憶體組態和時間)
- 系統冷卻不足
- 系統電源不足
- 記憶體模組、主機板等 (瑕疵元件 )
- 在背景中執行的視覺效果或太多程式可能會讓電腦變慢,因此視訊卡無法視需要回應。
!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 (List Loaded Modules) 命令來顯示錯誤驅動程式的相關資訊,包括時間戳記。
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 (Display 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 - 標準兩個裝置測試圖形。