やまものブログ

メモ書きブログです (^_^;A

メモリのチェック

この半年くらいのあいだ、
 ● Android 開発環境(Eclipse)が JRE(Java Runtime Environment) の SIGSEGV で異常終了
 ● システム起動時に様々なエラーが発生(再起動が必要)
 ● Windows でもブルースクリーン発生
といった症状に悩まされて続けていました。


JRE の異常終了に関して調べると、メモリをチェックするようにとの情報を見つけたので、さっそく、memtest86+ で厳重にチェックしてみました。

自分のPC は CD/DVD からブートできるので、
http://www.memtest.org/#downiso
から ISOイメージをダウンロード、CD-R に焼いて、そこからブートする方法をとりました。

CD ブートすれば、何も聞かれずチェックが始まります。チェックは ESC キーで止めない限り、何度でも繰り返し実行されます。「Memtest86+」の使い方というサイトには、1回で安心しないで5回はチェックするようにとありました。

自分のPCはメモリ容量が 32GB で、これだと1回とおすのも一晩(6~8時間)かかります。ちなみに、容量 4GB のノートPCで試したら、一晩で 10回 Pass しました。メモリ容量にほぼ比例して所要時間が長くなるようです。

チェックの結果ですが、最初、平日の夜に1回とおして ”Pass:1”(エラー無し)でした。それで結構安心していたのですが、次の日にはなんと、、、
イメージ 1

こんな真っ赤かでおぞましい画面を拝むことに…

マザーボード、プロセッサ、メモリを同じ店で購入した自作PCなので、早速、購入店に持ち込んで試験をお願いしました。経過は以下のとおりでした。

6/13(土) メモリを持ち込む
 → PC店のマザーで一晩テストして問題なし

6/14(日) ボード、プロセッサも持ち込む
 → 一式を一晩テストして、Fail 再現!

6/15(月)~17(水) PC店が所有する同型のメモリ + 私のマザー+CPUでテスト
 → Pass:4(4回パス)

以上の結果から、PC店がメモリに問題ありと判定して、このテストで OKだった同型メモリと交換となりました。

PC店のエンジニアによると、メモリのエラーは電源が原因の場合もあるとのこと。自分が使っていた電源は5年前に購入したもので、それくらい経つと怪しいとのこと。ということで、6/14(日)に電源を購入しました。Corsair(コルセア) CX500M という製品です。ミドルクラスのグラボ搭載くらいまでなら対応できる製品で、価格・実績でおススメとのことでした。

メモリ、電源を交換した構成にて、6/19(金)の夜から37時間38分チェックし続けて "Pass:5"(5回OK)をようやく確認できました
イメージ 2


とりあえず、Android 開発環境(Eclipse)で SIGSEGV が発生していた操作を何度か繰り返してみましたが SIGSEGV は再現しませんでした。これからもっと使い込んで、問題が本当に解消されたのかどうかを確認したいと思います。

うんともすんとも動かないようなエラーなら分かりやすいのですが、一晩~数日テストしないと判明しないエラーは手強いです

JRE のようなユーザも多くて信頼度の高いはずアプリが SIGSEGV を起こすようなら、ハードウェアを疑うべし!
自分で書いた Cプログラムが SIGSEGV を出すのは嫌というほど経験していて、「SIGSEGV = ソフトのバグ」と思い込んでいたので、今回は目からウロコな経験でした


そういえば、昔、DELL のノートPC が原因不明のフリーズを起こして、何度、修理に出しても治らず、最後にはサポートが修理を拒否するという事態になったことがありました。その後、しばらくして、知人から聞いた話で、どういう経緯かは聞いていませんが、メモリを交換したらフリーズ問題が解消したらしいです。頻度の低い謎の現象にあたったら、まずメモリを疑うべきでしょうか。。。もちろん、電源、マザーボード、プロセッサ、ストレージが原因の可能性もあるわけですが。。。