日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

ATS 6.2.1打release版本rpm包时插件中出现undefined symbol的问题追踪

發(fā)布時間:2023/11/27 生活经验 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ATS 6.2.1打release版本rpm包时插件中出现undefined symbol的问题追踪 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
問題場景
我基于ATS 6.2.1社區(qū)版整合進一些插件,發(fā)現(xiàn)debug版本一直運行好好的,后來改為release版本(就是configure時不加--enable_debug)時,安裝后顯示下面的出錯信息
[May 11 11:33:18.659] Server {0x2ab7cd116700} ERROR: <RemapConfig.cc:1360 (remap_parse_config_bti)> [ReverseProxy] failed to add remap rule at /etc/trafficserver/remap.config line 206: Can't load plugin "/usr/lib64/trafficserver/plugins/libtsrefinequery.so" - /usr/lib64/trafficserver/plugins/libtsrefinequery.so: undefined symbol: _ZN17RefineQueryConfig7IsWhiteEv

這會ATS反復重啟,后果非常嚴重!


問題定位
根據(jù)報錯的信息,找到源碼Remap.config.cc中的相應代碼位置
remap_parse_config_bti()
remap_load_plugin()
dolmen()
dlerror()
發(fā)現(xiàn)這里的報錯信息實質(zhì)是就是,dlopen調(diào)用一個插件的so,發(fā)現(xiàn)里面沒有需要的符號信息,就報這里的錯誤

問題分析
1.一些無謂的摸索
上述場景寫個demo就能驗證出來,所以網(wǎng)上的觀點集中在,沒有加載到動態(tài)庫之類的簡單問題,仔細分析之后,發(fā)現(xiàn)都不太切合我的問題場景。因為這里的出錯信息已經(jīng)明確說,
已經(jīng)找到動態(tài)庫,都是沒有里面的符號_ZN17RefineQueryConfig7IsWhiteEv
2.debug版本一切正常,但是release版本就有這個問題
3.將debug版本中的libtsrefinequery.so覆蓋release版本中的同名動態(tài)庫,發(fā)現(xiàn)正常

最自然最直接的方法,我最后覺得還是直接分析動態(tài)庫中的符號差異,比較接地氣。

linux 查看so文件導出的符號?
#nm -D ****.so,
#nm ****.a

下面是nm對應的用法


下面是對比兩個動態(tài)庫中的符號差異


查明原因

通過研究該插件中的相關源碼,發(fā)現(xiàn)一個可疑點


在一個c文件中定義的inline函數(shù)是不能在其它c文件中直接使用.也就是,這個inline會使編譯器的行為產(chǎn)生一些差異。


解決方法

去掉該inline

下面是去掉inline之后重新打包安裝之后的動態(tài)庫符號表對比圖,發(fā)現(xiàn)_ZN17RefineQueryConfig7IsWhiteEv由原來的W類型變?yōu)榱薚類型,這正是我們需要的結果。


再次安裝確認,debug和release版本都統(tǒng)一了,沒有問題。


參考文獻

[1].http://blog.csdn.net/qq_34488499/article/details/51873341

[2].http://daisy8867.blog.51cto.com/1043582/1201568/
[3].http://blog.csdn.net/shuanghujushi/article/details/23025055

總結

以上是生活随笔為你收集整理的ATS 6.2.1打release版本rpm包时插件中出现undefined symbol的问题追踪的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。