2012-11-06 70 views
1

我希望有人來解釋如何「解密」以下擋泥板輸出:如何解釋mudflap輸出?

mudflap violation 1 (check/write): time=1352235104.713060 ptr=0x61a000 size=20 
pc=0x2b12e5f4 location=`connect.c:645:3 (connect_init)' 
     [0x613d88] 
Nearby object 1: checked region begins 252B after and ends 271B after 
mudflap object 0x619f30: name=`malloc region' 
bounds=[0x619f00,0x619f04] size=5 area=heap check=0r/0w liveness=0 
alloc time=1352235104.712374 pc=0x2b12db34 thread=715976208 
     /lib/libmudflapth.so.0(__mf_register+0x80) [0x2b12db34] 
Nearby object 2: checked region begins 23121B after and ends 23140B after 
mudflap dead object 0x6145d8: name=`calloc region' 
bounds=[0x614550,0x6145af] size=96 area=heap-init check=0r/0w liveness=0 
alloc time=1352235104.704859 pc=0x2b12db34 thread=715976208 
     /lib/libmudflapth.so.0(__mf_register+0x80) [0x2b12db34] 
dealloc time=1352235104.711583 pc=0x2b12d498 thread=715976208 
number of nearby objects: 2 

可能有人走到我通過此行由行?這在目前沒什麼意義: -/...

在此先感謝!

+0

嗨奧拉夫,謝謝!是什麼讓我感到困惑的是,擋泥板使誤報,如果正在使用glib庫環境未正確設置。以下是如何做到這一點:出口G_SLICE =永遠的malloc;導出G_DEBUG = gc-friendly; <現在運行您的應用>。 – user1804394

回答

0

第一線給你最重要的數據:

... connect.c:645:3(connect_init)

我會看着你的源connect.c在行645功能connect_init。這是訪問違規發生的地方。這不必是有問題的代碼,但是尋找錯誤的代碼是一個好的開始。如果此功能幹淨,請嘗試評估哪些代碼調用connect_init以及指針或堆區域來自何處。

其他部分似乎確定一些堆對象(malloc的區域,釋放calloc區域)。第一個仍在使用(僅ALLOC時間),並已經歸還給堆(alloc和dealloc的時間)的第二個。