免费注册 查看新帖 |

Chinaunix

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

return的时候程序core dump [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-10-14 14:55 |只看该作者 |倒序浏览
系统环境:AIX 。编译器:xlc。程序:64位。
程序使用了一个xml的解析器:XERCESC(IBM的一个免费解析器)。
该解析器分配了几个对象进行xml解析用,然后发现解析部分所在的函数在return的时候会导致程序崩溃,查了一下,若是使用对象自身的release方法,无论是哪个的,都会崩溃,但是若是不对对象进行任何操作,则程序能正常返回。
找了一下相关资料和帮助,且dbx了一下,发现是因为对象本身的release方式涉及到了对栈上的数据的破坏,从而导致整个栈的破坏。可是该部分程序我已经在hp(aCC)下执行过了且没有任何问题,所以就猜想,是不是xlc对于对象的管理有点与众不同?

该部分程序因为项目需要是编译成一个动态库,然后提供调用的。而所用的系统上没有gcc没有g++没有gdb,就是一个dbx,条件实在很恶劣。各位大哥大姐有没有什么好的方法或者建议?
能不能提供一种在程序中跟踪自身进程堆栈完整信息的方法?

论坛徽章:
0
2 [报告]
发表于 2004-10-14 17:33 |只看该作者

return的时候程序core dump

哪位大哥帮帮忙啊?

论坛徽章:
0
3 [报告]
发表于 2004-10-15 09:18 |只看该作者

return的时候程序core dump

估计还是程序原因引起的内存越界,我在sco上也遇到过。只有通过检查程序来解决。

论坛徽章:
0
4 [报告]
发表于 2004-10-15 10:45 |只看该作者

return的时候程序core dump

现在能够定位是内存越界,但是因为引用的对象是被封装的,那么只能通过定位谁越界来确定问题所在,然后想其他的办法绕过。
请问哪位有办法可以确定越界者?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2004-10-15 10:56 |只看该作者

return的时候程序core dump

基本上不考虑环境有问题,也可以认为XERCESC是稳定的
如果release就出错,则只能说明release的对象有问题(非法,或未初始化)。也就是说,你对XERCESC的用法不对,对其中使用的对象未初始化。看XERCESC的使用手册。

论坛徽章:
0
6 [报告]
发表于 2004-10-15 11:11 |只看该作者

return的时候程序core dump

谁有xercesc下使用meminputsource来对缓存区的进行解析的例子?我使用的是2.5版本的,2.4版本也有,程序是根据上面的手册上的例子写的,hp下没有问题,但是到了AIX下反而有问题了…………

论坛徽章:
0
7 [报告]
发表于 2004-10-18 10:37 |只看该作者

return的时候程序core dump

自己再顶一下,希望哪位大哥看见了帮忙研究一下
:(

论坛徽章:
0
8 [报告]
发表于 2004-10-18 10:48 |只看该作者

return的时候程序core dump

显然是栈被破坏了。
检查你函数内部变量的越界行为。

论坛徽章:
0
9 [报告]
发表于 2004-10-18 16:28 |只看该作者

return的时候程序core dump

是啊,知道是越界了,但是对于被封装的对象如何越界以及如何破坏堆栈,想有一个能通过程序实现的跟踪方式。
因为我调用了N层的库链接

论坛徽章:
0
10 [报告]
发表于 2004-10-18 19:55 |只看该作者

return的时候程序core dump

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP