ドナドナされるプログラマのメモ

Windows用アプリのプログラミングメモ

時々ブルースクリーンが起きる現象について:メモリエラーが原因か?

このところ、1週間に1回程度Windows10を使用中にブルースクリーンになってしまい困っていた。たちの悪いことに、表示されるエラーメッセージも発生元も毎回違っていて、KERNEL_SECURITY_CHECK_FAILUREだったり、PAGE_FAULT_IN_NONPAGED_AREAだったり。さらに、イベントビューアーでブルースクリーンを示すイベントを探しても見つからない。

しばらくはソフトの問題かなーと思いBIOSのアップデートを即座に適用してみたり、ドライバの更新有無をチェックしてみたりしていたけど全く改善せず。お手上げ状態となっていた。

しかし、ある時「どうもメモリ関係のエラーメッセージが多いな」と気づく。そこで、ためしにMemtest86をかけてみた。

f:id:donadonasan:20210310143747p:plain

Memtest-86の結果

・・・まじか。エラーだらけじゃん。殆どが0x0494で起きている。一方、1回だけ0x002eb01ac48で起きている。

いやまてよ、なんかおかしいぞ。左上にAMD Athlon 64なんて書いてあるぞ。こいつはRyzenなのに。L3キャッシュも表示されていない。もしかして、これソフトが古い・・?

ビンゴでした。まず、Memtest86はバージョン3.5以下では4GB以上のメモリテストにおいてエラーが出ることがあるそうです(リリースノートより)。こいつは3.2なので、思いっきり該当です。なので、新しいバージョンを入手してテストすることにしました。

なおMemtest86は諸般の事情で現在オープンソースではありません。営利企業に権利が売られ、有料化されています。無料版もありますが、最大4ループしかできません。一方、権利売却前のソフトの後継としてMemtest86+が開発されています。こちらもまあバグはあるけれど、テストはできる。

Memtest86+ - Advanced Memory Diagnostic Tool

そちらでテストをしてみた結果がこちら。

f:id:donadonasan:20210310144450p:plain

Memtest-86+の結果

一回だけ前回と同様の場所でエラーが起きているけど、大量にあった0x0494でのエラーはきれいに消えた。だがしかし、エラーはやはり起きているようだ。しかも、6ループさせて1回だけ検知される程度に稀なのが。1ループ中でも同じアドレスに何百回とアクセスしているはずなので、本当に稀なんだと思うがエラーはエラーだ。部品が劣化したのかなあ。

というわけで、32GBメモリを買ってきて交換した。

購入するにあたり設定したメモリの要件はこちら。

  • 16GB/枚のメモリ2枚セット
  • DDR4 3600MHzで動作可能
  • メモリ高さ35mm未満 (CPUクーラー「忍者五」仕様より)

f:id:donadonasan:20210310145250p:plain

SCYTHE 忍者 五 製品説明より

その結果選定したのが、CORSAIR VENGEANCE LPXシリーズのCMK32GX4M2D3600C18。ちなみに壊れたのは全く同じシリーズのCMK16GX4M2D3600C18。高さ制限のせいで、これしか選べなかった。なんか他のは、ゲーミング!な感じの無駄にフィンとかがついてるやつで、その無駄なフィンのせいで高さ制限をクリアできなかったのだ。見た目重視は滅んでくれ。

さて、交換結果である。BIOSでの認識・・・正常!

f:id:donadonasan:20210310145828p:plain

BIOSでの認識結果

Memtest86+を軽く走らせた結果も大丈夫。すくなくともニセモノではなさそうだ。その後8ループほどさせたけど、今の所エラーなし。しばらくこれで様子を見よう。

f:id:donadonasan:20210310150038p:plain

Memtest-86+を軽く走らせた結果