设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
功能型操作系统 —— LinuxSir.cn
›
Linux小型、嵌入式系统
›
多线程calloc内存不足coredump问题
返回列表
查看:
1839
|
回复:
4
多线程calloc内存不足coredump问题
[复制链接]
feiliang1983
feiliang1983
当前离线
积分
52
IP卡
狗仔卡
发表于 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的问题。
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
1987a
1987a
当前离线
积分
143
IP卡
狗仔卡
发表于 2008-4-24 21:47:32
|
显示全部楼层
最大可能是你的程序问题.
1.查内存泄露
2.查malloc/calloc free, 看什么地方对同一地址free两次
体力活
回复
支持
反对
使用道具
举报
显身卡
remote fish
remote fish
当前离线
积分
704
IP卡
狗仔卡
发表于 2008-4-24 22:01:18
|
显示全部楼层
要是程序能在 PC 上跑, 或者其核心能在 PC 上调试的话, 用 valgrind 之类的工具检测一遍, 大体上内存相关的问题就都能发现了
回复
支持
反对
使用道具
举报
显身卡
pagx
pagx
当前离线
积分
227
IP卡
狗仔卡
发表于 2008-6-3 17:19:17
|
显示全部楼层
可以尝试多次分配内存。然后一次性全部free的方式。免得跟踪麻烦, 虽说这样内存的消耗峰值比较高。
回复
支持
反对
使用道具
举报
显身卡
camelguo
camelguo
当前离线
积分
33
IP卡
狗仔卡
发表于 2008-6-23 12:01:22
|
显示全部楼层
既然coredump了为何不使用gdb调试一下,非常容易定位问题。不需要在这里猜测。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表