Macintoshシステムエラーの種類と療法

執筆:1996.5.2.


システムエラーとは

 システムエラーは非常に分かりにくいものです。アプリケーションを立ち上げようとしたとき、「メモリーが不足です。他のアプリケーションを終了してください。」というメッセージが出れば、素人でもその意味は分かるのですが、システムエラーは突然訪れ、しかもその意味が分からないのが何とも不気味です。
 システム6の場合は爆弾マークと共にエラーコードだけが表示されましたが、システム7では言葉で表示されるようになりました。Address Errorと表示されれば何となく分かったような気分にはなるものの、だからといってだったらこうすれば次からはそのエラーは出なくなるというものではありません。

 システムエラーはほとんど多くの場合、システムソフトやアプリケーションソフトのバグによって起こるものですから、プログラマーがプログラムを変更しないかぎり直らないものです。一応どんなソフトも、それが製品版であれフリーウェアであれ、ある環境での作動は保証しているものです。ところが、現実にはそれぞれのユーザーは色々なハードとソフトの組み合わせで使用していますから、プログラマーが想定しなかったことが起こり、それがシステムエラーとなって出てくるのです。

 従って、エラーコードの意味を知っても、一般ユーザーがそれぞれのエラーコードに対して対応できることはほとんどありません。それぞれに対する特定の薬というものもありません。ただ、システムエラーに悩まされている人々にとっては、それぞれのエラーコードの意味するものが分かれば、ちょっとは精神的に慰めになるでしょう。その程度だと考えてください。



システムエラーへの対応の一般的療法

先にも述べたように一般ユーザーはシステムエラーに対しては無力です。
ある条件であれば必ず発生する場合もあれば、同じ条件でも必ずしも発生しない場合もあり、あくまでも対処療法と考えるしかありません。
基本は「無理をしない」です。本当の病気と同じようにシステムエラーが起きることを前提に、やさしくMacと付き合っていく気持が重要です。

★日頃の健康法★

●アプリケーションを動かしているときは頻繁に(10分おきくらいに)データをセーブする習慣をつけましょう。コマンド+Sが無意識でできるように訓練しましょう。
●HyperCardやFileMakerは自動的にファイルが更新されるので被害は最小限に留まります。NisusWriterのように時間やキーの入力回数で自動的にセーブするアプリケーションを使うのも賢いやり方です。
●ハードディスクのデータのうち、重要なものはバックアップを取る習慣を付けましょう。(私は個人的にはやっていませんが、会社では重要です)
●システムフォルダーを丸ごと外付けHDかMO、Zipなどにコピーしてとっておけば何がおきても安心です。
●現在のようにHDの容量が肥大化してくると、問題が起きたときの障害も深刻ですが、問題も起きやすくなってきます。Norton Utilities等を用いて、定期的にHDの点検、保守を行いましょう。
●そしてこれが一番重要だと思うのですが、冒険しない。目新しいものに飛び付かないことだと思います。最近はインターネットで色々な情報が早く伝わるようになったため、人よりも先に新しいソフトを使うことに一所懸命の人がいます。プログラムというのは必ずバグがあるものですから、新しいものには手を出さないことが賢明です。素人はやはり評判がよくこなれたものを使うのがよいのです。しかし、大きいバージョンアップは機能の追加によりバグも追加されているので避けたほうが良いです。モデルチェンジ前のものが一番よいことになります。それから、いろいろなフリーウェアやシェアウェアに手を出すのも考えものです。デモのゲームでもシステムフォルダーに余分なファイルが書き込まれますのでそれに注意してください。

★システムエラーが頻繁に起きるようだったら★

[一般的な対応]
1)現在のアプリケーションで問題の書類が開けるかどうか確認します。

2)次に同じアプリケーションで他の書類は開けるかどうかを確認します。

3)書類のサイズがアプリケーションの設定メモリ(Finderレベルで「情報を見る」で分かります)を超えていないかどうか確認します。

