*** glibc detected ***

简介:

现象:
今天线上一台服务器的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<sys/types.h>  /*提供类型pid_t,size_t的定义*/
#include<sys/stat.h>
#include<fcntl.h>
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/test
00600000-00601000 rw-p 00000000 fd:00 1081356                            /root/test/c/test
049cc000-049ed000 rw-p 049cc000 00:00 0                                  [heap]
3dfb800000-3dfb81c000 r-xp 00000000 fd:00 1736741                        /lib64/ld-2.5.so
3dfba1c000-3dfba1d000 r--p 0001c000 fd:00 1736741                        /lib64/ld-2.5.so
3dfba1d000-3dfba1e000 rw-p 0001d000 fd:00 1736741                        /lib64/ld-2.5.so
3dfbc00000-3dfbd4f000 r-xp 00000000 fd:00 1736747                        /lib64/libc-2.5.so
3dfbd4f000-3dfbf4e000 ---p 0014f000 fd:00 1736747                        /lib64/libc-2.5.so
3dfbf4e000-3dfbf52000 r--p 0014e000 fd:00 1736747                        /lib64/libc-2.5.so
3dfbf52000-3dfbf53000 rw-p 00152000 fd:00 1736747                        /lib64/libc-2.5.so
3dfbf53000-3dfbf58000 rw-p 3dfbf53000 00:00 0 
3e0d200000-3e0d20d000 r-xp 00000000 fd:00 1736868                        /lib64/libgcc_s-4.1.2-20080825.so.1
3e0d20d000-3e0d40d000 ---p 0000d000 fd:00 1736868                        /lib64/libgcc_s-4.1.2-20080825.so.1
3e0d40d000-3e0d40e000 rw-p 0000d000 fd:00 1736868                        /lib64/libgcc_s-4.1.2-20080825.so.1
2ae478170000-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 ***"


目录
相关文章
|
存储 安全 数据挖掘
带你读《Apache Doris 案例集》——06 Apache Doris 助力中国联通万亿日志数据分析提速10倍(1)
带你读《Apache Doris 案例集》——06 Apache Doris 助力中国联通万亿日志数据分析提速10倍(1)
544 1
|
网络协议 Linux
Centos IP、DNS设置
1、CentOS 修改DNS 修改对应网卡的DNS的配置文件# vi /etc/resolv.conf 修改以下内容 nameserver 8.8.8.8 #google域名服务器nameserver 8.8.4.4 #google域名服务器2、CentOS 修改网关 修改对应网卡的网关的配置文件[root@centos]# vi /etc/sysconfig/network 修改以下内容NETWORKING=yes(表示系统是否使用网络,一般设置为yes。
2741 0
|
缓存 负载均衡 应用服务中间件
nginx配置域名转发、反向代理、负载均衡
本文是博主学习nginx的记录,希望对大家有所帮助。
3435 0
|
11月前
|
缓存 Linux 编译器
【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案
通过上述步骤,您应该能够在CentOS环境中成功安装并使用log4cplus日志组件。面对任何安装或使用过程中出现的问题,仔细检查错误信息,对照提供的解决方案进行调整,通常都能找到合适的解决之道。log4cplus的强大功能将为您的项目提供灵活、高效的日志管理方案,助力软件开发与维护。
383 0
|
网络协议 Linux iOS开发
《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(2)-Wireshark在Windows系统上安装部署
【2月更文挑战第2天】《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(2)-Wireshark在Windows系统上安装部署
331 4
|
算法 Java 数据库连接
mybatis plus 主键策略
mybatis plus 主键策略
167 2
|
11月前
|
资源调度 JavaScript 前端开发
yarn源|yarn 国内镜像+linux删除大量文件
yarn源|yarn 国内镜像yarn源|yarn 国内镜像+linux删除大量文件
1353 0
|
开发工具 Android开发 iOS开发
hbuilderx云打包ios证书和上架全攻略
现在很多公司都使用uniapp作为底层框架来开发app应用,而uniapp的开发工具hbuilderx云打包的时候,需要证书和证书profile文件。 假如是ios应用,则还需要上架到appstore. 假如是安卓应用,生成证书很简单,使用香蕉云编在线生成一个证书即可。
1513 0
hbuilderx云打包ios证书和上架全攻略
|
编解码 人工智能 PyTorch
Stable Diffusion如何生成高质量的图-prompt写法介绍
Stable Diffusion如何生成高质量的图-prompt写法介绍
|
Java 关系型数据库 MySQL
Spring 事务【隔离级别与传播机制】
Spring 事务【隔离级别与传播机制】
Spring 事务【隔离级别与传播机制】

热门文章

最新文章