關於C 的乙個棧空間被占用問題的總結

2021-06-21 17:15:24 字數 821 閱讀 6756

一、事情起因

一條執行緒呼叫了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...