バグ チェック 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)」、「TDR レジストリ キー」、および「Windows 8 以降の TDR の変更」を参照してください。
解決方法
GPU は、モニターにグラフィックスを表示するのに許可されている時間よりも長い時間がかかっています。 この動作は、次の 1 つ以上の理由で発生することがあります。
- ディスプレイ ドライバーの最新の更新プログラムをインストールして、TDR プロセスを適切にサポートする必要がある場合があります。
- ビデオ カードが正常に動作する機能に影響を与えるハードウェアの問題。次のようなものがあります。
- マザーボードなどのオーバークロック コンポーネント
- コンポーネントの互換性と設定が正しくない (特にメモリの構成とタイミング)
- システムの冷却が不十分である
- システム電源が不十分である
- 不良品 (メモリ モジュール、マザーボードなど)
- 視覚効果、またはバックグラウンドで実行されているプログラムが多すぎると、PC の速度が低下する可能性があるため、ビデオ カードは必要に応じて応答できません。
!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 (Display Stack Backtrace) コマンドを使用します。
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 の起動時に必要最小限のドライバーとシステム サービスのみが読み込まれます。 セーフ モードに切り替えるには、[設定] の [更新とセキュリティ] を使用します。 [回復]->[PC の起動をカスタマイズする] の順に選択してメンテナンス モードで起動します。 表示されたメニューで、[トラブルシューティング]->[詳細オプション] ->[スタートアップ設定] ->[再起動] の順に選択します。 Windows が再起動して [スタートアップ設定] 画面が表示されたら、オプション 4、5、または 6 を選択してセーフ モードで起動します。
セーフ モードは、起動時にファンクション キー (F8 キーなど) を押すことで使用できる場合があります。 特定のスタートアップ オプションについては、製造元からの情報を参照してください。
Windows メモリ診断ツールを実行して、メモリをテストします。 コントロール パネルの検索ボックスに「Memory」と入力し、[コンピューターのメモリの問題を診断する] を選択します。テストの実行後、イベント ビューアーを使用して、システム ログの下に結果を表示します。 MemoryDiagnostics-Results エントリを探して、結果を表示します。
システムの製造元から提供されているハードウェア診断を実行してみることができます。
その他の一般的なトラブルシューティング情報については、バグ チェックのブルー スクリーン データの分析に関する記述を参照してください。
解説
ハードウェア認定の要件
ハードウェア デバイスが TDR を実装するときに満たす必要がある要件については、Device.Graphics…TDRResiliency にある WHCK のドキュメントを参照してください。