关于 xml 库运行时的segmentation fault 问题

    最近做一个项目,需要用到xml库加载xml文件。程序编译运行的环境是centos6.5+gcc4.7。

    由于使用的centos6.5是简单安装的,因此一些依赖库都是自己下载rpm安装包安装,其中就包括libxml2。

    问题出现了,两台简单安装的centos linux 环境虚拟机,一台上面正常运行,一台上面加载xml文件时出现segmentation fault 。

    解决过程:

    1、bt查看segmentation fault 堆栈,发现死在libc.so.6 中。

    2、在另一台正常运行的机器上加断点,对比两个调用栈,发现调用的接口名都是一样。

    3、继续找堆栈中的不同,堆栈上面有一些依赖库文件的版本信息,挨个对比,发现正常运行的依赖库中有一个zlib-1.2.3,而出现segmentation fault 的依赖库中没有。

    4、使用rpm -qa zlib 查看zlib的版本,发现出现segmentation fault的机器上有两个版本的libz-1.2.3 和 1.2.5。

    5、使用rpm -ql zlib 查找zlib所在的路径,进一步对比。segmentation fault的机器上libz.so 软连接的是高版本的libz-1.2.5.

    6、删掉segmentation fault的机器上的libz-1.2.5,将libz.so重新软连接到libz-1.2.3,再运行一下程序,segmentation fault的错误没有了,程序正常运行!

    总结:这是本人作为一个新手解决问题的方法,有大牛告诉我可以查看符号表,貌似是nm命令,如果上面的方法不能解决问题,大家可以尝试一下nm。希望能帮到大家!

   

   

转载于:https://www.cnblogs.com/liuxftj/p/liuxf8676_tj.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值