免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

C++在頭文件中定義singleton出現(xiàn)的問(wèn)題-創(chuàng)新互聯(lián)

今天在公司里遇到一個(gè)很奇怪的core dump,初看起來(lái),core dump的code在stl庫(kù)的hashtable里,完全沒(méi)有任何頭緒,甚至連core dump的原因都一籌莫展。

創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括喀喇沁網(wǎng)站建設(shè)、喀喇沁網(wǎng)站制作、喀喇沁網(wǎng)頁(yè)制作以及喀喇沁網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,喀喇沁網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到喀喇沁省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

白天花了半天的時(shí)候看了一下hashtable的implementation,大概知道該去關(guān)注那些variable,之后用gdb把core dump加載起來(lái),過(guò)了一遍幾個(gè)重點(diǎn)變量的值,確定了可能是某個(gè)singleton的值被correput了,導(dǎo)致原來(lái)的class member里的一個(gè)unordered_set的underlying的hashtable的值不對(duì)了。

經(jīng)過(guò)跟同事反復(fù)的討論,最后我們發(fā)現(xiàn)root cause是這樣的:

某個(gè)同事在頭文件A.h里定義了一個(gè)singleton:

static A& A::getInstance() {
    static A a;
    return a;
}

然后在某個(gè)被稱為plugin B的動(dòng)態(tài)庫(kù)里include了這個(gè)頭文件,同時(shí)在binary C的Main.C里也include了這個(gè)頭文件。而binary C也同時(shí)通過(guò)dlopen加載plugin B。

注意這里就出現(xiàn)了問(wèn)題,此時(shí)singleton已經(jīng)不完全是singleton了。通過(guò)nm命令可以看到binary C和plugin B的symbol table里都有A::getInstance(),并且他們?cè)赿ata section里的地址是不同的,此時(shí)問(wèn)題已經(jīng)很明顯了。

進(jìn)一步觀察core dump發(fā)生時(shí)的behavior,在那個(gè)時(shí)間點(diǎn)binary C reload了一次plugin B,同事懷疑在unload動(dòng)態(tài)庫(kù)的時(shí)候?qū)@個(gè)static變量作了一次析構(gòu),而之后重新load plugin B以后,plugin B使用的singleton變量的地址實(shí)際還是binary C的,這時(shí)候binary C里的static變量已經(jīng)被析構(gòu)了,所以造成了ub,同時(shí)造成了core dump!

我們通過(guò)一個(gè)很簡(jiǎn)單的reproducer去重現(xiàn)了core dump,證實(shí)了我們的猜想。

(?code)

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

當(dāng)前文章:C++在頭文件中定義singleton出現(xiàn)的問(wèn)題-創(chuàng)新互聯(lián)
文章路徑:http://m.newbst.com/article44/dcishe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)關(guān)鍵詞優(yōu)化企業(yè)網(wǎng)站制作品牌網(wǎng)站制作用戶體驗(yàn)定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)