kernel: httpd[6430]: segfault at* rsp * error 6

Aug 18 13:52:37 ad2 kernel: httpd[6430]: segfault at 000000004d88ad80 rip 00002b1e0fad870a rsp 000000004d88ad60 error 6
Aug 18 13:52:38 ad2 kernel: httpd[6535]: segfault at 00000000400e4d80 rip 00002b1e0fad870a rsp 00000000400e4d60 error 6
Aug 18 13:52:39 ad2 kernel: httpd[6564]: segfault at 0000000049c84d80 rip 00002b1e0fad870a rsp 0000000049c84d60 error 6
Aug 18 13:52:40 ad2 kernel: httpd[6765]: segfault at 0000000042478d80 rip 00002b1e0fad870a rsp 0000000042478d60 error 6
Aug 18 13:52:41 ad2 kernel: httpd[6880]: segfault at 0000000042e79d80 rip 00002b1e0fad870a rsp 0000000042e79d60 error 6
Aug 18 13:52:41 ad2 kernel: httpd[6890]: segfault at 0000000047e81d80 rip 00002b1e0fad870a rsp 0000000047e81d60 error 6
Aug 18 13:52:43 ad2 kernel: httpd[7101]: segfault at 0000000042478d80 rip 00002b1e0fad870a rsp 0000000042478d60 error 6
Aug 18 13:52:45 ad2 kernel: httpd[7237]: segfault at 0000000050a8fd80 rip 00002b1e0fad870a rsp 0000000050a8fd60 error 6
Aug 18 13:52:47 ad2 kernel: httpd[7347]: segfault at 0000000049283d80 rip 00002b1e0fad870a rsp 0000000049283d60 error 6
Aug 18 13:52:49 ad2 kernel: httpd[7455]: segfault at 000000004427bd80 rip 00002b1e0fad870a rsp 000000004427bd60 error 6
Aug 18 13:52:51 ad2 kernel: httpd[7602]: segfault at 0000000055a97d80 rip 00002b1e0fad870a rsp 0000000055a97d60 error 6
Aug 18 13:52:53 ad2 kernel: httpd[7717]: segfault at 0000000054695d80 rip 00002b1e0fad870a rsp 0000000054695d60 error 6
Aug 18 13:52:55 ad2 kernel: httpd[7812]: segfault at 000000004387ad80 rip 00002b1e0fad870a rsp 000000004387ad60 error 6
Aug 18 13:52:57 ad2 kernel: httpd[7932]: segfault at 000000004a685d80 rip 00002b1e0fad870a rsp 000000004a685d60 error 6
Aug 18 13:52:59 ad2 kernel: httpd[8072]: segfault at 000000005969dd80 rip 00002b1e0fad870a rsp 000000005969dd60 error 6
Aug 18 13:53:01 ad2 kernel: httpd[8160]: segfault at 000000004387ad80 rip 00002b1e0fad870a rsp 000000004387ad60 error 6
Aug 18 13:53:03 ad2 kernel: httpd[8292]: segfault at 000000004f68dd80 rip 00002b1e0fad870a rsp 000000004f68dd60 error 6
Aug 18 13:53:05 ad2 kernel: httpd[8413]: segfault at 000000004d88ad80 rip 00002b1e0fad870a rsp 000000004d88ad60 error 6
Aug 18 13:53:07 ad2 kernel: httpd[8514]: segfault at 000000004427bd80 rip 00002b1e0fad870a rsp 000000004427bd60 error 6
Aug 18 13:53:09 ad2 kernel: httpd[8645]: segfault at 0000000048882d80 rip 00002b1e0fad870a rsp 0000000048882d60 error 6
Aug 18 13:53:11 ad2 kernel: httpd[8765]: segfault at 0000000049283d80 rip 00002b1e0fad870a rsp 0000000049283d60 error 6前端

今天重启了下apache 就出现了这个错误,我郁闷了处处搜资料没有解决方法,对于我这种运维工程师仍是有点难度的,关键百度和谷歌没有解决方法,只有内存访问过界这个说法:ios

