いつの間にやらスリープから復帰すると数秒後に青画面(BSoD = Blue Screen of Dead)になるように。復元ポイントなどを使って調べてみるとWindows 8.1にUpdate1を入れた後に発生するようになった模様。
が、このBSoD、出た後に再起動するのみで何が起こったのかさっぱり不明。何か解析する方法がないのかと思ってたのですが、やっぱりありました。
まずは下準備。
- Blue Screen View をダウンロード、インストール
- Windows SDKインストーラ をダウンロード・実行。途中インストールする項目を選択できるので、Debugging Tools for Windowsを選択(他のも必要ならどうぞ)
- WinDbgのショートカットがスタートメニューにできるので、管理者権限で実行にチェックを入れておくと後で便利
- Windowsシンボルパッケージのダウンロード から使用しているWindows向けのものをダウンロード・インストール
- マイコンピュータのプロパティから環境変数_NT_SYMBOL_PATH=SRV*C:¥Symbols*http://msdl.microsoft.com/download/symbols を設定
解析手順
- Blue Screen Viewを実行。過去に発生したBSoDのリストが出る。調べたいものを探し出し、右の方にあるFull Path列の値を記録しておく
- WinDbgを管理者権限で起動。シンボル読み込みで1~2分かかる。Ctrl+Dでファイル選択になるので、先ほどのFull Pathで示されるファイルを選択(ここで管理者権限でないとファイルが開けない場合がある)
- 下のコマンドを打ち込む場所に!analyze -vと打ち込む。
- Arg1のメッセージからIRP(Interrupt Request Packet:割り込み要求パケット)の問題と分かる。引き続きコマンド!irp (Arg4の行にある16進数)を入力
- 行頭に>の付いている行近辺から、usbaudioがIRPに対して返答してないらしいと分かる
6: kd> !analyze -v ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* DRIVER_POWER_STATE_FAILURE (9f) A driver is causing an inconsistent power state. Arguments: Arg1: 0000000000000003, A device object has been blocking an Irp for too long a time Arg2: ffffe00071d81060, Physical Device Object of the stack Arg3: ffffd001a97db930, Functional Device Object of the stack Arg4: ffffe000722871a0, The blocked IRP (以下略)
6: kd> !irp ffffe000722871a0 Irp is active with 23 stacks 21 is current (= 0xffffe00072287810) No Mdl: No System Buffer: Thread 00000000: Irp stack trace. Pending has been returned cmd flg cl Device File Completion-Context (中略) >[ 16, 2] 0 1 ffffe00071de67c0 00000000 00000000-00000000 pending ¥Driver¥usbaudio Args: 00041100 00000001 00000001 00000002 [ 16, 2] 0 e1 ffffe00071d77060 00000000 fffff80371b302d8-ffffe00072611510 Success Error Cancel pending ¥Driver¥ksthunknt!PopRequestCompletion Args: 00041100 00000001 00000001 00000002
ネットで調べるとusbaudioは文字通りUSB接続のスピーカーなど音関係のUSB装置に関係するらしい。確かにUSBスピーカーは繋いでいるのですが、これのドライバは挿せば勝手にインストールされるもので作成者はMicrosoft。いくらなんでもMicrosoftがこんなへまするとは考えづらい。
なんにしろUSB関連が臭いということでUSB装置を抜き挿ししてスリープを実行、Lenovo Multimedia Remote with Keyboard N5902という無線キーボードの通信に使うUSBモジュールを抜くとスリープ復帰後も落ちないことが分かりました。この無線キーボード、あまり使ってないのでこの際取り外しましょう。
[参考]
- ブルースクリーンで強制終了した原因を解析して教えてくれるフリーソフト「BlueScreenView」(Gigazine)
- WinDbg (Windows Debugger) の使用方法 (Crystal-Creation)
- Bugcheck: DRIVER_POWER_STATE_FAILURE (9f) (Geek Stuff)
[2014/5/12 追記]原因はオンボードのRealtek High Definition audioの録音モニタ出力(録音中の音をスピーカーに出力する)にUSBスピーカーを設定していた可能性が高いです。現在モニタ出力先を規定のデバイスに変更して様子見中。日立ICカードリーダ は相変わらず繋ぐとスリープ明けにBSoD出ます。
Comments