質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Q&A

3回答

9088閲覧

OSハングアップの判定について

mats

総合スコア32

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

0グッド

0クリップ

投稿2016/11/08 11:57

WindowsのMemory.dmpで強制ダンプを取得した際
そのOSが本当にハングアップしていたかどのように
判断すればよいでしょうか。
プロセスダンプであれば複数回取得して、スタックなど
の処理が進んでいるか見ればいいと思うのですが。

最近ハングアップ時のMemory.dmpを貰うのですが
本当にOSが動かなかった状態で取得したのか、ヒアリングしても
はっきりせずあまり信用ができません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

マイクロソフトのデバッグツールを使って判断が良いのでは?
WDK、WinDbg、関連ツールのダウンロード
これをインストールします。(各Windows毎にあります)
’スタートメニューの[すべてのプログラム]-[Windows Kits]-[Debugging Tools for Windows(x86)]-[WinDbg(x86)]を起動します。’(x86の例)
ファイルメニューから'memory.dmp'を読み込むと様々な情報がでますので。
詳しくはツールのヘルプなどで確認して下さい。

投稿2016/11/08 13:09

編集2016/11/08 13:59
MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

システム ハングは大抵の場合、複数のスレッドが関連して起こします。
そしてそのハング現象に関連するスレッドは、複数のプロセスにまたがっていることが多々あります。
もちろん単体のプロセスで起きることもありますが、私が経験した限りでは、複数のプロセスでのスレッド間でのデッドロックが一番多いです。
このためハング現象をダンプ解析から調査する場合は、現象発生時の完全メモリ ダンプを採取されることをお勧めします。
ハング時のダンプ採取はターゲット システムの H/W にも依存しますが、一般的にはキーボード クラッシュが一番手っ取り早いと思います。
("Windows", "完全メモリ ダンプ", "キーボード クラッシュ" でググれば、設定および採取方法の手順が色々と出てきます。)

完全メモリ ダンプが採取できたら WinDBG (あるいは Visual Studio 2015 とかでもいけど) でダンプ ファイルを開きます。
で、とりあえず "!analyze -hung" コマンド実行して、ERESOURCE の Lock でハングが起きているのかを確認します。
ここで排他アクセスの Lock が検出された場合、"!locks" コマンドで該当スレッド (必ず2つ以上のスレッドが存在するはず) の関係を調べ、"!thread" コマンドでそれぞれのスレッド状態の詳細を確認します。

"!analyze -hung" コマンドでそれらし問題が検出されなかった場合は、"!cpuinfo" コマンドで CPU の数をチェックし、"~<CPU No.>" コマンドと "!thread" コマンドで、各 CPU 上で実行中のスレッドの状態を確認します。
このとき、"!thread" コマンド出力での "UserTime", "KernelTime", "Ticks" のいずれかの値が際立って高ければ、そのスレッドが影響している可能性が高いので、LPC (Local Procedure Call) 等が関連していないか確認します。

上記2つの調査でもそれらしい問題点が見つからない場合は、"!process 0 1f" コマンドで全スレッドの詳細情報を確認します。
なおこのコマンドの実行はとても時間がかかり出力行数もとても長いので、あらかじめ ".logopen" コマンドでファイル出力させる設定を行っておくことをお勧めします。
全スレッドの詳細情報が取得できたら、先と同じように、"UserTime", "KernelTime", "Ticks" のいずれかの値が際立って高いスレッドが存在していいないか、確認していきます。

それでも見つからない場合は。。。ケース バイ ケースになってしまうので、実際にそのダンプが手元にないと説明できません。

とにかくハング現象のダンプ解析は BSOD のダンプ解析に比べ、「格段に」面倒です。
(でも場数を踏むと、段々楽しくなる!!)
なので、可能であるなら WPA (Windows Performance Analyzer) 等のツールを使った調査を検討されることをお勧めします。

投稿2016/11/10 07:23

Bego

総合スコア69

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Memory.dmp を WinDbg 使って解析しましょう。

詳細な解析には様々な知識が必要になりますが、とりあえず「!analyze -v-hang」コマンドを実行すれば、よくあるハングアップパターンなら自動解析しハングアップの原因を表示してくれます。

WinDbgの使い方

Windowsダンプの極意 エラーが発生したら、まずダンプ解析!

投稿2016/11/08 13:47

KenjiToriumi

総合スコア344

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問