0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ブルースクリーンとは結局なんなのか?

Posted at

Windows で急に表示される青いやつを見たことありますか?
それは、ブルースクリーンかもしれません。

一般的にブルースクリーンと呼ばれる事象の正式名称は、Blue Screen of Death (BSoD) になります。これが発生すると、Windows OS は、現在実行中の処理を全て停止し、メモリダンプ関連の設定がされていれば、メモリダンプ作成に必要な処理が完了後に自動再起動します。なお、自動再起動がデフォルト設定なだけで、再起動せずにブルースクリーンの画面で停止させることは可能です。

今回は、みんな聞いたことあるけど、よくわからないブルースクリーンとは、なんなのか書いていこうと思います。

たまに青い背景の画面をすべてブルースクリーンと認識している人がいますが、それは間違いなので注意が必要です。例えば、Windows 回復環境(Windows RE)をブルースクリーンという人いますが、これはブルースクリーンではなく、青い背景の画面です。
winre.png

ブルースクリーンの見た目

nmi.png

デバイスに問題が発生したという表示がされ、停止コードの表示されるのが、ブルースクリーンになります。

このスクリーンショットでは、停止コードが、NMI HARDWARE FAILURE となっていますが、停止コードには様々な種類があり、停止コードからどのような問題が発生しているか推察が可能です。どのような停止コードがあるのかは、Microsoft の Web サイトで公開されています。停止コードとバグ チェック コードは、同じ意味と考えて大丈夫です。

バグ チェック コード リファレンス - Windows drivers | Microsoft Learn
https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-code-reference2

ちなみにブルースクリーン画面に表示されている QR コードを読み取ると Microsoft の Web サイトへアクセスできますが、その Web サイトには、発生したブルースクリーンの原因についての有益な情報は見つかりません。

ブルースクリーンっていつ起きるの?

Windows OS 上で、実行されているドライバーが、KeBugCheckEx 関数 を実行するとブルースクリーンは発生します。

つまり、ブルースクリーンは、勝手に起きているのではなく、いずれかのドライバーにより意図的に起こされているということになります。

KeBugCheckEx 関数 を使用することにより、ドライバー開発者は、システムの停止以外に回復不可能な問題を検知したときにブルースクリーンを発生させ、OS 再起動によって問題を解決することが可能になります。

KeBugCheckEx 関数は、公開されている関数なので、Microsoft 以外が開発した Windows 用のドライバーも KeBugCheckEx 関数を使用してブルースクリーンを発生させられます。

ブルースクリーンを起こす方法

KeBugCheckEx 関数を実行するドライバーを開発する、または、KeBugCheckEx 関数が実行されるような操作をすれば、ブルースクリーンは簡単に起こすことができます。

キーボード操作等により、ブルースクリーンを発生させる方法は、以下の Web サイトに書いていますので、一読してみてください。

ブルースクリーンの強制実行 | Microsoft Japan Windows Technology Support Blog
https://jpwinsup.github.io/blog/2021/02/15/Performance/Hang_BSOD/ForcingSystemCrash/

また、Microsoft が公式でブルースクリーンを発生させられるツールを公開しているので、このツールからもブルースクリーンを発生させることもできます。

NotMyFault - Sysinternals | Microsoft Learn
https://learn.microsoft.com/en-us/sysinternals/downloads/notmyfault

ブルースクリーンが起きたら

ブルースクリーンの原因を調査したいのであれば、ブルースクリーン発生時に生成されるメモリダンプ(MEMORY.DMP)を解析する必要があります。

メモリダンプは、OS の初期設定だとブルースクリーンが発生した状況によって出力されない場合があります。メモリダンプを解析したい場合には、完全メモリダンプが出力されるように設定の変更を行っておくといいです。

完全メモリ ダンプの出力設定 | Microsoft Japan Windows Technology Support Blog
https://jpwinsup.github.io/blog/2021/02/15/Performance/Hang_BSOD/MemoryDump/

Microsoft は、WinDbg というメモリダンプを解析できるツールを公開しているので、そちらのツールを使用して、ブルースクリーンの原因調査が可能です。ただ、すべてのブルースクリーンの原因がメモリダンプを解析すれば、特定できるとは限りません。

WinDbg のインストール方法等を知りたい方は、過去に投稿したこちらを確認してみてください。

さいごに

ブルースクリーン = PC が壊れたというわけではないですが、なんらかの異常が発生したことは確かです。ただ、1回起きただけで、頻繁に発生しているわけではなければ、特に気にする必要はないかと私は考えています。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?