这种信息通常都是由内存访问越界形成的,无论是用户态程序仍是内核态程序访问越界都会出core, 并在系统日志里面输出一条这样的信息。这条信息的前面分别是访问越界的程序名,进程ID号,访问越界的地址以及当时进程堆栈地址等信息,比较有用的信息是 最后的error number.
在上面的例子中,error number是6, 转成二进制就是110, 即bit2=1, bit1=1, bit0=0, 按照上面的解释,咱们能够得出这条信息是因为用户态程序读操做访问越界形成的。
error number是由三个字位组成的,从高到底分别为bit2 bit1和bit0,因此它的取值范围是0~7.
bit2: 值为1表示是用户态程序内存访问越界,值为0表示是内核态程序内存访问越界
bit1: 值为1表示是写操做致使内存访问越界,值为0表示是读操做致使内存访问越界
bit0: 值为1表示没有足够的权限访问非法地址的内容,值为0表示访问的非法地址根本没有对应的页面,也就是无效地址
根据segfault信息调试定位程序bug:
#include<stdio.h>int main(){ int *p; *p=12; return 1;}
1. gcc testseg.c -o testseg -g,运行./testseg查看dmesg信息以下:
testseg[26063]: segfault at 0000000000000000 rip 0000000000400470 rsp 0000007fbffff8a0 error 6
2. 运行addr2line -e testseg 0000000000400470,输出以下:
/home/xxx/xxx/c/testseg.c:5 [...]

***********************

内存不足不会引发段错误。段错误一般出如今访问了非法的地址后,非法地址分为3类:
1. 访问的地址没有对应的物理内存。这类错误主要出如今越界访问,例如栈越界。好比说当前进程的栈只有5个页和它对应,共20k大小(x86平台),你访问的地址超过了这个范围,就会发生segmentation fault。

2.对地址的操做与该地址的属性不符合。例如该地址对应的内存是只读的,如文本段,你却试图进行写操做。

3.低权限访问高权限地址。这类状况发生在用户进程试图访问内核空间。例如x86中,TASK_SIZE以上的地址为内核空间,当用户态进程试图访问这些地址时,segmentation fault。********************nginx

 

这些解释只能提供一些线索.程序员

个人环境先解释下 nginx前端反向代理 apache后端 WEB 8000端口apache

这台服务器跑了3个域名 。访问的时候nginx没有问题 是502错误 明显是apache的错误,而后我就查内核和apache错误日志 就是上面一堆的东西了。后端

我就尝试各类方法解决 既然是内存问题 之前好好的忽然就坏了。我就怀疑是否是内存 不足 free 内存没问题。 是否是溢出呢 不清楚服务器

 

第一个CPU 中断有点问题 ,可是确实不是CPU 的问题 内核报错就是内存的问题,strace,iostat我也检查的了IO 都没问题,万恶的问题来自哪呢?运维

重启了服务器 ,apache 从新编译了仍是不行,后来我就无语了,继续想办法解决啊ide

0000000049283d80 这是进制转换过来的 转回去没工具,可是想了是应该是程序的问题,抱着侥幸的内心试了下。把这上面的域名所有注释了,本身新建了个一个虚拟主机写了个测试页面 竟然好了。这个怎么个状况呢?而后我把3个域名一个个试。加上其中第2个域名就出现了内核报警这个状况,最后就找程序员 问最近上传什么程序了么,由于这个是新项目,改动的比较多,而后把那个几个目录给我 ,我所有移动出来 ,一个个移动回去测试那个目录里面的程序致使的,固然查询这个是有很快的方法的,最后排查锁定的一个目录啦,进入目录 查询时间 可是没有找到,而后看到一个s_s_s_ 这个一个文件,打开一看进制文件,我问程序员没用我就删除了,而后一切恢复正常了。工具

 

最后总结这个就是程序致使的状况最多,建议本身编个虚拟主机试试,若是不是我就不怎么清楚了,我是费了2小时解决的,一步步排查的,很纠结遇到这个问题,但不要着急 仔细分析办法总会有的。

相关文章
相关标签/搜索