关于 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
總結
以上是生活随笔為你收集整理的关于 xml 库运行时的segmentation fault 问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软私有云最佳工作模式
- 下一篇: 【设计模式】—— 外观模式Facade