博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
*** glibc detected ***
阅读量:6860 次
发布时间:2019-06-26

本文共 2880 字,大约阅读时间需要 9 分钟。

现象:

今天线上一台服务器的php打算升级到php5.5,导入流量后,在php的error log中出现了一些 glibc delected错误。
如:
*** glibc detected *** ./test: double free or corruption (fasttop): 0x00000000049cc010 ***

原因:

重复free

示例:

#include"stdio.h"#include "stdlib.h"#include "errno.h"#include "netdb.h"#include "sys/types.h"#include "netinet/in.h"#include
/*提供类型pid_t,size_t的定义*/#include
#include
int main (int argc, char *argv[]){ char *chr; chr = (char *)malloc(10*sizeof(char)); free(chr); free(chr);}
上面的代码编译后,执行会出现如下错误:

[root@localhost c]# gcc ./test.c -o ./test[root@localhost c]# ./test*** glibc detected *** ./test: double free or corruption (fasttop): 0x00000000049cc010 ***======= Backtrace: =========/lib64/libc.so.6[0x3dfbc7166f]/lib64/libc.so.6(cfree+0x4b)[0x3dfbc7589b]./test[0x400507]/lib64/libc.so.6(__libc_start_main+0xf4)[0x3dfbc1d9c4]./test[0x400429]======= Memory map: ========00400000-00401000 r-xp 00000000 fd:00 1081356                            /root/test/c/test00600000-00601000 rw-p 00000000 fd:00 1081356                            /root/test/c/test049cc000-049ed000 rw-p 049cc000 00:00 0                                  [heap]3dfb800000-3dfb81c000 r-xp 00000000 fd:00 1736741                        /lib64/ld-2.5.so3dfba1c000-3dfba1d000 r--p 0001c000 fd:00 1736741                        /lib64/ld-2.5.so3dfba1d000-3dfba1e000 rw-p 0001d000 fd:00 1736741                        /lib64/ld-2.5.so3dfbc00000-3dfbd4f000 r-xp 00000000 fd:00 1736747                        /lib64/libc-2.5.so3dfbd4f000-3dfbf4e000 ---p 0014f000 fd:00 1736747                        /lib64/libc-2.5.so3dfbf4e000-3dfbf52000 r--p 0014e000 fd:00 1736747                        /lib64/libc-2.5.so3dfbf52000-3dfbf53000 rw-p 00152000 fd:00 1736747                        /lib64/libc-2.5.so3dfbf53000-3dfbf58000 rw-p 3dfbf53000 00:00 0 3e0d200000-3e0d20d000 r-xp 00000000 fd:00 1736868                        /lib64/libgcc_s-4.1.2-20080825.so.13e0d20d000-3e0d40d000 ---p 0000d000 fd:00 1736868                        /lib64/libgcc_s-4.1.2-20080825.so.13e0d40d000-3e0d40e000 rw-p 0000d000 fd:00 1736868                        /lib64/libgcc_s-4.1.2-20080825.so.12ae478170000-2ae478172000 rw-p 2ae478170000 00:00 0 2ae478185000-2ae478186000 rw-p 2ae478185000 00:00 0 7fff3d24b000-7fff3d260000 rw-p 7ffffffe9000 00:00 0                      [stack]7fff3d34e000-7fff3d352000 r-xp 7fff3d34e000 00:00 0                      [vdso]ffffffffff600000-ffffffffffe00000 ---p 00000000 00:00 0                  [vsyscall]Aborted

方案:

在默认的情况下,产生这个错误的程序也会被中止。但是,这(以及是否产生错误信息)可以通过环境变量 MALLOC_CHECK_ 来控制。以下的设置是被支持的:
0 — 不产生错误信息,也不中止这个程序
1 — 产生错误信息,但是不中止这个程序
2 — 不产生错误信息,但是中止这个程序
3 — 产生错误信息,并中止这个程序
备注
如果 MALLOC_CHECK_ 被设置为除 0 以外的值,这会使 glibc 进行更多的检查并可能影响到系统的性能。
export MALLOC_CHECK_=0

类似的错误还有:

*** glibc detected *** php-fpm: pool www: corrupted double-linked list: 0x0000000002150b10 ***"

转载地址:http://fiayl.baihongyu.com/

你可能感兴趣的文章
[bzoj2809] 派遣
查看>>
Windows2003上使用IIS7 Express使用FastCgi运行php
查看>>
安装程序时 “向数据库写入数据时发生错误!”
查看>>
图文:高春辉和他的网站梦
查看>>
网页之间的参数传递
查看>>
初步学习Django-第四篇:views.PY文件详解
查看>>
OAuth2简易实战(四)-Github社交联合登录
查看>>
Netty学习大纲
查看>>
OC中的私有方法
查看>>
分享几段JavaScript
查看>>
C++中的多态和Objective-C中的“多态”
查看>>
js基础五
查看>>
构建执法阅读笔记01
查看>>
剑指offer:合并两个排序的链表
查看>>
1602液晶显示实验
查看>>
图片水印
查看>>
Quart2D的基本介绍
查看>>
Lua点号和冒号区别
查看>>
STL基础
查看>>
有没有人要贪吃蛇的代码,然而有....................
查看>>