您的位置:首页 > 运维架构

*** glibc detected *** double free or corruption (fasttop)

2014-06-06 16:33 507 查看
在执行一个程序时,出现如下错误:

*** glibc detected *** double free or corruption(fasttop):***

解决方法:

1.该错误的意思是:对一个地址先后进行两次free()操作就会引起这种错误代码,如果是自己编写的代码,就仔细地检查一下代码;

g_free(p=g_malloc(sizeof(int)));

g_free(p);

上面的就是重复释放。

2.如果是你下载的软件,那么出现这样的情况通常是因为版本不匹配。

3.设置MALLOC_CHECK_环境变量再运行程序,呵呵,错误信息消失。

MALLOC_CHECK_=0 ./myprogram

glibc 可以执行附加的内部数据健全检查,从而在尽可能早的时候发现和保护数据被破坏。在默认的情况下,当被破坏的数据被发现时,与以下相似的错误信息会被显示在标准的错误输出上(如果 stderr 没有打开,会被记录在 syslog 中):

*** glibc detected *** double free or corruption: 0x0937d008 ***

在默认的情况下,产生这个错误的程序也会被中止。但是,这(以及是否产生错误信息)可以通过环境变量 MALLOC_CHECK_ 来控制。以下的设置是被支持的:

0 - 不产生错误信息,也不中止这个程序

1 - 产生错误信息,但是不中止这个程序

2 - 不产生错误信息,但是中止这个程序

3 - 产生错误信息,并中止这个程序

备注

如果 MALLOC_CHECK_ 被设置为除 0 以外的值,这会使 glibc 进行更多的检查并可能影响到系统的性能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: