https://blog.csdn.net/senlin1202/article/details/51011129
段错误:
Nov 3 17:03:54 haier-45 kernel: haierUpassServe[22708]: segfault at 3946 ip 0000000000003946 sp 00007f56edf20e18 error 14 in haierUpassServer[400000+13000]
以上信息说明:
- 开始是系统当前时间
- 进程名字及pid
- segfault at 引起故障的地址
- ip 指令的内存地址
- sp 堆栈指针地址, 及栈顶指针
- err is not an errno nor a signal numbe, but page fault error code
- [400000+13000] 对象崩溃时映射的虚拟内存起始地址和大小
errcode 详见linux 内核源码arch/*/mm/fault.c 描述
Page fault error code bits:
bit 0 == 0: no page found1: protection fault
bit 1 == 0: read access1: write access
bit 2 == 0: kernel-mode access1: user-mode access
bit 3 == 1: use of reserved bit detected
* bit 4 == 1: fault was an instruction fetch
bit2:值为1表示是用户态程序内存访问越界,值为0表示是内核态程序内存访问越界
bit1: 值为1表示是写操作导致内存访问越界,值为0表示是读操作导致内存访问越界
bit0: 值为1表示没有足够的权限访问非法地址的内容,值为0表示访问的非法地址根本没有对应的页面,也就是无效地址