免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2349 | 回复: 5
打印 上一主题 下一主题

高难度问题求教。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-09-18 21:05 |只看该作者 |倒序浏览
程序开发环境:
硬件环境:Ultra 6(多CPU),SPARC芯片
操作系统:SUN OS 5.8(Solaris 2.8  )
编译工具:gcc 2.95.2
使用库:STL

问题:
程序经常CORE DUMP,且使用gdb打印信息如下(大部分情况都是这样的):
#0 0xff1c2924 in t_splay () from lib/libc.so.1
(gdb) where
#0 0xff1c2924 in t_splay () from /usr/lib/libc.so.1
#1 0xff1c2924 in t_delete () from /usr/lib/libc.so.1
#2 0xff1c23c4 in realfree () from /usr/lib/libc.so.1
#3 0xff1c2c68 in cleanfree () from /usr/lib/libc.so.1
#4 0xff1c2c68 in _malloc_unlocked () from /usr/lib/libc.so.1
#5 0xff1c1d9c in malloc() from /usr/lib/libc.so.1
#6 0x531e4 in __malloc_alloc_template<0>;::allocate (__n=32) at stl/stl_alloc.h:158

说明:
1、在多CPU(CPU个数大于1)情况下,这个问题经常出现;如果在单CPU环境下,该问题比较少见;
2、如果在编译的时候在Makefile文件中加入__USE_MALLOC,则不会出现CORE DUMP,则转变为程序访问list或者vector时的死循环;
3、写一个测试程序的时候,直接执行程序(不通过后台运行),则当CORE DUMP发生的时候,显示:Bus Error,而不是Seg Error;且在多CPU环境下发生频率最高,单CPU情况下几乎见不了几次发生这个问题;
4、曾经怀疑是由于重复释放list节点导致,可是找不到证据。

如果你遇到过这个问题,且有处理该问题的经验,请你回复。多谢!

论坛徽章:
0
2 [报告]
发表于 2003-09-19 07:36 |只看该作者

高难度问题求教。

是多线程的程序吧,在进行STL相关操作前加锁试试? pthread_mutex_lock之类。

论坛徽章:
0
3 [报告]
发表于 2003-09-19 22:43 |只看该作者

高难度问题求教。

论坛徽章:
0
4 [报告]
发表于 2003-09-27 12:21 |只看该作者

高难度问题求教。

总线错误一般是两个变量的长度不匹配造成的,而且存储器管理程序一般将偶字节的数据放到偶地址中,再仔细检查一下你的程序,用gdb跟到函数里边看看呢?
tomac 该用户已被删除
5 [报告]
发表于 2003-09-30 14:13 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2003-10-17 16:43 |只看该作者

高难度问题求教。

Pls check ALL TYPES of ur variables
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP