ライトブログ

主にコンピュータテクノロジーやガジェットツール、商品レビュー、
簿記や経営などを柱として書いていきます。
(このブログは画像を除きリンクフリーです。)

ブログの中身はライトではありません。
(むしろヘビーかも・・・?)


テーマ:
とってもとっても今月忙しくて、ブログの更新ができませんでした。
今日になってやっと、仕事にも一段落がついたので、今抱えているPC問題について
書こうと思います。

所属しているある団体の部屋にASX5812-A52というデスクトップPCがある。
個人所有している同社製のネットブック Aspire one AOA150-Bb
と同じ、ACER社のPCだ。AOA150-Bbといえば、これまでDownscalingsupported
関連の話で幾度となくブログネタを提供してくれたPCだが、今度はデスクトップ機
で問題が発生したようだ。

事の発端は活動をしているときに、突然ブルースクリーンになって再起動した
瞬間を見たことから始まる。ただWordで作業をしていただけで、何も負荷の
かかることはしていないという。
再起動してしまって何のエラーか分からないので、毎度お決まりのBlueScreenView
で詳細を調べることに。
すると、これまでに20回以上ブルースクリーンが出ていると判明。
なんだこれは。。しばらく唖然としてしまった。
気を取り直して、調査を進めると、
ラーコードは0x00000124。問題の原因となっているファイルは、hal.dllと
ntoskrnl.exeの2つ
であることが分かった。

通常のブルースクリーンと違い、何のエラーかを示す文章が出ないタイプの
ブルースクリーンであるため、問題解決には難航が予想される。
さらに、エラーの原因のファイルに、hal.dllが入っているので、可能性としては、
ハードウェアレベルでの問題も考えられる。そうなってしまっては最強ツールの
リカバリでさえ太刀打ちできないだろう。仮に直ったとしてもまた障害が起きる
可能性はある。
それでは直したことにはならない。

さて、自論はこのくらいにして、今回のエラーについて考えてみることにしよう。

0x00000124(以下 0x124)で検索していると、様々な情報が出てくる。
また、非常にマイナーなエラーらしく、日本語のページは数少ない。
ここからは、このエラーについて調査した結果を載せたいと思う。

調査結果1
0x124は、別名、WHEA_UNCORRECTABLE_ERRORと呼ばれるエラーで、
致命的なハードウェアエラーが発生したことを示している。
このエラーは、WHEAによって提供されるエラーデータを使用して表示している。
なお、第1パラメータの内容によって、エラーの原因は変わる。
今回のエラーの第1パラメータの内容は、0x0なので、エラーの原因は
マシンチェック例外と判断
される。
もう「致命的」って単語が出た時点でやばそうな雰囲気ですね。

<WHEAとは>
WHEA(Windows Hardware Error Architecture :Windowsハードウェアエラー
アーキテクチャ)
Windows Vistaから導入されたWindowsのハードウェアのエラー
検出システム。

WHEAは、CPUからハードウェアエラーを検出した報告を受けると、ログに
記録する。この記録されるログのことを、WHEA-Loggerと呼び、WHEAは
ログに記録がされたことを認知すると、システムを停止(ブルースクリーン)する。

<マシンチェック例外(Machine Check Exception)とは>
CPUがハードウェアにある回復不能なエラーを検出した場合に、
Windowsがシステムを保護し、安全のためにシステムを停止させる機能のこと。
マシンチェック例外は、基本的にOCや、不安定な電源環境、
冷却不足、ハードウェア故障で発生するエラーと見られる。



↑英語のサイトとかを読んだ感じは、こういうことなのかなと思います。
WHEAについてはハードウェア設計者用のツールキットに説明があるので、
それのほうが詳しく載っていると思われます(英語)


調査結果2
WHEAを調べていると、イベントビューアで詳細が見られることが判明。
システムに何らかのイベントが生じると、それはすべて管理ツールの
イベントビューアに記録されるので、そこから問題解決への糸口が見えるのでは
と推測。イベントビューアを見ることに。
イベントビューアを開いて、システムログの中から、「重大」と「エラー」に
分類されているイベントのみを抽出して表示させてみると、100件を超えるほどの
イベントが表示される結果に。
ほんとに抽出したの?って言いたくなるくらい多い。
抽出したデータを眺めていると、あったあった。
---------------------
WHEA-Logger 
致命的なハードウェアエラーが発生しました。
コンポーネントによる報告:プロセッサコア
エラーソース:マシンチェック例外
エラーの種類:バス/相互接続エラー
---------------------

コンポーネントによる報告がプロセッサコアとなっているので、一瞬、CPUを
疑いましたが、CPUが壊れるということは熱暴走以外なかなか考えられない
思うので保留。

気になるのは、バス/相互接続エラーというもの。
これはどれだけ検索をかけても良い情報が見当たらない。
文字だけを見ていると、コンピュータ内部のバスの、相互接続
(各ハードウェアの相互の接続)にエラーが生じている
ことになる。
しかし、バスが内部バスなのか外部バスなのかも分からないし、
各ハードウェアってどのハードウェアを指すのかも分からない
ので、
特定はかなり難しいと見られる。


調査結果3
ここからは、障害を引き起こしているとみられるhal.dllとntoskrnl.exe
2つのファイルは、それぞれ何なのかについて考えてみる。
まず、hal.dllについて
halとは、Hardware Abstraction Layer:ハードウェア抽象化レイヤと呼ばれる
もので、元々はOSを様々なPCにインストールできるように、それぞれのPCの
ハードウェアのプラットフォームの差を吸収できるようにするための機能
とみられる。
図で説明すると、以下のようになる。

