LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1839|回复: 4

多线程calloc内存不足coredump问题

[复制链接]
发表于 2008-4-24 21:19:26 | 显示全部楼层 |阅读模式
我在linux嵌入式平台上跑多线程应用程序时发现程序在空闲内存不足时会发生coredump。物理内存充足(128M),从/proc/meminfo上看,MemFree大概在2M左右,Buffer和Cache合计90几兆,Linux-2.6.10+glibc2.3.3。
从我捕获的log看在coredump之前,线程会有2到30秒的时间执行page fault操作。我怀疑是calloc/malloc需要一次性申请大块连续内存导致,但是我以前没有见过buffer+cache充足时线程因mem不够发生coredump的。

有没有那位兄弟遇到过相似问题,若有的话请指点一下。这个问题搞了很长时间一直没有头绪,不清楚是glibc的问题还是kernel的问题。
发表于 2008-4-24 21:47:32 | 显示全部楼层
最大可能是你的程序问题.
1.查内存泄露
2.查malloc/calloc free, 看什么地方对同一地址free两次

体力活
回复 支持 反对

使用道具 举报

发表于 2008-4-24 22:01:18 | 显示全部楼层
要是程序能在 PC 上跑, 或者其核心能在 PC 上调试的话, 用 valgrind 之类的工具检测一遍, 大体上内存相关的问题就都能发现了
回复 支持 反对

使用道具 举报

发表于 2008-6-3 17:19:17 | 显示全部楼层
可以尝试多次分配内存。然后一次性全部free的方式。免得跟踪麻烦, 虽说这样内存的消耗峰值比较高。
回复 支持 反对

使用道具 举报

发表于 2008-6-23 12:01:22 | 显示全部楼层
既然coredump了为何不使用gdb调试一下,非常容易定位问题。不需要在这里猜测。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表