我希望有人解释如何'解密'以下的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 :(得分:0)
第一行为您提供最重要的数据:
... connect.c:645:3(connect_init)
我会在功能connect.c
的第645行查看您的来源connect_init
。这是发生访问冲突的地方。这不一定是有问题的代码,但它是一个很好的开始寻找坏代码。如果此函数是干净的,请尝试评估调用connect_init
的代码以及指针或堆区域的来源。
其他部分似乎标识了一些堆对象(malloc区域,calloc区域)。第一个仍然在使用(仅限分配时间),第二个已经返回堆(alloc和dealloc时间)。