当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/