久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Linux動(dòng)態(tài)庫(kù)符號(hào)可見(jiàn)性:同名類實(shí)現(xiàn)串門(mén)的定位與根治

Linux動(dòng)態(tài)庫(kù)符號(hào)可見(jiàn)性:同名類實(shí)現(xiàn)串門(mén)的定位與根治 先講一次讓我印象深刻的排查經(jīng)歷。內(nèi)部某個(gè)工具在測(cè)試環(huán)境跑了近兩周都好好的突然某天開(kāi)始頻繁崩潰backtrace里來(lái)來(lái)回回都是同一段邏輯兩個(gè)獨(dú)立模塊各自封裝了一份字符串處理和配置類類名都叫ConfigManager頭文件幾乎相同但內(nèi)部實(shí)現(xiàn)是兩份不一樣的。結(jié)果幾乎所有調(diào)用都走進(jìn)了先加載的那個(gè)實(shí)現(xiàn)讀取配置時(shí)偶爾拿到A模塊的路徑校驗(yàn)時(shí)卻走B模塊的邏輯最后內(nèi)存被按不同布局讀寫(xiě)直接掛掉。一開(kāi)始我懷疑是內(nèi)存踩踏排查到懷疑人生后來(lái)用LD_DEBUG看了一眼符號(hào)綁定才確認(rèn)根子正是Linux動(dòng)態(tài)庫(kù)的符號(hào)默認(rèn)全局可見(jiàn)同名類實(shí)現(xiàn)之間發(fā)生了“串門(mén)”。這類問(wèn)題如果沒(méi)抓住“符號(hào)可見(jiàn)性”這個(gè)點(diǎn)排查起來(lái)很容易繞遠(yuǎn)路。這篇文章就把這個(gè)問(wèn)題的原理、定位手段和根治方案完整講一遍適合維護(hù)大型C/C項(xiàng)目的同學(xué)也適合剛接觸Linux動(dòng)態(tài)庫(kù)、被插件系統(tǒng)里莫名其妙行為搞到頭禿的人。1. 為什么Linux下會(huì)“只認(rèn)一個(gè)實(shí)現(xiàn)”1.1 現(xiàn)場(chǎng)還原兩個(gè)同名類各寫(xiě)各的假設(shè)主程序同時(shí)加載了libA.so和libB.so兩個(gè)動(dòng)態(tài)庫(kù)都定義了ConfigManager這個(gè)類頭文件聲明幾乎一致內(nèi)部實(shí)現(xiàn)卻是兩套獨(dú)立演進(jìn)出來(lái)的東西。庫(kù)A里的實(shí)現(xiàn)走的是舊配置格式字段是8字節(jié)對(duì)齊庫(kù)B里的實(shí)現(xiàn)用新格式字段多了兩個(gè)成員整體結(jié)構(gòu)體變大了一圈。正常情況下每個(gè).so內(nèi)部調(diào)用自己的ConfigManager井水不犯河水。但Linux的動(dòng)態(tài)鏈接器不這么想。它在進(jìn)程全局維護(hù)一張動(dòng)態(tài)符號(hào)解析表遇到同名符號(hào)時(shí)往往采取“先到先得”的策略誰(shuí)先被加載誰(shuí)的定義就作為全局統(tǒng)一符號(hào)。后面庫(kù)里的引用會(huì)被解析到前面那個(gè)庫(kù)的實(shí)現(xiàn)上。結(jié)果就是libB編譯時(shí)按自己頭文件生成的代碼在運(yùn)行時(shí)卻調(diào)用了libA的對(duì)象布局和函數(shù)體而libA的對(duì)象實(shí)際又被libB的代碼按新偏移寫(xiě)字段。這種ABI不一致一旦發(fā)生表現(xiàn)就是離奇的崩潰、間歇性的數(shù)據(jù)錯(cuò)亂以及“明明代碼邏輯沒(méi)問(wèn)題卻總在某些環(huán)境下掛”。1.2 源頭在ELF動(dòng)態(tài)符號(hào)表默認(rèn)全部可見(jiàn)要理解這個(gè)問(wèn)題得先回到ELF的機(jī)制。GCC和Clang在編譯動(dòng)態(tài)庫(kù)時(shí)默認(rèn)會(huì)把所有非static的全局函數(shù)和全局變量都放進(jìn)動(dòng)態(tài)符號(hào)表.dynsym。也就是說(shuō)只要一個(gè)函數(shù)不是寫(xiě)在文件內(nèi)部的static函數(shù)它就會(huì)被子進(jìn)程看到并且可以被其他模塊接管或覆蓋這是Linux與Windows非常大的一個(gè)差異。Windows上寫(xiě)DLL時(shí)需要顯式用__declspec(dllexport)導(dǎo)出不寫(xiě)就不導(dǎo)出默認(rèn)是隱藏的。Linux剛好反過(guò)來(lái)默認(rèn)全導(dǎo)出只有主動(dòng)隱藏才不導(dǎo)出。這種設(shè)計(jì)在早期 Unix 生態(tài)里有一定的歷史原因允許不同模塊自由共享符號(hào)實(shí)現(xiàn)類似全局插樁的效果。但代價(jià)就是當(dāng)多個(gè)模塊各自攜帶同名類實(shí)現(xiàn)時(shí)會(huì)發(fā)生符號(hào)介入進(jìn)程里最終只保留一個(gè)全局有效的定義。正因?yàn)長(zhǎng)inux和Windows的默認(rèn)行為完全相反很多跨平臺(tái)經(jīng)驗(yàn)比較豐富的團(tuán)隊(duì)在遷移到Linux時(shí)反而更容易踩坑在Windows上從來(lái)沒(méi)有這類問(wèn)題因?yàn)闆](méi)主動(dòng)導(dǎo)出就不會(huì)被外面看到到Linux一看動(dòng)態(tài)符號(hào)表里躺著一堆內(nèi)部實(shí)現(xiàn)符號(hào)沖突是必然的。1.3 類實(shí)現(xiàn)錯(cuò)亂的底層鏈路具體到C場(chǎng)景問(wèn)題鏈路通常是這樣的每個(gè).so里都有自己的類實(shí)現(xiàn)包括成員函數(shù)、虛函數(shù)表vtable和typeinfo符號(hào)這些符號(hào)都被放進(jìn)了動(dòng)態(tài)符號(hào)表也就是全局可見(jiàn)范圍內(nèi)。主程序加載庫(kù)時(shí)動(dòng)態(tài)鏈接器在全局范圍內(nèi)做符號(hào)解析。遇到多個(gè)相同符號(hào)名就按一定順序選一個(gè)作為最終綁定目標(biāo)。庫(kù)內(nèi)部代碼里對(duì)該類方法的調(diào)用發(fā)現(xiàn)全局已經(jīng)有了綁定目標(biāo)就不再綁定自己內(nèi)部那份而是跳到選中的那個(gè)實(shí)現(xiàn)。因?yàn)檎{(diào)用方編譯時(shí)用的是自己的頭文件布局與被調(diào)用的實(shí)現(xiàn)版本不一致ABI就崩了。這里面還有一個(gè)容易被忽略的細(xì)節(jié)vtable符號(hào)和typeinfo符號(hào)也是全局符號(hào)同樣會(huì)被介入。結(jié)果就是dynamic_cast、異常處理、甚至簡(jiǎn)單的虛函數(shù)調(diào)用都可能走錯(cuò)門(mén)比普通函數(shù)沖突更隱蔽。2. 先實(shí)錘三個(gè)命令把“串門(mén)”釘死2.1 第一步用nm和readelf看動(dòng)態(tài)符號(hào)表要確認(rèn)是不是符號(hào)沖突先看每個(gè).so都導(dǎo)出了什么。最直接的就是用nm只看動(dòng)態(tài)符號(hào)nm -D libA.so | cfilt | grep -i ConfigManager nm -D libB.so | cfilt | grep -i ConfigManager大寫(xiě)T表示全局可見(jiàn)的text段代碼符號(hào)D是已初始化數(shù)據(jù)B是bss段R是只讀數(shù)據(jù)。只要兩個(gè)庫(kù)都導(dǎo)出了同名符號(hào)就能看到重復(fù)的類名出現(xiàn)。如果覺(jué)得nm輸出太簡(jiǎn)單可以用readelf看更完整的符號(hào)表信息readelf -Ws libA.so | grep ConfigManagerreadelf -Ws輸出的內(nèi)容會(huì)包含符號(hào)所在的段、大小、綁定屬性能更清楚看到哪些是GLOBAL、哪些是LOCAL。如果兩個(gè)庫(kù)里都出現(xiàn)GLOBAL DEFAULT的同名符號(hào)那就要警惕了。這里還有個(gè)更高效的組合命令可以一次性找出兩個(gè)動(dòng)態(tài)庫(kù)動(dòng)態(tài)符號(hào)的重復(fù)交集comm -12 \ (nm -D --defined-only libA.so | awk {print $3} | sort -u) \ (nm -D --defined-only libB.so | awk {print $3} | sort -u)輸出里出現(xiàn)的每一個(gè)符號(hào)名都是潛在的沖突源。這個(gè)命令我強(qiáng)烈建議放到腳本里作為每個(gè)版本發(fā)布前的常規(guī)檢查。2.2 第二步用LD_DEBUG讓鏈接器自己承認(rèn)查看符號(hào)表只能說(shuō)明“有這個(gè)可能”要實(shí)錘“到底綁到了誰(shuí)”最好的辦法是讓動(dòng)態(tài)鏈接器打印綁定過(guò)程LD_DEBUGbindings ./demo_app 21 | grep -i ConfigManager輸出里會(huì)出現(xiàn)類似這樣的信息binding file libB.so [0x00...] to libA.so [0x00...]: ConfigManager::getConfig() normal symbol注意看binding file這一行的方向libB.so里某個(gè)符號(hào)綁定到了libA.so。這一條信息基本就是鐵證直接說(shuō)明了“串門(mén)”發(fā)生的位置。還可以配合files模式看加載順序LD_DEBUGfiles ./demo_app 21 | grep so確認(rèn)到底誰(shuí)先被加載以及先到先得的順序關(guān)系。2.3 第三步崩潰棧交叉驗(yàn)證如果現(xiàn)場(chǎng)已經(jīng)有core dump或gdb棧同樣可以做交叉驗(yàn)證。用addr2line把崩潰地址換算成源碼位置addr2line -f -C -e libB.so 0x0000xxxx正常情況下棧幀應(yīng)該落在libB自己的源碼里。如果地址換算出來(lái)指向libA的源碼或者gdb里info symbol顯示符號(hào)屬于另一個(gè)庫(kù)那問(wèn)題就實(shí)錘了。我在實(shí)際排查中還發(fā)現(xiàn)一個(gè)規(guī)律這類崩潰的棧幀符號(hào)名通常會(huì)“看起來(lái)特別正?!?。比如類名對(duì)、方法名對(duì)、行號(hào)也有但行為完全不對(duì)。如果遇到這種“??粗鴽](méi)啥問(wèn)題卻崩潰”的詭異現(xiàn)場(chǎng)先別急著懷疑編譯器優(yōu)化或者內(nèi)存踩踏先花兩分鐘查一下符號(hào)綁定往往能省掉幾天時(shí)間。3. “錯(cuò)亂”的三種典型形態(tài)3.1 形態(tài)一虛函數(shù)表混亂同名類各自帶有虛函數(shù)時(shí)vtable符號(hào)也是全局可見(jiàn)的。兩個(gè)庫(kù)的vtable都進(jìn)了全局符號(hào)表最終保留一份可能是A的也可能是B的。運(yùn)行時(shí)通過(guò)基類指針調(diào)虛函數(shù)實(shí)際跳轉(zhuǎn)到的可能是另一個(gè)版本的函數(shù)體。這種場(chǎng)景最迷惑人的地方在于代碼調(diào)用關(guān)系本身沒(méi)變但實(shí)際執(zhí)行的邏輯是錯(cuò)的版本而且還不一定崩潰可能只是行為偏差。比如A版本里對(duì)輸入做了二次校驗(yàn)B版本沒(méi)做。用戶數(shù)據(jù)從B模塊入口進(jìn)來(lái)經(jīng)過(guò)另一個(gè)庫(kù)的虛表間接調(diào)用時(shí)可能部分走了A的校驗(yàn)邏輯部分走了B的邏輯最終的數(shù)據(jù)處理結(jié)果處在一個(gè)“兩頭都不靠”的狀態(tài)。3.2 形態(tài)二對(duì)象布局不一致導(dǎo)致臟寫(xiě)這是最危險(xiǎn)的一種。假設(shè)A版本的Record結(jié)構(gòu)是12字節(jié)B版本因?yàn)榧恿俗侄巫兂?0字節(jié)。B模塊的函數(shù)按新版本20字節(jié)的偏移寫(xiě)第16字節(jié)處的字段但這個(gè)對(duì)象實(shí)際是A模塊按12字節(jié)分配出來(lái)的對(duì)象后面的4字節(jié)屬于別的數(shù)據(jù)。這種臟寫(xiě)不會(huì)馬上崩潰可能過(guò)很久才在完全不相干的地方爆出來(lái)。我之前遇到的一個(gè)典型案例就是配置結(jié)構(gòu)體在庫(kù)A按舊版本分配庫(kù)B按新版本寫(xiě)入結(jié)果每次運(yùn)行到特定分支時(shí)堆上的相鄰對(duì)象被改寫(xiě)表現(xiàn)為偶發(fā)的“配置讀取結(jié)果被神秘篡改”。想要快速排查這類問(wèn)題可以把兩個(gè)版本的類各自做一個(gè)sizeof輸出動(dòng)態(tài)打印出來(lái)對(duì)比。如果發(fā)現(xiàn)同一個(gè)類名在不同庫(kù)里的sizeof不一致就要立刻檢查符號(hào)綁定方向。3.3 形態(tài)三靜態(tài)狀態(tài)與單例漂移類的靜態(tài)成員變量、內(nèi)部static局部變量同樣存在多份副本的情況。兩個(gè)庫(kù)各有一份靜態(tài)狀態(tài)但全局符號(hào)解析會(huì)決定進(jìn)程實(shí)際使用哪一份。最典型的癥狀是日志開(kāi)關(guān)改了一個(gè)庫(kù)的靜態(tài)變量另一個(gè)庫(kù)卻完全不理會(huì)或者計(jì)數(shù)器本應(yīng)在A模塊里自增結(jié)果讀到的是B模塊那份初始值。還有inline函數(shù)里的靜態(tài)局部變量在C17以前的多庫(kù)場(chǎng)景里很容易出現(xiàn)副本分裂。如果這個(gè)inline函數(shù)所在的符號(hào)被全局可見(jiàn)地導(dǎo)出了多個(gè)庫(kù)綁定到不同副本時(shí)狀態(tài)就徹底分裂了。這類問(wèn)題編碼階段幾乎無(wú)法避免必須靠符號(hào)可見(jiàn)性策略做系統(tǒng)性防護(hù)。4. 根治方案符號(hào)隱藏、版本腳本、架構(gòu)收斂4.1 最基礎(chǔ)的一步編譯期統(tǒng)一隱藏符號(hào)我推薦的第一道防線就是在編譯動(dòng)態(tài)庫(kù)時(shí)統(tǒng)一加上-fvisibilityhidden參數(shù)g -fvisibilityhidden -shared -o libB.so b.cpp這個(gè)參數(shù)告訴編譯器默認(rèn)情況下所有符號(hào)都設(shè)為隱藏只有顯式標(biāo)記了visibility(default)的符號(hào)才能進(jìn)入動(dòng)態(tài)符號(hào)表。配合的常見(jiàn)做法是在公共頭文件里定義一個(gè)導(dǎo)出宏#if defined(_WIN32) #define API_EXPORT __declspec(dllexport) #else #define API_EXPORT __attribute__((visibility(default))) #endif class API_EXPORT ConfigManager { public: ConfigManager(); std::string getConfig(const std::string key); };這樣類的公共接口被顯式導(dǎo)出類內(nèi)部的輔助函數(shù)、私有方法、模板實(shí)例化細(xì)節(jié)默認(rèn)全部隱藏動(dòng)態(tài)符號(hào)表里只剩下一張面很干凈的導(dǎo)出面。我特別強(qiáng)調(diào)一點(diǎn)這個(gè)改動(dòng)需要覆蓋倉(cāng)庫(kù)里所有模塊不能只改出問(wèn)題的那個(gè)。一個(gè)庫(kù)隱藏了另一個(gè)沒(méi)隱藏沖突照樣存在。最好把編譯參數(shù)寫(xiě)進(jìn)公共構(gòu)建預(yù)設(shè)文件讓所有模塊默認(rèn)繼承。也可以加上-Werrorvismismatch在編譯階段就攔截聲明和定義可見(jiàn)性不一致的問(wèn)題。4.2 更嚴(yán)格的做法用版本腳本做最終閘門(mén)-fvisibilityhidden已經(jīng)足夠解決大部分沖突但它還是會(huì)讓所有“顯式標(biāo)記了default”的符號(hào)進(jìn)入動(dòng)態(tài)符號(hào)表。如果想把導(dǎo)出面收斂到極致可以用鏈接器版本腳本來(lái)把關(guān)先寫(xiě)一個(gè)exports.map{ global: api_*; ConfigManager; _ZN7network*; local: *; };然后鏈接時(shí)加上g -shared -fPIC -Wl,--version-scriptexports.map -o libB.so b.cpp版本腳本的效果比編譯屬性更徹底它會(huì)明確告訴鏈接器除了global段列出的符號(hào)名其他一律不導(dǎo)出相當(dāng)于給動(dòng)態(tài)庫(kù)的對(duì)外接口畫(huà)了一條紅線。這里要特別提醒C的使用者global段里如果要寫(xiě)類名或命名空間需要用nm -D --defined-only看一下mangled后的符號(hào)名再?zèng)Q定寫(xiě)哪一層通配。比如命名空間network下的類可能需要寫(xiě)成_ZN7network*的形式而不是直接寫(xiě)network。用版本腳本的另一個(gè)好處是可以做符號(hào)版本化symbol versioning。同一個(gè)函數(shù)在不同版本里可以定義不同的導(dǎo)出名這屬于更大工程里接口兼容性的玩法但即便暫時(shí)用不上版本化單純用local: *;一條規(guī)則做“默認(rèn)關(guān)閉”已經(jīng)足夠值回票價(jià)。4.3 插件系統(tǒng)的隔離策略插件場(chǎng)景尤其容易踩雷主程序用dlopen加載兩個(gè)插件每個(gè)插件各自靜態(tài)鏈接了一份公共庫(kù)。如果加載插件時(shí)用了RTLD_GLOBAL插件里的全局符號(hào)會(huì)被合并進(jìn)全局符號(hào)表后加載的插件很容易就綁到前面插件的實(shí)現(xiàn)上。哪怕改成RTLD_LOCAL也只解決了一部分問(wèn)題因?yàn)椴寮?nèi)部如果引用同名符號(hào)動(dòng)態(tài)鏈接器依然可能跨插件解析。我現(xiàn)在的建議是三層配合主程序加載插件時(shí)統(tǒng)一使用RTLD_LOCAL不把插件的符號(hào)泄漏到全局。插件自身也開(kāi)啟-fvisibilityhidden插件對(duì)外只暴露約定好的幾個(gè)入口函數(shù)內(nèi)部符號(hào)全部隱藏。如果多個(gè)插件都需要同一個(gè)公共庫(kù)不要在各自插件里靜態(tài)鏈接一份而是單獨(dú)編譯成一個(gè)公共依賴.so讓所有插件都鏈接同一個(gè)文件。這套組合拳打下來(lái)插件之間基本就隔離開(kāi)了。公共依賴的動(dòng)態(tài)庫(kù)只認(rèn)一個(gè)版本不會(huì)再出現(xiàn)多份副本爭(zhēng)奪符號(hào)的情況。4.4 架構(gòu)層的長(zhǎng)期收斂符號(hào)隱藏和版本腳本解決的是“符號(hào)怎么導(dǎo)出”的問(wèn)題。但如果架構(gòu)上允許每個(gè)模塊各自內(nèi)置一份公共代碼那么沖突源會(huì)不斷出現(xiàn)。比較理想的收斂方式是把公共代碼拆到一個(gè)獨(dú)立的公共依賴庫(kù)所有模塊統(tǒng)一依賴這個(gè)庫(kù)而不是在各自源碼樹(shù)里拷貝一份實(shí)現(xiàn)。這里的“公共代碼”不單指自己寫(xiě)的工具類也包括可能被不同模塊以不同版本靜態(tài)鏈接的第三方庫(kù)。如果現(xiàn)狀做不到立刻拆分至少要在編譯參數(shù)上保證所有共用符號(hào)面一致的庫(kù)使用同一個(gè)版本并且所有共享庫(kù)都默認(rèn)隱藏符號(hào)。C的namespace其實(shí)也能起到一定的隔離效果但它的作用只是改變符號(hào)的mangled名稱ELF層面還是有同名的可能所以不要把namespace當(dāng)成唯一的防線。5. 實(shí)際踩坑記錄與細(xì)節(jié)補(bǔ)充5.1 開(kāi)啟隱藏后客戶端鏈接不到符號(hào)開(kāi)啟-fvisibilityhidden之后最常見(jiàn)的報(bào)錯(cuò)是鏈接階段出現(xiàn)“undefined reference to xxx”。這個(gè)原因通常是對(duì)外API的聲明和定義里漏掉了導(dǎo)入側(cè)或者導(dǎo)出側(cè)的標(biāo)記。比如頭文件里類聲明加了API_EXPORT但類內(nèi)某一個(gè)成員函數(shù)在實(shí)現(xiàn)時(shí)又單獨(dú)聲明了一次那個(gè)單獨(dú)的成員沒(méi)帶visibility(default)標(biāo)記導(dǎo)出時(shí)就把它隱藏了。解決辦法也很直白在公共導(dǎo)出宏上統(tǒng)一處理各個(gè)平臺(tái)到宏里做適配不要在單個(gè)函數(shù)上零散加attribute。同時(shí)可以打開(kāi)-v選項(xiàng)或者用nm -D --defined-only確認(rèn)一下編譯后的so到底導(dǎo)出了哪些符號(hào)與實(shí)際需要導(dǎo)出的接口做對(duì)比很快就能找出漏網(wǎng)之魚(yú)。5.2 版本腳本的local: *;導(dǎo)致后續(xù)擴(kuò)展失敗版本腳本使用local: *;后新加一個(gè)API但忘記更新腳本鏈接器會(huì)靜默地不導(dǎo)出它調(diào)用方在運(yùn)行時(shí)或鏈接時(shí)找不到這個(gè)符號(hào)。這類問(wèn)題因?yàn)椴粫?huì)報(bào)編譯錯(cuò)誤很容易漏檢。我的習(xí)慣是在構(gòu)建腳本里加一步符號(hào)清單校驗(yàn)每次構(gòu)建后用nm -D --defined-only生成當(dāng)前導(dǎo)出符號(hào)列表和版本腳本里聲明的api_*或類名做比對(duì)。一旦發(fā)現(xiàn)實(shí)際導(dǎo)出的符號(hào)有新增但沒(méi)有出現(xiàn)在允許名單里就觸發(fā)告警。這支腳本的成本很低但能有效避免“上線后才發(fā)現(xiàn)新接口沒(méi)導(dǎo)出”的尷尬局面。5.3 團(tuán)隊(duì)分支編譯參數(shù)不一致問(wèn)題只在部分機(jī)器出現(xiàn)還遇到過(guò)更隱蔽的情況同一個(gè)庫(kù)在A機(jī)器上編譯后運(yùn)行正常在B機(jī)器上就出現(xiàn)符號(hào)沖突。排查到最后發(fā)現(xiàn)兩邊機(jī)器用的構(gòu)建參數(shù)不一樣一個(gè)開(kāi)了-fvisibilityhidden另一個(gè)沒(méi)開(kāi)。這種“機(jī)器相關(guān)”的現(xiàn)象很容易讓人誤判為環(huán)境問(wèn)題實(shí)際上是編譯產(chǎn)物本身就不一致。比較好的做法是把可見(jiàn)性參數(shù)固化到項(xiàng)目的CMake預(yù)設(shè)或公共編譯配置里禁止各成員在自己的目錄里臨時(shí)改編譯選項(xiàng)。同時(shí)配套一個(gè)腳本掃描倉(cāng)庫(kù)里所有動(dòng)態(tài)庫(kù)的導(dǎo)出符號(hào)表凡是有大量非API符號(hào)泄漏的直接標(biāo)紅。5.4 動(dòng)態(tài)加載RTLD_GLOBAL讓沖突擴(kuò)大如果主程序用dlopen加載插件時(shí)習(xí)慣性地傳了RTLD_GLOBAL那么插件里的符號(hào)就會(huì)全部合并到全局符號(hào)表。兩個(gè)插件都靜態(tài)鏈接了同一個(gè)第三方庫(kù)的不同版本時(shí)第三方庫(kù)的內(nèi)部符號(hào)也會(huì)互相覆蓋。這種場(chǎng)景下即使插件內(nèi)部用了隱藏符號(hào)第三方庫(kù)如果是默認(rèn)可見(jiàn)編譯的沖突依然會(huì)存在。所以我在前面的插件方案里強(qiáng)調(diào)公共依賴一定要單獨(dú)編譯成.so并統(tǒng)一版本別讓插件各自攜帶一份靜態(tài)庫(kù)副本。這屬于架構(gòu)層面的取舍短期看要多維護(hù)一個(gè)庫(kù)長(zhǎng)期看能避免非常多符號(hào)糾纏的“鬼故事”。6. 問(wèn)題速查與自查清單6.1 快速判斷表典型癥狀常被誤判的方向確認(rèn)手段處理建議同名類成員函數(shù)行為錯(cuò)亂內(nèi)存踩踏、編譯器BugLD_DEBUGbindings查看綁定目標(biāo)同名庫(kù)統(tǒng)一版本隱藏符號(hào)結(jié)構(gòu)體字段被寫(xiě)入詭異值堆越界、邏輯Bug打印兩個(gè)庫(kù)中sizeof同名類對(duì)比修復(fù)布局版本銜接符號(hào)隱藏虛函數(shù)調(diào)用進(jìn)入非預(yù)期實(shí)現(xiàn)虛表?yè)p壞、驅(qū)動(dòng)問(wèn)題gdb info symbol查看符號(hào)歸屬vtable符號(hào)導(dǎo)出面收斂配置變更對(duì)某個(gè)模塊不生效緩存問(wèn)題、配置中心Bug檢查靜態(tài)變量符號(hào)是否漂移拆公共依賴統(tǒng)一單例來(lái)源插件各自帶一份公共庫(kù)后崩潰插件接口不兼容對(duì)比插件動(dòng)態(tài)符號(hào)交集公共庫(kù)獨(dú)立成.soRTLD_LOCAL6.2 符號(hào)自查清單發(fā)布前建議做這樣一輪檢查用nm -D --defined-only確認(rèn)動(dòng)態(tài)庫(kù)導(dǎo)出的符號(hào)只有預(yù)期API。用comm比較所有相關(guān)動(dòng)態(tài)庫(kù)的動(dòng)態(tài)符號(hào)交集排查重復(fù)定義。確認(rèn)構(gòu)建參數(shù)里-fvisibilityhidden已經(jīng)全局生效。檢查版本腳本允許名單與實(shí)際導(dǎo)出名單是否一致。插件場(chǎng)景下確認(rèn)沒(méi)有用RTLD_GLOBAL加載插件插件自身符號(hào)已隱藏。確認(rèn)公共第三方庫(kù)只以統(tǒng)一版本被所有模塊依賴。6.3 常用工具一行版最后整理一批我平時(shí)常敲的命令方便直接復(fù)用# 查看動(dòng)態(tài)庫(kù)實(shí)際導(dǎo)出的符號(hào) nm -D --defined-only libX.so | cfilt # 查看符號(hào)詳細(xì)信息 readelf -Ws libX.so | grep 符號(hào)名 # 對(duì)比兩個(gè)庫(kù)的重復(fù)導(dǎo)出符號(hào) comm -12 \ (nm -D --defined-only libA.so | awk {print $3} | sort -u) \ (nm -D --defined-only libB.so | awk {print $3} | sort -u) # 讓動(dòng)態(tài)鏈接器打印符號(hào)綁定過(guò)程 LD_DEBUGbindings ./demo_app 21 | grep 類名 # 將崩潰地址轉(zhuǎn)換為源碼位置 addr2line -f -C -e libX.so 0x4006a0我現(xiàn)在的習(xí)慣是給每個(gè)庫(kù)的構(gòu)建流程都會(huì)掛一個(gè)“導(dǎo)出面審計(jì)”的收尾步驟構(gòu)建完自動(dòng)跑一遍導(dǎo)出符號(hào)清單只要清單里有白名單之外的符號(hào)就立刻告警。這個(gè)做法比等人崩潰之后再回頭排查要省太多事了。符號(hào)可見(jiàn)性說(shuō)白了就是動(dòng)態(tài)庫(kù)的接口契約平時(shí)多花幾分鐘守住契約運(yùn)行時(shí)就能少經(jīng)歷幾次“類實(shí)現(xiàn)錯(cuò)亂”的午夜驚魂。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久日韩精品一区二区| 亚洲美女自拍偷拍视频| 十八禁一区二区无码观看| 思思热久久成人| 四虎精品一区| 九X超碰| 色综合国产在线观看| 一区二区三区日韩欧美| 国产精品激情久久久久久久| 男人的天堂久久狠| 丰满欧美少妇| 色噜噜精品一区二区三| 欧美色综合网| 亚洲色图欧美另类在线| 精品少妇一区二区三区在线视频| 蜜臀久久久99久久久久 | 2017av无码免费无线播| 亚洲欧美另类图片| 亚洲色色色| 久久精品99久久久久久| 婷婷五月天色色| 欧美96精品在线| n1038 一二三区| 国产日韩区| 欧美另类天堂| silk lablo在线观看一区二区| 天天视频综合在线观看视频| 黄污污污污| 99九九精品| 99re这里只有精品中心播放| 久久精品日韩| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 翔田千里Av在线| 久久同城AV| 激情第四色| 人人摸人人摸人人干| 九九九国产| 欧美少妇色综合| 狠狠干狠狠色| 日本人人操人人操| 中国国产精品一区视频| 国产精品爆乳懂色蜜乳| 国产精品片| 久久日本熟女精品一区| 日本不卡二三区| 白嫩国模丰满一二三区| 亚洲s在线观看| 天天插网| 国产一级内射高清视频| 极品人妻少妇综合| 中文字幕国产| 男女啊啊啊| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 18禁的网站在线| 搡老熟女免费视频 | 久久人妻办公室视频| 中文字幕免费看大片| 久久一区二区高清免费| 国模无码一区二区三区在线| 日韩不卡av一二三| 日本色婷婷| 亚洲熟女av日韩熟女| 极品内射| 性爱av在线免费观看| 黄片无码在线制服| 日本精品第一视频在'| 操逼网站视频漫画国产| 色色色99| 欧美三级免费伊人| 91路www| 亚洲熟女一区| 97资源免费视频| 中文无线日韩一区| 欧综合网| 探花在线免费观看视频国产一区| 看黄片视频免费| 日韩精品99999| 嗯嗯啊啊啊啊轻点视频| 国产一区二区三区白丝| 精品国产人成在线| 亚洲第一页色| 精品十三区| 91日日夜夜| 国产日韩怡红院| 狠狠久久手机视频精品| 欧美色宗合| 岛国激情视频软件| 美女露胸露奶头| 亚洲视频二区 | 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 亚洲欧洲日韩中文字幕一区| 国产精品美女久久久久久网站| 777AV电影| 色婷五月| 亚洲色棕合| 成人怡红院| 欧美一区二区三区另类精品| 色哟哟国产精品免费网址| 亚洲九九九| 国产一区二区三三视频| 99色悠悠| 久久久久国色αv免费观看| 伊人一区二区在线播放| 亚洲 图片 综合91| 日本道人妻久久久在线不卡色视频| 91白嫩| 大香网站| 加勒比av中文| 男人的天堂2018.| 国产超碰人人爽人人做| 神马午夜久久久| 日韩精品人妻一区二区| 99自拍视频| 91热色| 一线黄色免费性爱片| 久久久99久9| 亚洲 欧美 第一页| 99色色网| 一区二区影视| 91丨九色丨大屁股| 欧美综合网A| 91狠狠综合久久| 亚洲人妻日日日| 色99色| 99re视频这里只有精品| 青青青国产| 久久亚洲AV无码白度| 99久久9| 99视频精品| 骚熟女AV网| 亚洲精品日日夜夜52| 日1区2区3区2020| 九九热在线精品视频| 久久久女人| 日本91白丝| 1769一区| 99在线啪| 91精品电影18| 91快色色色色色| 俺去啦自拍| 精品国产www久久| 色69大色97香蕉| 中文熟女五十乱码在线| 久久 久久国内精品亚洲| 亚洲不雅视频1区二区| 97精品综合久久| 花花AV导航| 欧美97超碰| 欧美日韩国内不卡| 一起草视频在线| 熟妇艹鸡八| 国产野战露脸在线播放| 国产精品69久久久久久久| 97人人超| 99久久精品无码一区二区毛片免费 | 丝袜AV一二三区| 久久国产成人精品国产成人亚洲| 中文字幕在线观看AV| 加勒比在线观看一区二区| 97久久精品亚洲中六字幕| 香蕉国产精品麻豆亚洲欧美日韩| 亚洲综合一| 久久超碰久| 蜜乳AV.COM| 91M一社| 射欧美综合| 色狠狠综合| 内射夫妻三片| 亚洲色图亚洲| 色悠悠伊人网五月天| 激情综合亚洲| 成人麻豆av电影网站| 欧美姓爱综合网| 国产久久男人天堂| 4141514逼喷水三级片| 国产偷拍自拍在线视频| 91成人在线免费视频| 久久香蕉网| 丝袜天堂网| 久久中出在线| 爽爽歪在线视频| 毛片电影一区二区三区| 翔田千里AⅤHD无码| 人爽不卡视频| 色97欧美| 91丝袜人妻| 女优免费一区二区永久| 婷婷91| 三级三级三级a级全黄三| 亚洲日韩av专区无码| 中文区中文字幕免费看| 噜噜噜噜久久久精品免费| 欧美在线中M| 夜夜福利| 亚洲。日韩。欧美| ,国产乱人伦精品一区二区三区| 丁香六月激情综合| 精品无码一区二区| 一个人免费视频观看在线WWW | 操逼操网| 欧美性爱在线无码| 五月天激情影院| 91动漫操逼视频| 色久桃花影院在线观看| 国产精品宅男免费| 亚洲操操| 国产视频一区二区在线| 亚欧免费观看视频| 国产无马在线| 免费亚洲黄色视频在线观看| 男人的天堂一区三区| 97国产高清视频在线观看| 大香蕉www.超碰| 玖玖爱伊人玖玖爱| 国产日韩人人| 国产午夜精品一区二区三区牛牛| 在线色资源| 亚洲成成熟女人综合一区二区| 欧美综合网A| 中国操逼无码| 国产一区二区三区视频在线看| 欧洲亚洲国产综合在线| 天天操天天舔| 91骚妇| 伊蕉97蜜桃97狠狠综合干 | 丁香六月天| 亚洲。日韩。欧美| 男人的天堂三级| 久久狠狠色噜噜狠狠狠狠97| 日韩激情啪啪| 亚洲色图国产另类| 日天天九九天堂666| 97超碰磁| 日本一区三级韩国| 国产久久一区二区| 97日韩欧美| 亚洲蜜乳av| 野狼激情网| 99热18这里只有精品| 国产h小视频在线观看免费| 国产 日韩,欧美 自拍| 偷窥自拍A片| 中文字幕少妇色 | 精品免费国产二区三区| 精品少妇99| 午夜偷拍久久熟女| 国模不卡一本二本三电影| 国产精品久久久亚洲第一牛牛_在线观看 | 激情99| 日韩乱插| 曰本特级特黄特色黄色A级网站高清在线免费看 | 久久精9| 国产农村妇女精品| 亚洲天堂区| 夜夜嗨老熟女AV一区二区三区| 女性喷水高潮在线观看| 无码又爽又硬又激情免费视频| 久久久久9999精品九九九| 国产视频人人网| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 少妇内射视频| 欧美日日人人天天| 2018天天干在线视频| 精品乱码久久久久| 色五天伊人| 久久蜜色情在线视频xxx免费观看| 97超碰色情| 国内毛片无码一级毛片| 老熟女天天操| 亚洲 综合 欧美| 国产精品乱码久久久久| 亚洲综合网图| 国产高清成人mv在线观看| 熟妇激情| 玖色AV| 黄页av| 99热亚洲天堂| 日韩免费大片一级播放| 熟妇人妻丰满久久久久久久无码 | 国产精品乱人伊人网| 天美av在线观看| 中文久久久| 亚洲高清91| 日本不卡码黄色| 国产丝袜美腿美女麻豆| 性夜影院爽黄A爽免费动漫| 九九热精品在线| 亚洲一区二区三区中文字幕| 久久久月天| 好好的日:com久久九九| 无码国产精品午夜不卡(| 91香蕉国产尤物视频| 大吊色| 爽 好舒服 无码刺激久久| 欧美精品97| 男人的天堂在线| 蜜桃色色网站视频三区| 国产亚洲精品av一区| 777超碰| 91精品久久久久久久久久| 99色悠悠| 婷婷午夜| 久久精品亚洲成a人天堂| 日本一区二区亚洲综合| 九九九九九九九九九九九九九九九女| 人人摸人人添人人操 | 婷婷精品国产欧美精品亚洲人人爽| 天堂8在线新版官网| 中文字幕日韩电影人妻| 九九热免费在线国产视频伊人五月| 亚洲欧洲自拍图片专区满春格| 俞拍自拍| 一二三四视频在线社区中文字幕| 成人青青草原伊人| 亚洲精品1区| 在线只有精品| 激情开心五月天| 大香蕉一线视频| 五月天丁香婷婷综合网站| 99999re| 国产精品一区二区三| 26uuu久久| 9美女超碰在线免费观看| 老熟女搡BBBB搡BBBB视频| 麻豆国产97在线| 免费成人自拍视频在线| 26uuu最新| 精品一级毛片在线观看| 男女一进一出视频久久| 亚洲中文字幕在线视频一区二区| 加勒比综合88| 久操97| 香蕉视频欧美一卡二卡| 97超碰磁| 国产av又色又爽又黄| 屁股久久久久久久| 伊人网免费视频| 熟女这里只有精品6| 天天弄天天操| 日韩999| 国产精品网站免费| 亚洲。日韩。欧美| 91精品国久久久久久无码| 日日做夜狠狠爱欧美黑人| 九九九九日本| 五月天九九日国产精品一区二区三区| 一级免费精品| 91男女啊啊啊| 97在线观看免费视频l| 青青草原香蕉日本Ap| 高清孕妇孕交 交| 精品97久久| 亚洲国产精品99久久久| 日韩婷婷| 丝袜av一区二区三区| 2019男人的天堂| 中文字幕三四区| 在线看的av| 丁香五月激情网| 九九亚洲精品| 97视频在线播放| 99re国产精品视频| 婷婷久久久精品| 五月天激情四射| 精品女人999| 亚洲一二三精品久久网| 老司机午夜福利视频一区二区| 日本亚欧爱爱| 国产性爱乱伦AV| 99热超碰| 欧美啪啪色吧在线| 亚洲AV成人无码一区二区三区在线观看| 一区二区 韩日AV| 免费超碰97久久| 无码高清操逼网址| 亚洲男人天堂Av| 精品9999| 人妻在线视频| 亚洲青青草| 精品成人亚洲午夜电影| 久久鲁夜| 欧美一区二区福利在线| 91干熟女| 欧美激情 亚洲色图| av片在线观看免费播放| 亚洲熟妇综合久久久久久| www.yeyecao| 日本中文字幕高跟| 熟女一区二区| 懂色aV一区二区天美传媒| 人妻少妇av在线观看| 亚洲久草AV色图| 欧美人人AAA| 天天爽入口| 柠檬AV导航| 人妻天堂三区| 密臀在线免费观看| 波多野42部无码喷潮在线观看| 亚洲国产一级中文综合久久天堂在线免费观看 | 国产精品欧美激在线| 亚洲无码国产探花在线观看| 欧美国产一区二区三区麻豆传媒| 亚乱色| 东北女人性交| 国产午夜精品一区二区三区牛牛| 色综合天天| 日韩国产中文字幕| 综合网天天| 97视频620| 伊人激情五月天一区二区| 中文字幕免费在线观看| 欧美男女午夜啪啪| 日本免费专区| 中文字幕精品三级久久久| 日韩成人电影AV| 日韩欧美日韩| 视频在线观看一二三区| 日韩乱伦影音先锋| 欧美人妻制服| 欧美熟妇亚洲版| 五月丁香啪啪啪| 国产探花日韩援交| 96超碰网| 国产精品国产| 国产九九久久久精品| 福利视频一区二区微拍| 国产精品久久久啊| 久草成人影片| 亚洲综合113页| 亚洲天堂久久| 淫乱图区| 欧美一区二区在线资源| 激情深爱五月天| 国产精品无码av| 搡老熟女免费视频| 日日爱99| 日韩97P| 黄色成年| 99色热| 久久精品一区一起草| 啊啊啊啊二区好大| 欧美天天综| 久久久爆乳翘臀一线天伦理视频| 日本性爱网址| 操逼操网| 人人干人人操人人..com| 久久免费9| 日日骚一区二区三区| 国产无码精品久久久久久| 91欧美美女日韩国产婷婷| 丁香九月 婷婷| 99久久亚洲精品无码毛片潘甜甜| 亚洲欧美清纯| 婷婷五月天激情四射| 亚洲色图日韩丝袜制服一区二区五月在线| 四虎免费视频| 亚州精品人妻一二三区| 久久久一区二区| 97精品视频在线| 中日韩久久久免费看| 黑人综合色| 超碰久久.com| 91亚.色| 日韩欧美~中文字| 91色射| 日本不卡在线二区三区| 九九无码| 欧美成人一级免费电影| 日本欧美亚洲高清在线看| 久久国产免费激情视频| 国产树林里野战在线看| 午夜一区| 用力操死我| 99久久精品欧美国产| 三级色综合| 97久久久| 秋霞一区二区三区四区五区六区七区| AV色五月天| 91精品国产综合久久久蜜臀酒店| 亚洲日韩在线a不卡99精品| 日操粉逼逼| 欧美少妇熟女| 久草久日| 人人么人人操| 婷婷五月色| 欧美97日韩| 精品大全99999| 97超碰精品| 性爱精品一区| 黄网站黄视频网站进入口| 少好三P| 精品视频在线观看精品| 人人操人人摸人| 中文字幕在线免费观看视频| 久久97超碰香蕉| 日韩亚洲中文字幕在线| 日本伦乱九九九综合| 在线视频免费播放一区| 动漫片子网站3黄| 大香蕉性欧美| 久久久免费一级黄片| 玖玖爱综合| 天天爱天天操| 自偷自拍的亚洲视频| 日韩资源网| 久久av无码| 久久久精久久久| 日日夜夜模| 狠狠操官网| 欧美少妇一区二区三区| 国产女大学生AV| 免费啪啪啪网站18岁| 亚洲怡春院| 狠狠色狠狠色狠狠五月| 欧洲亚洲天堂精品| 欧美性爱第一区| 9精品在线| 熟妇人妻一区二区三区| 丰满人妻-区二区三区免费看| 久草视频在线视频在线视频在线观看 | 亚洲欧洲日本精品中文a∨| 中文字幕老熟妇黄色视频| 亚洲视频精选| 在现视频女上位好爽| 1769成人国产精品视频| 欧美 传媒 麻豆 日韩 偷拍| 强被迫伦姧在线观看无码网站| 亚洲高清视频在线观看| 色综合久久av| 婷婷色香| 国产吞精a级片激情电影| 日本一久是| 亚洲精品亚洲人成人网| 亚洲丝袜少妇在线| 嗯嗯嗯啊啊啊操的我好爽| 中文字幕日韩电影人妻| 看看日B真人视频| 99自拍视频在线| 五月婷亚洲精品天堂| 99热综合在线| 亚洲色图大香| 99re热有精品视频国产| 久热九九| 在线视频97| 中文字幕女同在线| 亚洲欧美激情在线视频| 无码久久国产| 女人18精品一区二区三区| 亚州少妇| 天天色播亚洲综合网站| 青青色在线观看| 99热国产精品| 亚洲国产综合久久天堂| 人人看黄色视频| 蜜臀久久久99久久久久 | 国产原创剧情在线丝袜| 色综合V| 少妇色欲综合网2| 亚洲AV无码翔田千里网站| www.色综合| 日韩99精品视频综合区| 极品色综合| 亚洲系列欧美| 久久久久久久久久久久久久久久9| 欧美1727免费观看视频| 国产亚州精品美女久久久免费| 韩国三级一线观看久| 美女淫穴| 久久超碰亚洲人| 亚洲一区二区三区久久 亚洲一区二区| 亚洲一曲日韩精品| 囯产精品久久久久久久久久梁医生| 天堂av最新电影网| 在线播放欧洲免费av| 婷婷在线精品| 91黑丝在线| 神马久久午夜| 99老司机精品视频在线观看| 熟女人妻精品一区二区视频 | 操东北女人| 道久久五香丁月婷婷激情综合| 97精品视频免费| 亚洲欧美日韩国产丝袜自拍中文| 欧美五区| 91亚洲青青草原精品1区| 午夜天天碰综合视频| 青青草男人天堂| 日韩熟女视频二区| 夫妻天天操岛国视频| 日本成熟少妇A∨网站| 欧美五十路熟| 五月丁香综合啪啪| 女同性恋一区二区三区精品视频| 精品97久久综合| 久久蜜桃一区二区| 一区AV| 日韩一区二区三区四区五区| 999久久久精品国产| 蜜桃中文字日产乱幕4区| 欧洲自拍第一页| 国产日韩欧美操逼视频| 亚洲国产第一页综合视频| 国产欧美一区激情交| 五月激情综合网| 蜜桃臀AV在线| 午夜精品视频777| 粘花网06av视频| 亚洲亚洲亚洲天堂天堂| 熟女自慰久久久| 亚洲国男人的天堂| 伊人久久艹| 人人爱人人操人人性| 色悠久| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 日韩中文字幕精品一区在线| 熟女AV一区| 婷婷色一区| 日韩中文字幕宗合在线| 玖玖爱免费观看视频| 麻豆精品.欧美精品.日韩精品.| 国产 日韩 欧美 人妻 熟女 中文| 久久久久久久人妻丝袜| 久久精品视频28| 亚洲精品美女久久久久久久久| 久久久久久十| 久久久久9999妇女| 深夜激情无码| 人人操人人干xxx| 校园春色综合香蕉| 荡小穴在线观看| 国产女人高潮嗷嗷嗷叫小说| 麻豆精品.欧美精品.日韩精品.| 超碰国产在线| 国产亚洲日韩在线三区黑人| 东北女人性交| 神马久久69| www.99热| 国产亚洲精品美女久久久久久2021| 日韩一级二级三级| 男人天堂综合| 欧美亚男人的天堂| 另类小说五月天| www..com操老师| 97色综合中文网| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | www.91欧美| 日韩成人综合网| 在线视频免费播放一区| 大香蕉中文| 中文字幕免费在线观看| 97超碰逼| 日本少妇va7777| 色婷婷网| 午夜欧美女人操逼| Av手机版天堂网| 婷婷色综合欧美日韩| 人人操超碰在线| 91高潮喷水美女| 激情婷婷| 狠狠色丁香| 国产精品婬乱一级毛片彝族| 在线观看啊啊啊啊啊| 伊人久久亚洲中文字幕不卡| 人妻在线中出视频| 69人妻人人揉人人躁人人精品| 国产精品久久成人免费| 温婉少妇玩3p| 成人性爱av| 婷婷在线视频在线观看| 九九热AV| 日本韩高清无砖码22o| 91热热色| 男女啊啊啊| 素人伊尹大香蕉免费下载视频| 午夜精品人妻二区三区| laoshunv91| 成人精品一区二区三区| 大香蕉十区| 超碰在线974| 久久精彩视频| 99操碰| 国产精品久久久久中文字幕| 欧美 日韩 亚洲 春色| 日韩日本欧美在线观看| 无遮挡男女激烈动态图| 亚洲情色综合| 尤物视频视频官网| 婷婷色综合欧美日韩| 久久永久无码人妻视频| 久久男人的天堂| 国产精品第一区第一页| 亚洲精品白浆高清久久久久久| 日韩成人高清一区二区| 日韩激情无码影院| 中文字幕日韩电影人妻 | 啊啊啊啊啊啊啊好爽不要| 偷窥自拍亚洲色图| av午夜玫瑰| 又摸又舔在线观看网站| 久久超碰av在线| 91精品操美女| 夜色91| 操逼操2| 午夜无遮挡男女啪啪视频| 欧 美 自 拍 偷 拍| 国产午夜无码片在线观看影视 | 亚洲欧美另类激情小说| 午夜无遮挡男女啪啪视频| 蜜乳AV.COM| 欧美性爱另类综合| 婷婷97| 一区二区三区男女操逼黄色小电影| 四虎AV无码| 天天草AV| 亚洲资源一区| 久久久久人妻二区精品叶可怜| 在线无码网站| 久久久无码国精品无码三区三区| 亚洲不卡不卡中文字幕不卡 | 亚洲 欧美 天天| 夜夜嗷嗷一区二区| 一卡二卡在线播放| 亚洲欧洲成人在线电影| 亚洲日韩美国人妻| 久久午夜伦| 加勒比伊人综合| 色淫网站优优视频| 日韩激情啪啪啪| 激情第四色| 亚洲诱惑| 欧美色图亚洲激情| 在线无码操| 久久国产视频专区一二三| 欧美变态激情网| 国产日韩久久| 亚洲系列第一页| 99久久无色码| 欧美人妻一区二区| 天天躁日日躁AAAAXXXX国产| 中文字幕在线日亚洲9| 97天天综合网| 欧美日韩狠狠爱| 日韩国产乱子伦App| 久久手机好看网站| 亚欧美综合| 强奸国产精品视频| 99色综合| 91色宗合| 成年人一级黄色毛片大全在线观看| 日韩一区二区熟女| 91热色| 午夜偷拍久久熟女| 99操碰| 麻豆国产成人精品| 亚洲成人激情小说视频| 欧美亚洲中文字幕| 97在线资源| 亚洲97成人在线观看| 天天插天天插| 大干人妻| 欧美久久伊人| 嗯嗯啊中文字幕| 中国91AV| 亚洲成人综合在线| 久久久禁| 啪啪AV导航| 冬京热男人的天堂| 亚洲无线观看久久| 丁香五月偷拍| 加勒比综合88| 黄片免费视频2019| 亚洲欧美爆| 网站A V在线| h在线看免费版在线看| 亚洲玖玖爱| 欧美性爱三区二区| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 素人播放一区| 天天色欧美| 亚洲人妻AV| 欧美偷拍| 精精夜夜| 97综合| 韩日男人的天堂| 97精品免费| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 丰满人妻av一区二区三区| 东北操逼| 在线中文字幕极品av| 2003天天干夜夜操| 乱伦熟女区| 久久大香蕉97| 青青网三级视频| 美女啊啊啊啊啊| 18精品一区| 91久久久亚洲| 免费网站观看www在线观| 成在线人在线观看视频| 久热久一区二区三区| 欧美久久人人网| 亚洲女人毛茸茸91| av天堂手机版追回 | www.超碰在线| 97超碰超| 亚洲综合性感在线| 第四色奇米影视777| 操少妞在线视频| 亚洲 欧美日韩 另类| 久热伊人| 欧美高清性猛交| 国产一级高跟丝袜| 怡红院网站在线视频| www.超碰在线| 在线a亚洲视频播放在线| 日本不卡高清免v欧美日韩在线观看| 级做a爱无码性色永久免费| 精品久久在线区一区| 国产一区二区在线播放量| 亚洲高清在线se| 午夜色婷婷| 中文AV制服乱伦| 亚洲色图伊人网| 中文字幕在线观看丝袜| 美女91在线| 屌妞视频久久久久久久久久久久| www.人人cao| 人妻铁牛TV| 大香蕉青青9| 婷婷五月天色| 日日噜噜夜夜狠狠视频无| 国语精品av| 青青草亚洲一区 | 男人天堂网站| 久久精品中文字幕女同| 大香蕉碰| 日本天天操| 最新国产精品| 精品一区二区久久| 日本一二三高清| 久久成人国产精品| 欧美 亚洲精品首页| 91真人天天在线| 五月天开心网| 人人爱人人操人人性| 狠日欧美| 天天综合91入口| 国产 大胆 对白| 极品色社| 日本黄 R色 成 人网站| 中国AV美女| 97干在线| 91n处女在线观看| 亚州色图欧美| 国产日韩精品一区二区三区| 亚洲无码AV九九九| 性爱乱伦视频免费| 久久天堂网| 69久久久久久久久久久久久| 中文字幕精品丝袜| 97人人超| 粉嫩小泬久久久一区二区| 色播丁香| 岛国片在线观看视频亚洲| 高清一区AV无码| 青春草莓视频在线观看网址| 激情一区二区| 大香交| 亚洲综合骚逼| 最新中文字幕av| 久久国产精品一级二级三级| 伊人AAA| 看日韩操逼| 国产精品蜜乳AV| 日欧亚洲二三区大片不卡| 12一15性XXXX粉嫩国产| 久久97| 人人操人人摸超碰| 超碰人妻97| 天堂性色| 熟女91网站| 一二三区精品视频| 蜜臀在线网站| 玖玖爱视频网站| 国产综合久| 插插综合网天天影视网| 青青操日韩| 精品少妇人妻一区二区三区| 黑人粗大V S日韩女优视频| 日韩中文字幕宗合在线| 精品人妻一区春色| 超碰日韩美妻| 天美传媒av一区二区| 伊人久久亚洲色欲综合网站 | 97超碰久| 91色伦综合| 色爽——AV| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场| 91草草草| 日韩精彩视频| 伊人嫩草| 极品少妇久久久| 日日夜夜摸| 欧美色999| 中文字幕日韩电影人妻| av在线播放国产一区| 亚洲1区2区三区高清中文字幕| 青娱乐国产精品| 美国一区二区免费视频| 99视频内射三四| 99久在线精品99re8| 久久xx| 人人澡人人爽人人精品| 日韩av熟女一区二区三区成人| 撸撸成人在线视频| 超碰是碰在线观看| 日韩大香蕉AV影片| 中文AV制服乱伦| 欧美日韩亚洲一区二区在线观看| 日本欧美亚洲高清在线看| 91操人| 立川理惠加勒比无码| 九九人人操| 强奸乱亚洲| 中文字暮97| 欧美在线视频播放| 久久久九| 午夜国产成人精品视频| 国产麻豆福利av在线播放| 亚洲女人毛茸茸91| 97伊人| 久久 国产 无码| 久久亚洲AV成人精品无码| 丁香九月激情| 九久久九精品视频| 茄子社区国产精品| 国产偷拍网站| 精品亚洲国产成人av网站| 狠狠色丁香| 久久国99999| 插插综合网天天影视网| 在线观看一级α片刺激高潮视频| 亚洲av综合色区无码一| 亚洲国男人的天堂| 色综合超碰超| 天天综合网在线观看| 你想操日本小逼吗| 蜜桃精品一区二区三区ww| 91久久久老司机| 欧美91精品国产自产| 人人操人人插人人摸人人干| 日本超碰在线国产一区| 国产情色在线| 秋霞 色色| 久久精品色欧美aⅴ一区二区| 91色色色| 2020视频1区2区3区| 99re在线精品78| 热99这里有精品综合久久 | 美女黄色一级A视频| 啊操爽品善一区二区三区| 日韩91网| 青椒国产97在线熟女| 97精品国产97久久久久久| 9.1小视频| 国产专区第一页| 欧美 中文字幕 一区| 大香蕉淫人| 日韩AC| 九九九九九九九九九五码| 国产精品久久久啊| 99国产人成精品| 中文字幕欧美日本乱码一线二线| 日韩中文字幕国产| 熟妇熟女一区二三区| 欧美激情内射| 日本网色| 快点操死我| 电家庭影院午夜69久久夜色精品国产69乱| 亚洲国产激情国产av| 国产第11页| 韩国黄片aaaa| 欧美日韩亚洲五月天婷婷| 欧美人体性爱互联网第一页婷婷日本| 色色激情| 精品人妻一区二区三区不卡断 | 偷拍盗拍亚洲色图图片| 五月丁香综合啪啪| 久久超碰av在线| 一区二区三区探花在线观看| 久久久久久中文版| 永久电影三级在线观看| 青娱乐亚洲热| 啊啊啊啊操死我| 97WW精品| 人妻精品视频一区二区三区| 麻豆人妻精品一区二区| 九久精品| 精品久久在线区一区| 超碰色97| 性色avv| 五月丁香黄色网| 日韩美脚一区二区网站| 久操精品| 91人妻视频| 国产亚洲福利第一页丝袜| 9超碰免费| 久久无码成人| 亚洲欧美国产中文字幕| 久久成人午夜精品影院| 欧美熟女逼久久久久久| 精品一区二区综合熟妇| 色婷婷一区二区三区久久午夜| 成人性爱美曰韩| 国产精品午夜福利视频| 国内自拍 日韩激情 99| 色色97爱| 青青网三级视频| 国产狂喷潮在线精品| m欧洲一级午老| 激情无码日韩| 欧美日韩中文字幕不卡| 国内91熟女人妻丝袜天天精品视频在线 | 色噜噜综合在线| 久久六六| 老女人老91妇女老热女| 日韩AC| 亚洲色图欧美色18直播在线| 亚洲 欧美 中文 日韩超碰| 久久黄片国产一区二区| 国精综合一二三区影视| 国产福利av精彩对白| 后入式免费视频| 亚洲色欲一区二区三区| 八人操人人摸人人看| 亚洲毛片久久| 国产不卡片| 激情综合二| 久久久人妻| 狠狠操一区二区| 秋霞视频一区二区| 999久久久免费精品国产牛牛| 神马久久网| 99在线观看| 天天懆天天日| 蜜臀99999| 婷婷五月天小说| 曰韩操B| 免费国产| 中文字幕加勒比海高清无码免费视频 | 亚洲欧美日韩中文久久自慰| 激情五月天色播| 强被迫伦姧在线观看无码网站| 尤物视频偷拍免费| 天天干2019| 中国女人内射6XXXXX| 啊啊啊好想要| 骚日日av| 九九九久千久久激情蜜桃在线看 | 久久久9视频| 日本在线播放不卡一区| 国产女同在线观看视频| 国产精品乱码久久久、久久| 亚洲国产剧情少妇激情| 日本一级黄色电影| 国产精品露脸在线观看| 啊啊啊爽爽| 啊啊啊啊,啊啊好多水| 亚洲影院小综合| 99精品在线观看| 夜色AV无码手机在线影院| 久久成年片色大黄全免费网站| 神马九九九| 夜夜狠狠躁日日躁色视频| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 天天爱综合网| 啊啊啊啊啊在线视频| 日本有码久久| AAAAAAAAA黄片| 人人操人人舒服| 97九色| 蜜臀99精品国产高清在线观看| 97资源免费视频| 久久亚洲不卡一区二区三区| 好吊色在线观看| www.av在线观看| 久久亚洲AV无码专区国产精品| 黄色AV免费| 91色婷婷综合久久中文字幕二区| 欧洲性人爱视频| 欧亚揄拍偷拍精品视频| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 嫩草影院在线观看精品 | 综合亚洲欧美| 亚洲麻豆18发?| 性欧美精| 日韩资源网| 日韩少妇丰满亚洲| 国内黄色精品| 1024亚洲中文字幕久在线看片你懂的| 白嫩国模丰满一二三区| 思思热在线cao| 99性爱在线观看| 欧美性天天| 日韩免费a级毛片无码a∨| 久久久久久久久999| 综合欧美亚洲| 天天狂操夜夜狂日| 国产精品成人午夜福利| 91宗合网| 大香蕉狠狠爱| 麻豆天美一区二区| 国产白丝精品在线观看| 神马久久久久久| 久久久久久久久久9| 色五月AV| 思思热在线视频免费| 久久免费少妇| 精品人妻一区二区三区四区石在线| 久久精品国产精品一区| 少妇熟女一区二区三区| 欧美熟妇精品黑人巨大91| 亚洲在线a| 国产在线能看的你懂的| 成人线上超碰| 亚洲?V无码专区在线电影| 日韩操逼HD| 在线国产福利网址导航| 国产欧美日韩精品中文| 欧美日韩性爱精品| 天天综合精品| 东京热激情视频一二三区| 夜夜狼人妻| 色网综合网| 97久久国产精品| 亚洲高清欧美总合| yaouchengrenav| 国产探花精品在线| 国产精品久久久久久 百度| 人妻少妇av在线观看| 首页亚洲国产高跟丝袜诱惑视频| 国产精选三级在线观看| 婷婷久草一区二区三区| 夜夜狼人妻| 国产免费一区| 欧美视频一区二区三区| 一区二区中文| 日韩一级特黄av毛片| 自拍偷拍国产欧美日韩韩| 国产熟女完整版中字| 色99在线| 欧美一区二区传媒| 中文字幕伊人| 精品人妻一区二区三区不卡断 | 91网站18禁| 东京日日夜夜| 久久超碰大香蕉| 久久神马影院| 欧美性五月| 超碰欧美| 麻豆国产96在线|