4)機能拡張ファイルのコンフリクトを見るために機能拡張ファイルを停止します。KT7.5ではコントロールパネルの機能拡張マネージャを使い、「漢字Talk7.5のみ」のセットを選び再起動します。これで問題がなければ除いた機能拡張ファイルを一つづつ戻していって、アプリケーションを立ち上げ、問題がないところまで繰り返します。KT7.1以前の場合ではコマンド+シフトキーを押し続けたまま起動すれば全ての機能拡張ファイルが読み込めませんので、その状態でアプリケーションを立ち上げ、問題がなければ機能拡張ファイルのコンフリクトだと考えて、犯人を探しだします。

5)システムエラーが起きる前に何をしたかを思い出します。新しいソフトを入れた、コントロールパネルに新しいファイルを入れた。ほとんどの場合、これが犯人です。

6)エラーメッセージがでてきたらその番号を記録します。下に各エラー番号の説明がありますので自分なりに原因を考えてみます。

7)デスクトップの再構築は結構有効で簡単ですので、あまり深く考えないでやってください。起動時コマンド+オプションキーを押し続けると「デスクトップの再構築をしますか」と言うメッセージがでます。この作業によりデスクトップの情報のいくつかが失われますが、実害はありません。この作業はFile Buddyというシェアウェアでも行うことが出来ます。

8)PRAMのクリアも簡単ですので、これも深く考えずに行ってください。コマンド+オプション+p+r(小文字です)の4つのキーを同時に押しながら起動します。始めのじゃーんの音が3回なったら手を離します。PRAMのクリアにより、モデムポートや音量、マウスの速度と言った初期設定がデフォールとになるため、必要ならばもう一度セットする必要があります。

9)もし近くに別のMacがあるならばそれでアプリケーションを動かしてみます。

10)どうもシステムが壊れているようだと思ったら、システムフォルダー全部をごみ箱に捨て(システムだけは捨てれないので別なフォルダーに移しておきます)、システムをCDからもう一度インストールし直します。

11)さて最後の手段がハードディスクの初期化です。Appleのカスタマーセンターでも簡単にこれを勧めるようですが、これは本当に最後の手段で安易にやるものではありません。Aplle HD SC Setupでハードディスクの初期化を選択し、システムをCDからもう一度インストールし直します。この場合は、ハードディスク上の全てのファイルのバックアップをとる必要がありますが、数百MBになるとフロッピーディスクにコピーするのは現実的ではありません。外付けHDかMOかZipのようなものを先に購入してからやるほうが安心です。

12)これでも駄目な場合はやはりアプリケーションの問題ですから、発売元に問い合わせる、インターネットのその会社のホームページを覗く、ニュースグループで話題になっていないか調べるなどの努力をしましょう。

13)ニュースグループや私のようなところに聞くにしても、以上のことをやってからの方が早く解決できるでしょう。

14)ハードの問題の場合は修理に出すしかありません。

[Type11エラーへの対処療法]
1) ハードディスクドライバを最新版にアップグレードしてみましょう。Apple純正のハードディスクをお使いの場合は、インターネットのApple社のSoftware Updateのページから最新のApple HD SC Setupをダウンロードし、これで「更新」を行います。またサードパーティのハードディスクを使っている場合は、SCSIマネージャ4.3に対応していない場合があるので、最新のフォーマッタを購入して更新します。

2) 最新のシステムソフトウェアにアップグレードします。System7.5.3はこのType11エラーの解消が一つの目的で開発されており、System7.5(7.5.1及び7.5.2)のユーザーはApple社のFTPサイトで配付されているSystem7.5 Update2.0でアップグレードすることが出来ます。漢字Talk7.5.3はまだ未発売のため、System7.5 Update2.0により疑似漢字Talk7.5.3を作成します。

3) コンフリクトの原因となる拡張機能を調査する、これは一般のシステムエラー対応と同じです。

4)PowerMacではコンポジット方式のRAMを使用していないことを確認してください。

