高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先



OPS 16 - System Error 29

(更新日: 97 年 9 月 12 日)

Q: カスタマから、私のアプリケーションが system error 29 でクラッシュしたと報告を受けましたが、このエラーは"Errors.h"にドキュメントされていません。この意味は?

A: System error 29はいつもの所にはドキュメントは無く、以下のような仕組みになっています。

System7より前のMac OSではPackage Managerが17から24までのエラーをパッケージのロードエラーとして使っており、17 + packNum(ロードに失敗したpackageの番号で、0〜7)を返していました。

注意:Packageについての、より詳しい情報については"Inside Macintosh: Operating System Utilities", Chapter 10 を参照して下さい。

System7では0〜15のpackageが使えるよう拡張されました。残念ながらPackage Managerのエラーハンドラにはこの変更が反映されなかったため、ドキュメントされていないエラー番号が返る結果となりました。以下に正確な対応関係をあげます。

Error  Standard Meaning    Package
-----  ----------------    -------
25     Out of memory         8 AppleEvents
26     Can't launch file     9 PPC Browser
27     File system trashed  10 --
28     Heap/stack collision 11 Edition Manager
29     --                   12 Color Picker
30     --                   13 Database Access Manager
31     --                   14 Help Manager
32     --                   15 Picture Utils

例えばSystem error 28は"heap/stack collision"または"could not load the Edition Manager package"を意味し、29は"could not load the Color Picker package"となります。

Package Managerがロードに失敗する理由は様々で、すべてこのエラーとなります。一般的には、System heapがそのpackageのロードに必要な分空いていない場合が考えられます。その他の可能性としては、該当のpackageがインストールされていない場合もこのエラーが返ります。それ以外では、システムのリソースファイル(ディスク上またはメモリ中のリソースマップ)が腐っていて、Package ManagerがロードするPACKリソースを見つけられないのでしょう。

この問題はMacsBugでデバッグすることが出来ます。このエラーが発生したら、MacsBugを立ち上げ、"hx"コマンドでシステム・ヒープに切り替え、"ht"コマンドでシステム・ヒープに十分な空きがあるか確認します。空きがある場合には、"hc all"コマンドで全てのヒープが破壊されていないかチェックして下さい。最終的には、"rd -f 2 -t 'PACK'"コマンドでシステムのリソース・マップの中の'PACK'リソースをダンプして、正しくロードされているかどうかを確認して下さい。

[ Technical Q&A's : Operating System Services : OS Utilities : OPS16 ]