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

Technical Q&A ME05
BowelsOfTheMemoryManager (aka YourHeapIsProbablyCorrupt)

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日]