対象:
コマンドプロンプト
状況:
リサイズや最小化はできるが、終了やコマンドの入力はできない。
タスクマネージャーにはcmd.exeが表示されない。
ProcessExplorerでウィンドウからプロセスを特定しようとすると"Unable to find the windows's owning process in the current process list"のエラーが発生する。
ログアウトしようとしてもログアウトできない。
発生時の状況:
telnetで3回程度、接続→タイムアウトによる切断を繰り返した
確認してみましたが、タスクマネージャのところのプロセスのほうに CMD.EXE というのが ありましたが、プロセスのほうに CMD.EXE というのが 表示されないのでしょうか?
情報ありがとうございます。
実行してみましたが対象のウィンドウが終了せず、windowsのシャットダウンダイアログが出てしまいました。
残念です。
1.「全ユーザーのプロセスを表示する」にチェックをしてみるとどうか?
2.telnet.exeがプロセスに含まれていないか?
3.userdumpを試してみる。
http://www.microsoft.com/downloads/details.aspx?FamilyID=e089ca4...
userdump -pや、userdump -g で確認
4.ネットワークアプリケーションで、接続が繋がったままぽかったら、
netstat -b -o
とかで、確認してみる。
などは、どうでしょうか?
回答ありがとうございます。各項目をチェックしてみました。
1.チェックしています
2.含まれていません
3.
userdump -g
There are no applications which appear hang.
userdump -p
(cmd.exeやtelnet.exeは存在しませんでした)
4.接続は切れています。-bオプションには対応していませんでした。
ありがとうございます。さっそくやってみました。
cmd.exeもtelnet.exeも見つかりませんでした。
2度目です。
プロセスの実行ファイル名が変わっている可能性があるのかなと思います。
Winspector というツールで以下の手順ではどうでしょうか?
1.インストール後、起動
2.マウスを当てると、その部分のウィンドウハンドルのクラスが
quickinfoという部分に表示されるので、該当のウィンドウに当ててみて、クラス名を覚えておく。
cmdとかだと普通、ConsoleWindowClass
3.editメニューの「Find winodw by class」、
クラス名を入力。Findで検索
一覧で、表示される。(日本語は化けるので、???)
4.一覧の部分を右クリックで、「Show propaties for this windows」で、Owner exeを見る。
5.Owner exeで示されているexeファイルを再度、タスクマネージャー等で終了を試行
Winspectorいいですね。やってみました。
ConsoleWindowClassでしたが"Owner exe"の項目は空欄で、プロセスの特定が出来ませんでした。他の項目としては
ID:0
Properties : (none)
Class specific : Window is Ansi
こんな感じでした。
ウィンドウの機能の一部(リサイズや最小化)が機能することから、ウィンドウプロシージャが完全に死んでいるわけではないと思われます。
該当ウィンドウにフォーカスを移した状態でキーを連打したり(入力はできないでしょうけれども)、ウィンドウの上でマウスを素早く動かしたりすることで該当プロセスのCPUタイムが一時的に増加するのがProcessExplorerで確認できないでしょうか?
たしかに確認できそうですね。
試しにやってみました。
クリック連打やリターン連打や上下スクロールなどやってみましたが変化するプロセスは見つかりませんでした。
試しにCMD.exeを立ち上げて同じ事をしましたがCPUタイムはなかなか秒単位で増えませんでしたので、タスクマネージャでの確認は困難なように思えます。
■(追記)
ProcessExplorerのWindowTitleの項目を表示させて「コマンドプロンプト」がタイトルになっているウィンドウを探しましたが見つかりませんでした。ウィンドウマネージャに登録された状態でプロセスだけ終了している? 謎な状態です。
プロセスのリストにcmd.exeは表示されない状態です。
「発生時の状況」に書いてあることは「再現方法」ではありません。紛らわしくてすみません。