5)いくつかのType11エラーはPRAMの不具合が問題になっている場合があります。command+option+p+rをホールドしながら起動してPRAMを初期値に戻して下さい。

6) 残念なことですが、問題を起こしているアプリケーションソフトの使用を止めます。古いバージョンでは問題がなければそっちの方を使用します。アプリケーションの問題であれば、それをソフトハウスに連絡し、アップデートされるまで待ちます。



システムエラーコードの意味

ID=1 バスエラー(Bus error)
リザルトコード:dsBusErr
意味:存在しないメモリ内のアドレスにアクセスしようとした。
原因:RAMが持っているメモリのアドレス以上にコンピューターがアクセスしようとしたことによって起きます。Plus、SEを除く全てのMacintoshでよく起きる。しかし現実には、アプリケーションのプログラムにその他のバグがある場合や、ハードウェアの問題でこのエラーが出る場合もあります。
対応:使用中のアプリケーションが壊れている場合があるので、新しいコピーに取り替えてみる。

ID=2 アドレスエラー(Address error)
リザルトコード:dsAddressErr
意味:メモリ内の奇数アドレスを参照した。
原因:モトローラ68000プロセッサ(Plus,Classic,PB100等)は8bit、16bit、32bit単位でメモリを扱うことが出来ますが、必ず奇数番号のアドレスにはいることが求められています。これが間違えて偶数番号に入った場合このエラーが発生します。大抵はアプリケーションのバグです。CPUに68020、68030、68040、PowerPC搭載の機種では発生しません。

ID=3 不法命令(Illegal instruction)
リザルトコード:dsIllInstErr
意味:CPUが認識できないマシンコード命令が実行された。
原因:CPUはそれぞれに理解できるマシン語の命令語彙というものをもっています。この語彙にない命令をコンピュータが受けた場合、このエラーが出ます。アメリカの犬に「お手」というと手を噛みつかれるかも知れません。これもよくあるエラーですが、大半はアプリケーションのバグです。

ID=4 ゼロ割り算(Zero Divide Error)
リザルトコード:dsZeroErr
意味:分母がゼロになる命令が出されたので拒否。
原因:アプリケーションプログラムのバグです。

ID=5 領域チェックエラー(Range Check Error)
リザルトコード:dsChkErr
意味:プログラマーがある数字が一定の領域内にあるかどうかをチェックする指示を入れていた場合、この領域になかった場合このエラーが出る。
原因:68000のみの問題です。

ID=6 オーバーフロー(Overflow Error)
リザルトコード:dsOvFlowErr
意味:コンピュータ内の全ての数字は特定の場所に収められるが、その数字が格納スペースより大きくて入りきれなかった。
原因:大きい数字を扱うプログラムでは、それ相応のスペースを確保しておく必要があるが、それが想定できなかったというものです。

ID=7 特権違反(Privillege violation)
リザルトコード:dsPrivErr
意味:Macは監督者モードで動いていますが、現実にはユーザーモードでも動かすことが出来ます。これは本来監督者モードで動いていたところにユーザーモードが割り込んできたという意味です。

ID=8 トレースモードエラー(Trace Mode Error)
リザルトコード:dsTraceErr
意味:プログラマがプログラムのバグをとる時はトレースモードで行います。CPUが間違ってトレースモードに入ってしまった場合このエラーが発生します。
原因:トレースを行うデバッガーがインストールされていない場合に発生します。

ID=9 1011行トラップ(Line 1011 Trap)
リザルトコード:dsLineAErr
意味:特殊命令が出されたがCPUの語彙テーブルには見つからなかった。
原因:アプリケーションのバグ。

ID=10 1111行トラップ(Line 1111 Trap)
リザルトコード:dsLineErr
意味:ID=9と同じ
原因:FPUが搭載されていない機種上で、16進のF値で始まる命令が実行された際に発生します。従って、68K Macintosh上では使用機種の仕様確認が必要です。Power Macintosh上で発生するタイプ10エラーの多くは 実行中のプログラムが実行可能なコードではなく、F値で始まる意味不明のopコードを実行しようとした際に起きるといわれています。

