2019年4月27日土曜日

Windows10 ブルースクリーン Kernel-Power ID41

PCを新しくしてから、たまにPCが落ちてブルースクリーンになります。

メーカーPCであれば修理を依頼できますが、当然ですが自作PCでは自分で解決する必要があります。まずは原因を突き止めないといけないのです。

普通のエラーはOSがPCを停止しないように頑張るのですが、ブルースクリーンはOSが防ぎ切れない場合に起きます。PCが停止してしまう最悪な状態なので、OSは極力発生しないような仕組みを持っていますが、デバイスドライバーなどハードウェアを制御するプログラムに不具合がある場合や、ハードウェア自体が故障している場合にも発生することがあります。
このエラーが起きるとWindowsでは全体が青い画面に白文字でエラーメッセージが表示されることから、ブルースクリーンと呼ばれています。

今回のエラーメッセージは以下のようなもの。

IRQL_NOT_LESS_OR_EQUAL

ブルースクリーンの写真を撮りたいのですが、すぐに再起動してしまう。

再起動後、イベントビューアのシステムノードには、レベル=重大/イベントID=41/ソース=Kernel-Powerのエラーログが記録されていました。
「システムは正常にシャットダウンする前に再起動しました。このエラーは、システムの応答の停止、クラッシュ、または予期しない電源の遮断により発生する可能性があります。」
その5秒程後にレベル=エラー/イベントID=1001/ソース=BugCheckのログもあります。
「このコンピューターはバグチェック後、再起動されました。バグチェック: ...。ダンプの保存先: C:\Windows\MEMORY.DMP。レポート ID: XXX...」
DMPファイルをWinDbgで見てみました。

IRQL_NOT_LESS_OR_EQUAL (a)
An attempt was made to access a pageable (or completely invalid) address at an
interrupt request level (IRQL) that is too high.  This is usually
caused by drivers using improper addresses.
If a kernel debugger is available get the stack backtrace.
Arguments:
Arg1: 0000000000000000, memory referenced
Arg2: 0000000000000002, IRQL
Arg3: 0000000000000000, bitfield :
 bit 0 : value 0 = read operation, 1 = write operation
 bit 3 : value 0 = not an execute operation, 1 = execute operation (only on chips which support this level of status)
Arg4: fffff8043e68b8b3, address which referenced memory

ハードウェア割込みが発生した際に、不正なメモリアドレスがアクセスされた(らしい)です。アドレス違反エラーというやつです。
適切でないデバイスドライバーを使用している場合によく起こると書いてあります。 もう少し下の方に、情報が出ています。

STACK_TEXT:
:
.... HDAudBus!HdaController::NotificationDpc+0x22d
:

スタックというのは、データが古いものから順に積み上げられる 格納方式のことですが、その中にHDAudBusというキーワードが。HighDefinitionAudioBusの略で、オーディオデバイスのドライバが疑われます。 確かにChromeで動画再生中にスリープにして、解除した直後に落ちることが多い気がします。 ということで、マザーボードメーカーMSIのサポートページからオーディオのドライバーをダウンロードしてインストールします。これで直るかな?

→ブルースクリーン再発

DPC_WATCHDOG_VIOLATION (133)
また違うエラーです。ハードウェアが一定時間応答しなかった場合に起きるエラーのようです。スリープ解除後にNETFLIX視聴中のchromeが起動している状態で、キーボードの音量ボタンをいじったらハングアップしてブルースクリーンになりました。

WinDbgの解析結果からエラーが発生したのはやはりchome.exeでモジュールはHDAudBus.sysというところはわかったのですが…。

スリープ時にKernel-Power ID=137のエラーが出ているので、こちらの問題から片づけないとダメなのかもしれません。
--
マザーボードのオーディオドライバはアップデートしたのですが、よく考えたら音声はディスプレイから出していました。ディスプレイの音声はディスプレイポートケーブルで送信されていて、Intel Display Audioドライバーで制御されていました。
このドライバはIntel Core-i9 9900Kに搭載のUHD Graphics 630というグラフィックスチップに含まれます。2019年4月18日にドライバの更新版がリリースされていたので適用してみました。
Intel Display Audioドライバーは更新されたのですが、さて今度は直ったかな?