Q

Windowsがよく原因不明でハングアップします。しかも,ほとんどの場合キーボード上からCtrl+Alt+Delキーを押してもセキュリティ・ダイアログに切り替わらず,もうPCの電源を切るしかない状態になります。このようなときに何か原因を調査する方法はないのでしょうか?

A

Windows本体がハングアップしてしまうと調査用のコマンドやツールなどを実行することができず,原因を調査することは困難です。

 このような場合には,別のマシンからデバックを行うライブ・デバッグの実行が最善ですが,そのためにはあらかじめboot.iniにデバッグ用の設定をし,シリアル・ケーブルなどで別のPCを接続する必要があります。また,ライブ・デバッグのためにサービスを長時間停止させることが許されないこともあります。このような状況ならば,次善の策としてOSを強制クラッシュさせてメモリー・ダンプを作成し,後日このファイルを解析する方法を検討するとよいでしょう。


△ 図をクリックすると拡大されます
図1●レジストリを編集して値を追加するとキーボードからの強制クラッシュが可能になる

 強制クラッシュをさせてメモリー・ダンプを作成するには,(1)ライブ・デバッグ・セッションからcrashコマンドを実行する,(2)キーボードから特殊な入力をする,の2つの手段があります。ただし,どちらの手段でも,事前に設定が必要です。ここでは比較的簡単なキーボード入力による強制クラッシュの方法を説明します。

キーボードから強制ハングアップ
 Windows XP/2000の場合は,レジストリ・エディタ(regedt32,Windows XPではregeditでも可)を起動して
HKEY_LOCAL_MACHINE\System\CurrentControlSet
\Services\i8042prt\ParametersキーにCrashOnCtrlScrollというREG_DWORD値を追加し,その値を1(0x1)にします(図1)。その後,再起動するとキーボードからの強制クラッシュが可能になります。具体的には,右のCtrlキーを押しながらScroll Lockキーを2回押せば,システムがクラッシュします。左のCtrlキーを押してもシステムはクラッシュしません。

 この手段で強制クラッシュさせると,[*** STOP:0x000000E2(0x00000000,0x00000000,0x00000000,0x00000000)]というエラー・コードを表示したブルー・スクリーンになります。詳しくは,マイクロソフト社のサポート技術情報を参照してください(文書番号,JP244139)。

 なお,Windows NT 4.0でも日本で入手できるFar East版ならば同様の設定が可能ですが,手順が微妙に異なります。具体的には,修正するレジストリのキーが
HKEY_LOCAL_MACHINE\System\CurrentControlSet
\Services\i8042prt\CrashDumpに変わり,その中の値もDump1KeysとDump2Keyの2つが必要になります。値の型はいずれもREG_DWORDで値は前者が1(0x1),後者が0x7cになります。CrashDumpサブキーが存在しない場合は新たに作成する必要があります。

 また,再起動後のクラッシュ手順も,右のShiftキーを押しながらPrint Screenキーを2回押すように異なっています。NT 4.0を強制クラッシュさせた場合のブルー・スクリーンのメッセージは[*** STOP:0x0000FFFF(0x00000000,0x00000000,0x00000000,0x00000000)]となります。

ダンプで解決できるとは限らない
 取得したMEMORY.DMPファイルは,dumpchk.exeで破損がないことを確認し,サポート・ベンダーへ解析を依頼してください。dumpchk.exeは,Windows XP/2000では\support\toolsディレクトリからインストールするサポート・ツールの中に,NT 4.0ではCD-ROM中の\support\debug\i386フォルダの中にあります。

 ただし,このキーボード入力による強制クラッシュは,キーボード割り込みさえ受け付けないほど重度のハングアップ時には作用しません。そのため,100%成功するとは限らず,あくまでも証拠を残さず電源を切断するよりはまし,程度にとらえた方がいいでしょう。

小森博司