ID=11 その他の侵害(Miscellaneous exception)
リザルトコード:dsMiscErr
意味:680X0系ではインタラプトベクトルが発生したことを意味します。PowerPCではネイティブコードとしてインストールされている例外的ハンドラ以外のハンドラが実行されたことを意味しています。PowerMacの場合は、ネイティブコード内で発生する、アドレスエラー、バスエラー、不法命令によっても引き起こされます。
原因:現在大きな問題となっているのはPowerMacのTaype11エラーですが、具体的な原因として考えられるのは、
●非Apple純正のHDドライブとColor Pickerのコンフリクト。
●インタラプト中にメモリの移動をするルーチンの入ったアプリケーション。
●QuckTimeが画像の解凍を行おうとしたときにヒープ領域を圧迫する。
Open Transport1.0.5以前では配列の制限を超えたコードを記述した場合メモリ障害が発生。
●プログラム中でローカル変数を使い過ぎてスタックスペースが不足する。
●頻繁なQuickDrawの反復。Ver2.4.1以前のQDでは領域をハンドルするために反復ルーチンが使われており、スタック領域が圧迫されやすくなっています。
●NubusまたはPCIカードのデバイスドライバーがインタラプトをハンドル出来ない。
●一般的なプログラミングエラー
対応:前の項を参照してください。

ID=12 コアルーチン不履行(Unimplemented Core Routine)
リザルトコード:dsCoreErr
意味:プログラムの中にバグ取りのためにプログラマが残したブレークポイントに当たったためにルーチンが実行できない。
原因:不注意なプログラマのミスによるものです。

ID=13 インストールエラー(Uninstalled Interrupt)
リザルトコード:dsIrgErr
意味:キーボードやFDドライブのような周辺機器が作動する場合は、それを認識するために割り込を行いますが、メモリ内にこれらの周辺機器を動かす方法が記憶されている必要があります。それがない状態でこのエラーが出ます。
原因:頻繁に発生する場合には、ハードウェアのチェックが必要です。

ID=14 I/Oシステムエラー(I/O system error)
リザルトコード:dsIOCoreErr
意味:DeviceまたはFile Managerにて発生したエラー。

ID=15 セグメントローダーエラー(Segment Loader Error)
リザルトコード:dsLoadErr
意味:普通Macのプログラムはいくつかのセグメントに分割して作られます。これを分割してRAMの中に読み込ませるのがセグメントローダーと呼ばれるものの役割です。必ずしも一度に全てのプログラムをRAMにロードするわけではなく、必要なときにだけロードするのですが、これがたまにうまく行かないとこのエラーが発生します。
原因:大体はアプリケーションのプログラムミスですが、システムファイルが壊れている場合もあります。
対応:システムファイルを交換してみましょう。

ID=16 浮動点エラー(Floating-point Error)
リザルトコード:dsFPErr
意味:Floating-point error計算でエラーが発生した。
対応:システムファイルを交換してみましょう。

ID=17〜24 不明パッケージ0〜7(Missing Packages 0〜7)
リザルトコード:dsNoPackErr、dsNoPk1〜7
意味:Macのシステムファイル内には特定の仕事を行うパッケージと呼ばれるものがあります。この中には、ディスクの初期化、2進法-10進法変換、国際化ユーティリティ、標準ファイルユーティリティ等が含まれます。17から24までのエラーはこのどれかのパッケージが欠けていることを示しています。
原因:システムファイルが壊れている可能性が高いです。
対応:システムファイルを新しいものに交換します。

ID=25 メモリ不足エラー(Memory Full Error)
リザルトコード:dsMemFullerr
意味:ヒープブロックを確保できなかったか、メモリ不足が発生した。
原因:本当にメモリが不足している場合ではなく、別なエラーの影響であたかもメモリが不足したものと判断している場合があります。アプリケーションプログラムのミスです。

