kernel: fmsedge[18328]: segfault at 0000000000000000 rip 0000003a31e7f808 rsp 00007fffb772b1

最近有一台业务机频繁down机,重启后查看系统日志,发现如下内容

Nov 25 15:43:09 dgtests Server[18328]: Shared memory heap (__FCS__serverstats_) has exceeded 90 usage. Consider increasing the heap size to prevent future memory allocation failures.
Nov 25 15:43:09 dgtests last message repeated 2 times
Nov 25 15:43:09 dgtests kernel:fmsedge[18328]: segfault at 0000000000000000 rip 0000003a31e7f808 rsp 00007fffb772b1e8 error 6

从字面意义上分析,这个是由于内存访问越界造成的,不管是用户态程序还是内核态程序访问越界都会在log日志message文件中记录,

Nov 25 15:43:09 dgtests kernel:fmsedge[18328]: segfault at 0000000000000000 rip 0000003a31e7f808 rsp 00007fffb772b1e8 error 6 

这里kernel前面的dgtest为主机名,后面的fmsedge为程序名,segfault at 0000000000000000 rip 0000003a31e7f808 rsp 00007fffb772b1e8 为访问越界的地址以及当时进程堆栈地址等信息,最后的是error number,这里的error number 为 6 ,计算机中二进制表达为 110 , 即 bit2=1, bit1=1, bit0=0, 按照上面的解释,我们可以得出这条信息是由于用户态程序写操作访问越界造成的,结论的得出基于下面的理论:

bit2: 值为1表示是用户态程序内存访问越界,值为0表示是内核态程序内存访问越界
bit1: 值为1表示是写操作导致内存访问越界,值为0表示是读操作导致内存访问越界
bit0: 值为1表示没有足够的权限访问非法地址的内容,值为0表示访问的非法地址根本没有对应的页面,也就是无效地址


结合 110 进行分析,我们的错误为 用户态程序写操作访问越界造成 ,这里标记一下,以作为以后分析使用。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值