当前位置:  技术问答>linux和unix

内存分配当机(malloc_consolidate)

    来源: 互联网  发布时间:2016-08-24

    本文导语:  本帖最后由 daisy8675 于 2010-05-10 09:33:06 编辑   最近程序运行,会比较频繁的当机,查看dump发现当机点总是内存分配函数(malloc_consolidate)。 症状: 函数在malloc_consolidate中不能返回,程序收到 Segmentation fault(11)而当机...

本帖最后由 daisy8675 于 2010-05-10 09:33:06 编辑
  最近程序运行,会比较频繁的当机,查看dump发现当机点总是内存分配函数(malloc_consolidate)。
症状: 函数在malloc_consolidate中不能返回,程序收到 Segmentation fault(11)而当机。
其中一次栈如下:
#0  0x007d5401 in malloc_consolidate () from /lib/libc.so.6
#1  0x007d73bd in _int_malloc () from /lib/libc.so.6
#2  0x007d93ab in malloc () from /lib/libc.so.6
#3  0x00c50aa7 in operator new () from /usr/lib/libstdc++.so.6
#4  0x00c50bdd in operator new[] () from /usr/lib/libstdc++.so.6
#5 0x085af1ef in function5 (this=0xbfdc3864, byteBufLen=1024, bitBufLen=256) at *.cpp:95
#6 0x085af962 in function6 (this=0xbfdc3864) at *.cpp:24
#7 0x0814931d in function7 (this=0x94cba48, user=0x2492f220, npcOid=2483, bAuto=true) at *p.cpp:1787
#8 0x0814af06 in function8 (this=0x94cba48, cre=0x1c6f8550, user=0x2492f220) at *.cpp:1827
#9 0x085b2dee in function9 (this=0x92e8c6c, ev=0x8775100, data=0xbfdc3a20) ...

栈底函数每次相同,但是栈内容从不重复。

网上搜索了一把,众说纷纭,莫衷一是,还请高手现身指点,谢谢。
主要想知道几个要点:
1 是栈越界还是堆越界,为什么这种越界会引起这种问题呢,小弟实在不能理解。
2 怎样从dump文件找出蛛丝马迹,以尽快将真凶缉拿归案呢?


|
byteBufLen=1024, bitBufLen=256..这个参数大概是个什么意思。


另外。ev_base::EvMemPacket::SetSize 这个函数是执行到哪里了。是刚进入函数还是已经开始执行函数语句。


你可以先定位一下crash的语句么?

|
#3 0x00c50aa7 in operator new () from /usr/lib/libstdc++.so.6
#4 0x00c50bdd in operator new[] () from /usr/lib/libstdc++.so.6

如果这里的new不是你的语句调用的,那就是函数调用过程中的堆栈内存分配失败。


那么你应该检查你调用的函数里,是否有大量的堆栈变量。如果有,应该尽可能改成堆分配。

另外你的程序运行环境是什么平台。有些嵌入式平台非常恶心的。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Vectors 成员 get_allocator():返回vector的内存分配器
  • 一个问题,关于kmalloc分配的内存和编译器自动分配的内存的问题(堆和栈)
  • C++ Vectors 成员 capacity():返回vector所能容纳的元素数量(在不重新分配内存的情况下)
  • 【求助】AIX下进程内存分配问题,无法分配超过256M的内存
  • c/c++内存堆分配和栈分配理解
  • 请教一个关于内存分配的问题(系统和DMA共享一块物理内存空间)
  • c/c++中的内存分配 malloc 和 new介绍及相互之间的区别
  • 问个LINUX内存分配的问题。
  • 64位系统是否可以分配超过2GB的内存
  • 内存池和SLAB分配器有什么区别呀,在用法上
  • linux内核分配内存,及管理?
  • 请教Linux内存分配策略与Windows有何异同?
  • *****什么命令可以看到unix的最小内存分配单位?*****
  • 动态分配内存后,memset失败
  • 奇闻:Apache+Apache JServ 1.1.1+1G内存居然报内存不够,那位高友知道参数设置,把俺的1G内存都利用起来,感激不尽啊 iis7站长之家
  • C语言内存分配问题。
  • 分配的内存不可用?真是晕死!
  • 进行内存分配时为什么要对给定的大小重新计算大小???
  • 关于内存分配
  • 请问:在JAVA中创建句柄后,有没有给这个对象分配内存?
  • 请教一个AIX下内存分配的问题
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 我的机器内存128 ,安装redhat9 后,可用内存很少了,如何节省内存呢?
  • C/C++内存池实现介绍及基本要求
  • 奇闻:Apache+Apache JServ 1.1.1+1G内存居然报内存不够,那位高友知道参数设置,把俺的1G内存都利用起来,感激不尽啊
  • linux下free命令显示的内存使用情况分析
  • 怎样读取指定内存地址处指定长度的内存数据???(
  • Ubuntu查看内存,进程相关命令介绍
  • 【操作系统虚拟内存和物理内存疑惑】
  • Linux 共享内存介绍及实现代码
  • Solaris下如何获得物理内存和虚拟内存的大小?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3