一、事情起因
一條執行緒呼叫了map 的乙個erase方法 結果dump了
二、原因假設
1、map中的的資料被其他執行緒釋放了,通過find驗證了一下,不可能,資料還在,活生生的
2、map中的資料被覆蓋了或者被改寫了 分析結果:看了一下資料,都沒錯,位元組也都對齊
3、通過單步除錯發現,在stl內部呼叫結尾釋放指標是,所指的位址出現異常,正常情況應該是乙個空指標,結果是有了乙個莫名的值。懷疑這部分資料被篡改。
但是到底是**呢,。。。。。。。。。。。。。。。。。。乙個漫長的注釋,反注釋除錯的過程。終於在這個的乙個地方 發現了問題的原因
三、問題場景
執行緒1
memcpy(m_curproxyaddr.szuserpass, m_curproxyaddrinfoentity->szuserpass, 50);
執行緒2
m_callsyncmap.erase(preq->lsyncid);
m_curproxyaddr.szuserpass 這個是乙個 size=33的緩衝區,在這33的緩衝區 cpy了乙個大小為50 的緩衝區,這樣就會產生乙個未知的行為,
而這個未知行為的表現就是導致執行緒2的erase出錯。
四、教訓
在做相關記憶體copy時,一定要注意長度的
精確掌控
關於表空間的乙個問題
最近在進行資料庫伺服器維護的時候發生某個表空間 名為ppstt 佔用率過高,如何解決這一問題,上網查了很多這方面的資料,因為本人對資料庫管理還是個生手,所以只好求教於同事.同事發過來一文件,照著操作,問題解決了.資料庫伺服器為 sun microsystems inc sunos 5.9 資料庫為 ...
詭異的Linux磁碟空間被占用問題。
新公司的測試機磁碟空間空餘很小,日誌很多,也很大,做個日誌壓縮指令碼,在夜裡4 30自動執行,第二天後發現磁碟空間又滿了,只好刪除沒用的日誌,清空空間,可詭異的是怎麼刪除沒用的檔案,空間還是占用很大.如圖 用du 根目錄下,發現這些檔案加一塊也達不到占用的空間大小.如圖 我也有遇見過此類問題,一般都...
關於apache中log占用空間的問題
好久沒有寫了,今天在調伺服器時,突然發現伺服器上儲存空間盡然用完了,目錄我分配了22g,怎麼可能用完呢,但是用df命令檢視時確實已經用了100 了,這下嚇我一跳,馬上看哪個地方用了這麼多。在 目錄下執行命令 du sh 發現 opt 佔了18g 我的apache伺服器裝在這個目錄下 立刻進入,發現a...