在MacOSX / PPC上,有关如何在0x0000000000000000处捕获KERN_PROTECTION_FAILURE的建议

时间:2009-06-29 21:14:49

标签: macos exception crash powerpc

这是一个实时的MMO客户端,在一些随机点上它会在跳转到0时崩溃,并且堆栈帧是不可读的。崩溃报告者(和GDB)将报告线程0崩溃:

XC_BAD_ACCESS (SIGBUS)
KERN_PROTECTION_FAILURE at 0x0000000000000000

srr0=lr=exception address=0

如何捕获此错误发生的位置?

1 个答案:

答案 0 :(得分:0)

如果您的堆栈指针(r1)和链接寄存器被删除,那么它看起来不太好。但是,其他一些寄存器可能仍然具有帧指针的值 - 例如,通常看到非叶函数将地址移动到它们通过r0返回堆栈/从堆栈返回。

除此之外,您可以提取一些技巧 - 假设地址0x0的进程地址空间中没有映射(这似乎是EXEC_BAD_ACCESS错误的情况)你可以写一个简单的预载库来映射页面零;这将允许您在0x0添加断点;这可能会为您提供有关正在发生的事情的更多信息。