移転しました。

ブルースクリーンな一日


メインマシンのdynabook SX/190NRがついに真っ青になった。PC暦が1年くらいの人だとこの時点でこの世の終わりと思えるかもしれないけれど、一応プログラマとかやっている身なのでいろいろ頑張ってみた。
まずブルースクリーンに書いてある内容は、「エラーが見っかったからPC壊れないようにWindows止めたよ。初めてこのエラー画面みたんだったら、再起動してみて。それでもこの画面でるんだったら、下に書いた手順にしたがってね」みたいな感じで始まる。
なので、とりあえずは再起動をしてみたわけだが、残念ながら全く同じ画面だったので、ブルースクリーンを読み進めてみる。だらだらと書いてあるけれど、「ハードとかソフトを新しくちゃんと入れたんだったら、製造元に聞いてみれば?それでも問題あるんだったらセーフモードに入って消しちゃいなよ」という感じだ。
確かに、こういう場合はセーフモードで入れるかどうかが分かれ目な気がする。ということで、F8押しながら起動してセーフモードにログインしてみたら、ちゃんとWindowsが起動できた。とりあえず、この時点でファイルバックアップはとったけれど、Windowsの再インストールはしたくなかったので、原因究明をしてみることにした。
手始めにブルースクリーンで表示されていた「BAD_POOL_HEADER」が何であるか検索してみたところ、きままな日記帳: デバイスドライバ屋にとってのXP SP2というエントリに出会って読んでみるとなるほどな感じ。ただ、自分の場合はハードを追加していないので、何かしらのソフトがエラーになっているという感じだと考えた。
とりあえずデバイスマネージャを見てみたけれど、!になっているものは一つもなかったので、次にイベントビューアのシステムログを見てみたところ、それっぽいエラーは見当たらない。不良ブロックでdiskがエラーになっているのを見つけたので、chkdsk c: /F とかお決まりをやって修復してみたけれど、これは全く別問題だった様子。相変わらずブルースクリーンなので、面倒だけど、MEMORY.DMPファイルを見てみることにした。
MEMORY.DMPはブルースクリーンの最後にも書かれているけれど、その名の通りメモリ状態のダンプファイル。ただ、これが残念ながら単純なテキストファイルではなくバイナリなので、仕方なくDebugging Tools for Windowsを落としてきて読み込んでみた。
すると結構意外なファイルが原因っぽいことが判明した。

bafbba3c 8054d941 000000c2 00000007 00000cd4 nt!KeBugCheckEx+0x1b
bafbba8c a7ac5fc9 88c6c004 00000000 bafbbad0 nt!ExFreePool+0x697
bafbba9c a7ababfa 88c6c004 892e5a64 88c6c004 symidsco+0xffc9
bafbbad0 a7aba9e6 8922aa64 bafbbb48 bafbbb44 symidsco+0x4bfa
bafbbb28 a7ab8329 bafbbb48 bafbbb44 892e5a28 symidsco+0x49e6
bafbbb54 a7ab73b2 00000000 bafbbb7c 892e5a28 symidsco+0x2329
bafbbb74 a7ac5bb6 89643f00 89278148 00010000 symidsco+0x13b2
bafbbbac a8f67652 bafbbbc0 bafbbbf8 bafbbc5e symidsco+0xfbb6
bafbbbd4 a8f677f1 a7addfca bafbbc7c a7ac118b SYMIDS!SymIDSCoInterface_RegisterRequest+0x1222
bafbbbe0 a7ac118b bafbbbf8 89600128 e267540a SYMIDS!RegisterRequest+0x91
bafbbc7c 805a5f27 89600128 89137000 00000000 symidsco+0xb18b
bafbbd4c 805a61fc 00000858 00000001 00000000 nt!IoWMIOpenBlock+0xefd
bafbbd74 804e626b 00000858 00000000 89306518 nt!IoWMIOpenBlock+0x11d2
bafbbdac 8057f0f1 a7c30944 00000000 00000000 nt!ExQueueWorkItem+0x104
bafbbddc 804fa27a 804e6196 80000001 00000000 nt!PsCreateSystemThread+0x70
00000000 00000000 00000000 00000000 00000000 nt!KeInitializeTimer+0x107

symidsco?ってなことでsymidscoを調べてみると

start    end        module name
a7ab6000 a7ae7000   symidsco   (no symbols)           
Loaded symbol image file: symidsco.sys
Image path: \??\C:\PROGRA~1\COMMON~1\SYMANT~1\SymcData\IDS-DI~1\20070507.001\symidsco.sys
Image name: symidsco.sys
Timestamp:        Sat Jan 13 08:29:35 2007 (45A819DF)
CheckSum:         00032D38
ImageSize:        00031000
File version:     7.2.1.1
Product version:  7.2.1.0
File flags:       0 (Mask 4F)
File OS:          40000 NT Base
File type:        0.0 Unknown
File date:        00000000.00000000
Translations:     0409.04b0
CompanyName:      Symantec Corporation
ProductName:      Symantec Intrusion Detection
ProductVersion:   7.2
FileVersion:      7.2.1.1
FileDescription:  IDS Core Driver
LegalCopyright:   Copyright (c) 2006-2007 Symantec Corporation
LegalTrademarks:  Copyright (c) 2006-2007 Symantec Corporation

ということで、犯人はAntiVirusなのか?ということに。
そこで、セーフモードでAntiVirusのアンインストールを試みてみたら、ご丁寧に「セーフモードではアンインストールできません」とか言われた。何これ?八方塞?みたいな感じに5秒くらいなったけれど、どうせこのままだとWindows再インストールの道しかないので、symidsco.sysを別の場所に移動して読み込めないように嫌がらせをしてみた。
その後に再起動するとセーフモードでなくてもWindowsを起動することが出来るようになった。当然、AntiVirusは変なエラーダイアログを出していたけれど、即刻アンインストールして入れなおしたら、ちゃんと復活した。
結局のところは原因不明。とはいえ、元に戻ったので、めでたしめでたし。
今回いろいろ調べている最中に、Daemon Toolsをアンインストールしてもsptd.sys消さずにずっと起動するたびにエラってるとか、VMWare Serverをアンインストールしてもvmnet.sysとかvmnetadapter.sysとかは消さずに置いてきぼりにしてるとか、そういう関係のないこともわかった。


[追記]
後日、ハードディスクの物理エラーによってハードディスクを交換することになったので、たまたまディスクアクセスするNortonがエラーになってしまっていただけかもしれない。