dmesg 段错误

放了一个定时任务,定时执行dmesg -c

$ cd /etc/cron.d
$ cat dmesg_clean
*/1 * * * * root dmesg -c  &> /dev/null
$ sudo ls /var/log/messages* -alk
-rw------- 1 root root 566 Aug 21 11:37 /var/log/messages
-rw------- 1 root root  20 Feb  4  2018 /var/log/messages-20180204
-rw------- 1 root root  31 Feb 11  2018 /var/log/messages-20180211
-rw------- 1 root root  36 Feb 18  2018 /var/log/messages-20180218
$ sudo tail -n 100  /var/log/messages
Aug 21 08:59:40 bd-prod-xxx-websocket0 kernel: php[13658]: segfault at 700000001 ip 000000000080db71 sp 00007ffd50e816e8 error 4 in php[400000+acc000]
Aug 21 09:36:47 bd-prod-xxx-websocket0 kernel: php[26264] general protection ip:80db71 sp:7ffd50e7f7b8 error:0 in php[400000+acc000]
Aug 21 09:47:23 bd-prod-xxx-websocket0 kernel: php[17303]: segfault at 700000001 ip 000000000080db71 sp 00007ffd50e814b8 error 4 in php[400000+acc000]
Aug 21 10:06:43 bd-prod-xxx-websocket0 kernel: php[7963]: segfault at 700000001 ip 000000000080db71 sp 00007ffd50e7f6a8 error 4 in php[400000+acc000]
Aug 21 10:18:16 bd-prod-xxx-websocket0 kernel: php[23554]: segfault at 700000001 ip 000000000080db71 sp 00007ffd50e7f7b8 error 4 in php[400000+acc000]
Aug 21 10:29:10 bd-prod-xxx-websocket0 kernel: php[9988]: segfault at 700000001 ip 000000000080ecc0 sp 00007ffd50e7f240 error 4 in php[400000+acc000]
Aug 21 10:47:32 bd-prod-xxx-websocket0 kernel: php[12081] general protection ip:80db71 sp:7ffd50e816e8 error:0 in php[400000+acc000]
Aug 21 10:53:05 bd-prod-xxx-websocket0 kernel: php[23095] general protection ip:80db71 sp:7ffd50e814b8 error:0 in php[400000+acc000]
Aug 21 11:12:15 bd-prod-xxx-websocket0 kernel: php[4216]: segfault at 700000001 ip 000000000080db71 sp 00007ffd50e7f248 error 4 in php[400000+acc000]
Aug 21 11:37:10 bd-prod-xxx-websocket0 kernel: php[16907] general protection ip:80db71 sp:7ffd50e816e8 error:0 in php[400000+acc000]

段错误:
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] 对象崩溃时映射的虚拟内存起始地址和大小

这种信息一般都是由内存访问越界造成的,不管是用户态程序还是内核态程序访问越界都会出core, 并在系统日志里面输出一条这样的信息。这条信息的前面分别是访问越界的程序名,进程ID号,访问越界的地址以及当时进程堆栈地址等信息,比较有用的信息是 最后的error number.
在上面的例子中,error number是4, 转成二进制就是100, 即bit2=1, bit1=0, bit0=0, 按照上面的解释,我们可以得出这条信息是由于用户态程序读操作访问越界造成的。
error number是由三个字位组成的,从高到底分别为bit2 bit1和bit0,所以它的取值范围是0~7.
bit2: 值为1表示是用户态程序内存访问越界,值为0表示是内核态程序内存访问越界
bit1: 值为1表示是写操作导致内存访问越界,值为0表示是读操作导致内存访问越界
bit0: 值为1表示没有足够的权限访问非法地址的内容,值为0表示访问的非法地址根本没有对应的页面,也就是无效地址
 

reference: https://stackoverflow.com/questions/2549214/interpreting-segfault-messages

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值