ID=26 プログラムの起動不全(Bad Program Launch)
リザルトコード:dsBadLaunch
意味:ユーザがオープンしたアプリケーションを起動できなかった。
原因:アプリケーションのどこかに異常があり、Macは起動できないのです。
対応:アプリケーションの新しいコピーをもう一度入れてみます。それでも駄目なら、ソフトハウスに電話して新品と交換してもらいます。

ID=27 ファイルシステムマップエラー(File System Map Destroyed)
リザルトコード:dsFSErr
意味:ディスクのファイルに異常がある。
原因:ディスクの保存内容についての情報になんらかの異常があります。
対応:デスクトップの再構築を行います。

ID=28 スタックオーバーフローエラー(Stack Ran into Heap)
リザルトコード:dsStknHeap
意味:スタックもヒープもメモリの2つの領域です。スタックが拡大し、アプリケーションヒープを浸食したこという意味です。
原因:予想以上にスタックが拡大したため、メモリが不足の状態になりました。
対応:アプリケーションの割当メモリを増やします。

以下は一般的ではありませんが、意味だけを記します。

ID=30 ("Please insert the disk" File Manager alert)

リザルトコード:dsReinsert
意味:Off-lineの状態にあるディスクを挿入すれば解決する。

ID=31 (Not the requested disk)
リザルトコード:dsNotThe1
意味:正しいディスクを再度挿入すれば解決する。

ID=32 (Memory Manager failed)
リザルトコード:memTrbBase
意味:メモリ管理にてエラーが発生した。

ID=33 (ZcbFree is negative)
リザルトコード:negZcbFreeErr
意味:Heap zone headerを廃棄してしまったため、エラーが発生した。

ID=34ノ53 (Memory Manager failed)
意味:メモリ管理にてエラーが発生した。

ID=40 ("Welcome to Macintosh" greeting)
リザルトコード:dsGreeting
意味:スタートアップ時の"ようこそ"メッセージを表示した。エラーではない。

ID=41 (File named Finder couldn't found on the disk)
リザルトコード:dsFinderErr
意味:Finderをディスク上に発見できなかった。

ID=42 (you may not switch off your Macintosh safely)
リザルトコード:shutDownAlert
意味:終了時に上記メッセージを表示した。エラーではない。

ID=51 (Unserviceable slot interrupt)
リザルトコード:dsBadSlotInt
意味:サポート外のslotの割り込みが発生した。

ID=81 (Bad SANE opcode)
リザルトコード:dsBadSANEopcode
意味:Floating-point packageにて不当な命令が実行された。

ID=84 (Menu purge error)
リザルトコード:menuPrgNFind
意味:現在使用中のメニューリソースが廃棄された。

ID=85 (Menu Manager error)
リザルトコード:dsMBarNFind
意味:メニュー管理にてエラーが発生した。

ID=86 (Menu Manager error)
リザルトコード:dsHMenuFindErr
意味:メニュー管理にてエラーが発生した。

ID=87 (WDEF not found)
リザルトコード:wDEFnFnd
意味:システムが、標準のWDEF(Window Definition
   procedure resource)の読み込みに失敗した。

ID=88 (CDEF not found)
リザルトコード:cDEFnFnd
意味:システムが、標準のCDEF(Control Definition procedure resource)の読み込みに失敗した。

ID=98 (Can't patch for paticular model Macintosh)
リザルトコード:dsNoPatch
意味:現在使用中のMacintoshに関するROM patch resourceがシステム内に無い。
原因:サポートできない(古い)システムを利用しようとした可能性がある。

ID=99 (Can't load patch resource)
リザルトコード:dsBadPatch
意味:システムの準備中にエラーが発生した。
原因:システムファイルが破壊されている可能性がある。

ID=32767 (General system error)
リザルトコード:dsSysErr
意味:致命的なエラーが発生した。システムは、具体的な内容を把握できなかった。


参考文献:Apple Tech Info Library "Macintosh System Error Codes Explained "(11/95)
Macintosh Bible他

(c) Harry Ono 1996