Q: ときおり MacsBug では、BowelsOfTheMemoryMgr というシンボルで始まるアドレスを含んだ、PowerPC unmapped memory exception が発生します。これはどういう意味なのですか。
A: Macsbug で表示されるアドレスは、検出された最後のシンボルからのオフセットが示されます。Mac OS 7.6 までは、Power Macintosh コンピュータの Modern Memory Manager における最後のシンボルは __HSetStateQ でした。__HSetStateQ の後に続くコードは、 Memory Manager の内部ルーチンから構成されています。このため、Memory Manager の内部ルーチンでハングまたはクラッシュが発生すると、MacsBug には __HSetStateQ+xxxxxxxx と表示されます。
__HSetStateQ のクラッシュを知らせるバグレポートを見飽きたエンジニアは、もう少し意味のあるシンボルがあるだろうと考えて、Mac OS 7.6 から、Memory Manager に新しい末尾のシンボルを追加することを決定しました。最初は、このシンボルを YourHeapIsCorrupt(プログラムが Memory Manager をクラッシュさせた時、このようなケースが圧倒的に多いため)と名付けることも検討しましたが、最終的には BowelsOfTheMemoryMgr に決まりました。
BowelsOfTheMemoryMgr+xxxxxxxx でクラッシュまたはハングが発生した場合は、HC と入力してヒープが壊れているかどうかチェックし(おそらく壊れています)、コードのデバッグを開始してヒープが何故壊れたかを検出してください。
|
注意:
Mac OS 9.1 から、このシンボルは BowelsOfTheMemoryMgr から YourHeapIsProbablyCorrupt に変更されました。(r. 2529682)
|
[2001年2月1日]
|