Solaris 模块调试器指南

将故障消息与失败关联

内核内存分配器会对应于之前所述的失败模式发出故障消息。 例如,系统可能会发出以下故障消息:

kernel memory allocator: buffer modified after being freed

modification occurred at offset 0x30

由于分配器会尝试验证是否使用 0xdeadbeef 填充了不确定的缓冲区,因此能够检测到此情况。如果偏移的位置为 0x30,则不符合此条件。 由于此条件表明内存损坏,因此分配器会导致系统出现故障。

以下是另一个故障消息示例:

kernel memory allocator: redzone violation: write past end of buffer

由于分配器会尝试验证 redzone 字节 (0xbb) 是否处于它通过 redzone 大小编码所确定的位置,因此能够检测到此情况。 它无法在正确的位置找到签名字节。 由于这表明内存损坏,因此分配器会导致系统出现紧急情况。 其他的分配器故障消息将在稍后讨论。