当Linux内核中启用了详细的用户错误消息,并且由于任何非法内存访问而发生分段错误时,程序将崩溃,消息如下

unhandled page fault (11) at 0x0839800, code 0x017

与此消息一起打印的值为0x017的代码可能与其他崩溃的值不同。但是代码0x017在这里意味着什么呢?有人可以解释或提供资源的链接解释吗?

最佳答案

这不是si_code,而是ARM的FSR(故障状态寄存器)的值(source):

 0x17 = 0b1 0111

根据ARM manual
[位7:4]指定正在访问的16个域(d15-d0)中的哪一个
发生数据故障时。
[位3:0]生成的故障类型
因此域是1,它是DOMAIN_USER in the kernel(仅限所有用户内存)。故障类型为pagetranslation fault, page

关于c - 代码0x017在未处理的页面错误中表示什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43317013/

10-11 18:22