关于 xml 库运行时的segmentation fault 问题
? ? 最近做一個項目,需要用到xml庫加載xml文件。程序編譯運行的環(huán)境是centos6.5+gcc4.7。
? ? 由于使用的centos6.5是簡單安裝的,因此一些依賴庫都是自己下載rpm安裝包安裝,其中就包括libxml2。
? ? 問題出現(xiàn)了,兩臺簡單安裝的centos linux 環(huán)境虛擬機,一臺上面正常運行,一臺上面加載xml文件時出現(xiàn)segmentation fault 。
? ? 解決過程:
? ? 1、bt查看segmentation fault?堆棧,發(fā)現(xiàn)死在libc.so.6 中。
? ? 2、在另一臺正常運行的機器上加斷點,對比兩個調(diào)用棧,發(fā)現(xiàn)調(diào)用的接口名都是一樣。
? ? 3、繼續(xù)找堆棧中的不同,堆棧上面有一些依賴庫文件的版本信息,挨個對比,發(fā)現(xiàn)正常運行的依賴庫中有一個zlib-1.2.3,而出現(xiàn)segmentation fault 的依賴庫中沒有。
? ? 4、使用rpm -qa zlib 查看zlib的版本,發(fā)現(xiàn)出現(xiàn)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的錯誤沒有了,程序正常運行!
? ? 總結(jié):這是本人作為一個新手解決問題的方法,有大牛告訴我可以查看符號表,貌似是nm命令,如果上面的方法不能解決問題,大家可以嘗試一下nm。希望能幫到大家!
? ?
? ?
轉(zhuǎn)載于:https://www.cnblogs.com/liuxftj/p/liuxf8676_tj.html
總結(jié)
以上是生活随笔為你收集整理的关于 xml 库运行时的segmentation fault 问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软私有云最佳工作模式
- 下一篇: Http Status 304响应状态的