treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

イベントビューアに「プログラム explorer.exe バージョン 6.3.9600.17039 は Windows との対話を停止し、終了しました。」

こんなエラーが出て、デスクトップが反応しなくなるトラブルシューティングをご報告します。

正確には画面上に表題のようなエラーメッセージが表示されるわけではありません。画面上では後述する「症状」欄に記載した不具合の動きが確認できます。
このエラーはイベントビューアのアプリケーションビューに表示されます。
イベントビューアに記録されるイベントログの全文です。
----------------------------------------------
プログラム explorer.exe バージョン 6.3.9600.17039 は Windows との対話を停止し、終了しました。問題に関する詳細な情報があるかどうかを確認するには、アクション センター コントロール パネルで、問題の履歴をクリックしてください。
 プロセス ID: 1048
 開始時刻: 01cf8e8769b8fcc5
 終了時刻: 0
 アプリケーション パス: C:\Windows\explorer.exe
 レポート ID: 6ac2b7b4-fa7b-11e3-bf54-f0def18033d5
 障害が発生しているパッケージのフル ネーム:
 障害が発生しているパッケージに関連するアプリケーション ID:
----------------------------------------------

例によってThinkPad限定になってしまいますが、以下の環境です。

■環境1
機種:ThinkPad T420s
OS:Windows8からアップグレード(アップデート)したWindows8.1
OSEdition:Professional 64bitEdition
省電力マネージャー    6.32
Lenovo Power Management Driver    1.66.00.22

■環境2
機種:ThinkPad T420s
OS:Windows 8.1 Enterprise 評価版のクリーンインストール
OSEdition:Enterprise 64bitEdition
省電力マネージャー    6.63.1
ThinkPad Power Management Driver    1.61.00.11

なお、同じWindows8.1でも以下の条件では発生しません。
機種:ThinkPadX60
OS:Windows 8.1 Enterprise 評価版のクリーンインストール
OSEdition:Enterprise 32bitEdition
省電力マネージャー    6.64.4
Lenovo省電力ドライバー    1.67.04.05

いきなりThinkVantageツールである省電力マネージャの名称とバージョンが記載してあるのは…そうです、お察しください。


症状:
目に見える症状としてタスクバーやスタートメニューが反応しない状態に陥ります。(この時はタスクバーにピン止めしたアイコンも常駐アイコンも使用不可能。)またデスクトップ上を右クリックして新規作成を選択し、新しいフォルダや新しいファイルを作成しようとするとデスクトップが固まる(or砂時計)となり操作を受け付けなくなるという不具合もあります。
画面がフラッシュして(このフラッシュでタスクバーもデスクトップ上のアイコンも一瞬画面から消えて壁紙だけになったあと)タスクバーとデスクトップ上のアイコンが再描画されることによって操作が復旧し、スタートメニューやタスクバーが(タスクバーにピン止めしたアイコンも常駐アイコンも)使用可能になります。
バックグランドでexplorerプロセスが再起動されているようでイベントビューアに前出のAppHangイベントが記録されます。
SSD製品でよく発生するプチフリと見間違う動作だが、砂時計は動作しており、完全なプチフリとは動きが異なります。(完全なプチフリってなんだよ…。)

explorerプロセスが再起動されない場合もあります。この場合GUIが復旧しないので、ずっとデスクトップやタスクバーが反応しない状態に陥ってしまいます。そこでCtrl+Alt+Delキーでタスクマネージャを起動し、プロセス(か詳細タブ)からexplorer.exeを強制終了(タスクの終了)を実行(このタイミングでGUIは使えなくなる)したのち、タスクマネージャのメニューバー「ファイル」から「新しいタスクの実行」で開く欄に「explorer.exe」を入力してEnter(ないしOKボタンクリック)することでタスクバーもデスクトップも再度利用可能になります。
ちなみにタスクバーが反応なしになったタイミングでWindowsキーを軽く連打すると(つまりモダンUIのスタートメニューを表示させようとキーバッファを重ねることで)上記手動で実行しているexplorer.exeの再起動が走る傾向にあります。

この(簡単にいうとexplorer.exeを手動で強制終了させ手動で起動し直す、という動作をする)症状が発生する都度、実施することでデスクトップを復帰させている場合、ここに記述されている内容が役立つかもしれません。

(急いでいる方向けの)結論:
省電力マネージャのバッテリ表示がタスクバーに表示されているときにこのexplorerプロセスが再起動(およびイベントビューワでのエラー)が発生すると考えられます。

f:id:treedown:20150804024023p:plain
なぜなら、タスクバーに表示させていたバッテリ残量表示を表示しないように設定変更したところこの症状が収まったからです。
なので省電力マネージャ画面から「オプション」タブで画面を開き、「省電力メーターをタスクバーに表示する」のチェックボックスをOFFにします。

f:id:treedown:20150804023929p:plain

これで半年程度試したところexplorer.exe強制終了の問題やイベントビューアに記録されるエラーイベントは発生しなくなりました。(当然バッテリ残量表示をタスクバーに表示させることでこの不具合は再現します。)
バッテリメーターはWindows標準の”電源”で代替します。

