ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【主机】kernel: XXX [ ]: segfault at rip rsp error N

【主机】kernel: XXX [ ]: segfault at rip rsp error N

原创 Linux操作系统 作者:杨奇龙 时间:2011-08-24 13:20:41 0 删除 编辑
工作中突然接到手机报警:
kernel: exp[24505]: segfault at 000000000000053c rip 00002abe2df39eb8 rsp 00007fff7d147290  error  4 
一时没有头绪,搜索一番,看到一些解释:
kernel : *** : segfault at 0000000000000011 rip 00000032f8670454 rsp 000000004128fd30 error 4
kernel: exp[24505]: segfault at 000000000000053c rip 00002abe2df39eb8 rsp 00007fff7d147290  error  4

这种信息一般都是由内存访问越界造成的,不管是用户态程序还是内核态程序访问越界都会出core, 并在系统日志里面输出一条这样的信息。
其中 kernel 后面的exp 代表程序名,[24505]进程ID号,
segfault at 000000000000053c rip 00002abe2df39eb8 rsp 00007fff7d147290 访问越界的地址以及当时进程堆栈地址等信息,最后的是error number. 
在上面的信息中,error number是4 ,下面详细介绍一下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表示访问的非法地址根本没有对应的页面,也就是无效地址

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22664653/viewspace-705688/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
MySQL DBA NoSQL DEVOPS

注册时间:2009-10-07

  • 博文量
    1026
  • 访问量
    7843611