当在linux内核中启用详细的用户故障消息并且由于任何非法的内存访问而发生分段错误时,程序会崩溃并显示消息,如
unhandled page fault (11) at 0x0839800, code 0x017
使用此消息打印的值为0x017的代码可能与其他崩溃具有不同的值。但是代码0x017在这里表示什么。任何人都可以解释或提供解释相关资源的链接吗?
答案 0 :(得分:4)
这不是si_code
,而是ARM的FSR(故障状态寄存器)(source)的值:
0x17 = 0b1 0111
根据ARM manual:
[比特7:4] 指定访问16个域(D15-D0)中的哪一个 发生数据故障时。
[比特3:0] 生成的故障类型
因此域名为1,即DOMAIN_USER
in the kernel(仅限所有用户内存)。故障类型为第translation fault, page
页。