ここに、PC1とPC2の2つのパソコンがあるとする。一番下のハードウェアの
部分を見ると、PC1は凸があるが、PC2は凹になっていることが分かると思う。
説明においては、これをハードウェアのプラットフォームの差とする。
halがなければ、OSは各ハードウェアごとにシステムコードを変えなければ動作
できない問題が発生する。

Windowsが考案された時の目標として、高度な移植性の確保が挙げられた。
当時は、パソコンにはそのパソコン専用のOSが組み込まれており、それは他の
PCでは動作しないというデメリットを持っていた。しかし、それではハードウェア
の進化にも追いつけないし、管理の煩雑化というデメリットが生まれてしまう。
そこで、halを作り、各ハードウェアのプラットフォームごとの差を吸収し、OSが
各ハードウェアのプラットフォームに共通の機能を提供していけるようにすることで、
移植性を高めようとしたのだ。このときhalは、いわばクッション材の役割を果たし、
ハードウェアとソフトウェア(OS)のかけ橋となる。

Windowsにおけるhal.dllは、ハードウェア抽象化のほかに、I/Oインタフェース、
割り込み処理、プロセッサの通信システム、電源管理など、Windowsが正常に
動くために必要な最低限のインタフェースを提供する仕事
をしている。


ntoskrnl.exeについて
ntoskrnl.exeとは、NTOSのカーネル機能を提供する超重要なWindowsの
基幹ファイルで、メモリ管理、プロセス管理、カーネルの管理などを担当
している。
NTOSとは、現在の主流となっているOS(Windows2000、XP、Vista、7、8)
に共通的に用いられているOSの設計方法で高度な安定性を持っているOSを指す。
NTの意味については、諸説あるので、省略する。


さらに、イベントビューアを見ると、ntoskrnl.exeが原因でブルースクリーンに
なるときには、その直前にKP41病が発生していることが分かった。
<KP41病とは>
正式名は、Kernel-Power 41エラー。現在でも具体的な原因が分かって
いない大きな問題の一つ。
メモリの電圧が低く、正常に電力供給がされて
いないために発生するというものが通説だが、それは基本的に自作PCで
OCをやっている人でなければ発生しない問題と言える。また、過剰な負荷が
かかったときに発生すると言われているが、冒頭で述べたとおり、Wordで
作業をしていた
だけなので、負荷による障害は考えにくい。

さらに、hal.dllとntoskrnl.exeは、ともに依存し合っている性質(リンク)がある。
hal.dllやntoskrnl.exeなど、Windowsの重要なシステムファイルは、関数を
使って、システムの動作を行っている。(関数と言っても、Excelは関係ない)
その中で、ハードウェアとOSのかけ橋であるhal.dllと、基礎的なOSの機能
(カーネル)を提供するntoskrnl.exeは、とても似た関係にある。
これをかなり簡単に説明すると、以下のような図になる。
なお、図の上のほうが権限は上になる。(例えば、OSはそれ以下の
ntoskrnl.exeとhal.dllとハードウェアを管理する権限を持つ)

この図を見ると、ntoskrl.exeとhal.dllは、OSによって提供されるファイルの中でも、
ハードウェアに近い部分で働くファイル
であるのだ。

PCは、私たちユーザーの入力により、OSを通り、ハードウェアで処理を行い、
またOSを通ってユーザーが見える形(ディスプレイへの表示など)で出力を
するのである。
これに先ほどの関数の話を入れると、ntoskrnl.exeは、それより上位の
プログラムからの命令を受け、ハードウェアで処理を行わせるために、hal.dllに
リンクをする。また、ハードウェアからの処理結果を返すために、hal.dllは上位の
ntoskrnl.exeにリンクをする。このリンクは、hal.dllとntoskrnl.exeに共通の関数が
あるために発生する。


さて、ここまで様々な角度からこのエラーを読み解いてきたが、
原因はいまだに分からない。ただ、問題の全体像は以下のようになるのではと
思われる。

問題1.マシンチェック例外
CPUによるマシンチェック例外エラー検出機能が動作し、システムを保護する
ためにWHEAに報告し、ブルースクリーンにした。原因はバス/相互接続エラー。
→原因はハードウェア

問題2.KP41病
KP41病は、原因が分からないので、何とも言えないが、これの原因が
ハードウェアだと仮定すると、hal.dllの問題にもつながるし、それはリンクされている
ntoskrnl.exeの問題にもつながる。ハードウェアが原因と仮定した段階で、
同時に問題1のエラーも発生する要因になるので、WHEAが動き、
ブルースクリーンになることも考えられる。
→原因は不明(OSレベル、ハードウェアレベル双方の可能性)

問題1と問題2の結果、0x124 WHEA_UNCORRECTABLE_ERROR 
が発生するのである。



しかし、ハードウェアレベルで障害が発生しているならば、PC起動時の
POST(Power On Self Test)が失敗し、そこで起動が停止するはず。

先ほどのバス/相互接続エラーとかだったら尚更だろう。
となると、このエラーはブート段階のPOSTでは検出されず、起動後使用していると
発生するエラーだと推測されるのである。
そう考えると、ハードウェアレベルでの障害ではなく、hal.dllやntoskrnl.exeが
ただ単に破損しているだけと考えられる
のである。

ここで矛盾が生まれていることは、言うまでもない。


さて、文章が飛躍していてでとても読みにくかったかもしれないが、今後も
研究して、謎が解明できるようにしたいと思う。


2014/3/29 追加
続編完成。
0x00000124との戦い 正しい答えはあるのか編


2014/7/29 完全勝利
0x00000124との戦い 1年1カ月の答え
AD
いいね!した人  |  コメント(2)  |  リブログ(0)

ライトさんの読者になろう

ブログの更新情報が受け取れて、アクセスが簡単になります

同じテーマ 「コンピュータ」 の記事

AD

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。