以前にWindows7で利用しているときにも同様の症状が発生していました。(この時の機種はThinkPad T410でOSはプリインストールのWindows7Professionalを利用している環境でした。ただ、その時には(私が保有している環境ではなかったため)記録した環境情報がありません。Windows7でも発生する環境はあるんだ、と思っていただければ。

内容についての関連技術:
省電力マネージャは以前のバージョンで「.NET Framework2.0以上のインストールが必須」と明記されていました。最近のバージョンのreadmeにはこの条件の記載がありません。OSに組み込まれているから条件として記載されていないのか、はたまた.NET Framework自体が不要となったのかは不明です。
省電力マネージャのインストールの際、同時にMicrosoft Visual C++がインストールされます。Microsoft Visual C++も動作に関係しているようです。
各々のインストール状況について、参考までに記載しておきます。
■環境1
Microsoft Visual C++ 2005 Redistributable    8.0.61001
Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.17
Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.6161
Microsoft Visual C++ 2010  x64 Redistributable - 10.0.30319
Microsoft Visual C++ 2010  x86 Redistributable - 10.0.30319
Microsoft Visual C++ 2012 Redistributable (x86) - 11.0.50727.1
.NET Frameworkはバージョン表記がないのでおそらくOS標準の状態
■環境2
Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.17    
Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.6161    
Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.17    
Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.6161    
Microsoft .NET Framework 4.5.1    4.5.50938
Microsoft .NET Framework 4.5.1 (日本語)    4.5.50938
※.NET Framework3.5が同時にインストールされていたかどうかは不明です。

インストール日付から推測するところでは、
環境1の「Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.17」が「省電力マネージャー」インストール時に同時インストールされたと思われます。環境2では「Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.17」もしくは「Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.17」のいずれかが同時インストールされたと思われます。
なお問題が発生していないX60でも「Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.17」がインストールされています。
※バージョンはすべて同じですね。
参考までに「省電力マネージャー    6.64.4」にバージョンアップしたとしても「Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.17」が(上書き?)インストールされているように見受けられます。(インストール日時が同一)
と、このようにMicrosoft Visual C++ 2008は省電力マネージャと無関係ではない、ということが考えられます。

このexplorer.exeのハングと省電力マネージャが関連しているのではないかと思ったきっかけは省電力マネージャを何かのエラーのタイミングで常駐解除して利用したところ、プチフリと見間違うかのような動作が一切起きなかったことから、切り分けのために常駐解除した状態でしばらく利用して経過観察し始めたことが発端です。

実際に実行した対処:
(1)最新バージョンへの更新を試す。
Lenovo Power Management Driverを1.67.09.03へ、省電力マネージャーを6.64.4(いずれも当時の最新バージョン)へバージョンアップしました。
UIはほのかに変わりましたが、症状は改善しませんでした。

(2)Visual C++ 2008 SP1のインストール
Microsoft Visual C++ 2008 Service Pack 1 再頒布可能パッケージのセキュリティ更新プログラム (2009 年 7 月 28 日) について 」(URL:https://support.microsoft.com/ja-jp/kb/973552)の文書を読んで、Microsoft Visual C++ 2008に疑いを持ったので、ダウンロードセンターからダウンロード(vcredist_x64.exe)してインストール実行。
Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.4148
がアプリケーションの追加と削除に新たに追加されるも症状に改善なし。
他にもFixITでもないかと探すも、まったくなし。そもそも"explorer.exeのAppHang"に対する情報が少ないのが否めない。

(3)省電力マネージャのバッテリメーターの表示を諦める
で、最終的にこれを諦めてタスクバー表示を解除するとexplorer.exeのハングは無くなりました。

この動作の応用について考察します。
おそらくタスクバーに表示されているプログラムがハングアップしているのですが、親プロセスであるexplorer.exeを巻き添えにしてハングしてしまうために原因がつかみにくい症状となってしまいます。つまりexplorer.exeがハングした、という情報しか表面上は出てこないため何が悪いのか、の根本が掴めないことが難解にさせている一因です。

例えば言語バーをタスクバーに表示させている状態でMS IMEがハングアップしていると、タスクバーが応答しなくなりexplorer.exeが最終的にハングします。(数か月前のWindows UpdateでKB3033889を適用した際の不具合でこの症状が発生しました。)
おそらく、タスクバー常駐がハングアップするとタスクバープログラムもそのハングした常駐プログラムのタイムアウト待ちとなって、ハングしたようになるか、タイムアウトして実際にハングと判断して強制終了していると考えられます。
私はガジェットは使いませんが、ガジェットでも同様の症状は起きるかもしれません。

まったくもって理解に苦しむのが、同様の環境にあるはずのX60です。こちらでは全くハングも起きなければエラーの一つも起きません。(いやそっちの方が嬉しいのは否定しません。)古いハードウェアだと起きないよ、ということなんでしょうか?もしくはT420sだけに発生する事象なのでしょうかね?

と、ここまでが、半年前に対処して半年経過した状況です。
ここから先が最近の情報です。
Windows Updateのオプション更新に「Lenovo-Other hardware-Lenovo PM Device」のバージョン「1.67.10.17」が選択できるようになっています。
試しに、環境2「省電力マネージャー6.64.4」の環境に適用してみました。
結果、explorer.exeのハングは1回発生することが分かりました。やっぱダメだった。
でも、以前よりexplorer.exeの強制終了から起動のスピードは速くなったので最初は気づきませんでした。(あれ一瞬砂時計が見えたな、くらいの体感)
結局ThinkPadT420sでexplorer.exeのハングを発生させないためには引き続き省電力マネージャのバッテリメーターの表示を諦めるしかないようです。
ただし電源管理から見れますし、通知領域に表示されるWindows8.1標準の「電源アイコン」はこの問題の影響を受けないので、通知領域アイコンの"電源"を常に表示するようにしてマウスでポイントすればバッテリ残量は確認できます。これで代替するしかないです。


同様のエラーが発生する方は、いちどタスクバー上の常駐プログラムとデスクトップ上のガジェットを確認されることをお勧めします。
エラーメッセージが表示されない不具合は調査・解決策の模索が難しいですよね。