免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2252 | 回复: 2
打印 上一主题 下一主题

[Web] /var/log/messages中一个关于APACHE的奇怪报错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-09 08:28 |只看该作者 |倒序浏览
最近以来,我的服务器/var/log/messages 中有一段日志,非常奇怪,而且我的apache经常并发很高,无故的死掉,我的环境是前端是nginx做代理,后端是apache,都在同一台机器上,下面我贴出日志,求大哥,大姐们,帮小弟看看了!
[root@168 logs]# tail /var/log/messages
Oct  9 00:29:20 168 kernel: httpd[24110]: segfault at 00007fff5989d878 rip 00002b8dd9595174 rsp 00007fff5989d880 error 6
Oct  9 00:34:55 168 kernel: httpd[24323]: segfault at 00007fff5989d878 rip 00002b8dd9595174 rsp 00007fff5989d880 error 6
Oct  9 00:47:26 168 kernel: httpd[24997]: segfault at 00007fff5989d878 rip 00002b8dd9595174 rsp 00007fff5989d880 error 6
Oct  9 00:54:38 168 kernel: httpd[25027]: segfault at 00007fff5989d878 rip 00002b8dd9595174 rsp 00007fff5989d880 error 6
Oct  9 02:39:13 168 kernel: httpd[26595]: segfault at 00007fffaf33c1d8 rip 00002b2344568174 rsp 00007fffaf33c1e0 error 6
Oct  9 04:21:58 168 kernel: httpd[27335]: segfault at 00007fffaf33c1d8 rip 00002b2344568174 rsp 00007fffaf33c1e0 error 6
Oct  9 04:30:58 168 kernel: httpd[27608]: segfault at 00007fffaf33c1d8 rip 00002b2344568174 rsp 00007fffaf33c1e0 error 6
Oct  9 04:52:45 168 kernel: httpd[26302]: segfault at 00007fffaf33c1d8 rip 00002b2344568174 rsp 00007fffaf33c1e0 error 6
Oct  9 05:52:13 168 kernel: httpd[32447]: segfault at 00007fffaf33c1d8 rip 00002b2344568174 rsp 00007fffaf33c1e0 error 6
Oct  9 06:22:39 168 kernel: httpd[28492]: segfault at 00007fffaf33c1d8 rip 00002b2344568174 rsp 00007fffaf33c1e0 error 6

论坛徽章:
0
2 [报告]
发表于 2009-10-09 16:44 |只看该作者
从别的地方抄了一点下来看,学习一下

testseg[24850]: segfault at 0000000000000000 rip 0000000000400470 rsp 0000007fbffff8a0 error 6
      这种信息一般都是由内存访问越界造成的,不管是用户态程序还是内核态程序访问越界都会出core, 并在系统日志里面输出一条这样的信息。这条信息的前面分别是访问越界的程序名,进程ID号,访问越界的地址以及当时进程堆栈地址等信息,比较有用的信息是最后的error number. 在上面的信息中,error number是4 ,下面详细介绍一下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 [...]

论坛徽章:
0
3 [报告]
发表于 2009-10-10 08:54 |只看该作者

回复 #2 liu.cy 的帖子

那应该怎么处理呢,大哥
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP