- 论坛徽章:
- 0
|
#0 0xb7f0420d in REGION_UnionNonO (region=0xb3875058, r=0x0, rEnd=0x8285efc, top=633, bottom=634) at region.c:959
#1 0xb7f03cd0 in REGION_RegionOp (newReg=0x80fb664, reg1=0x80fb664, reg2=0xb3875114, overlapFunc=0xb7f0424d <REGION_UnionO>,
nonOverlap1Func=0xb7f0419a <REGION_UnionNonO>, nonOverlap2Func=0xb7f0419a <REGION_UnionNonO> at region.c:747
#2 0xb7f04d57 in UnionRegion (dst=0x80fb664, src1=0x80fb664, src2=0xb3875114) at region.c:1304
#3 0xb7f04ed3 in AddClipRect (region=0x80fb664, rect=0xb387517 at region.c:1363
#4 0xb7e9d6ab in wndInvalidateRect (hWnd=135247384, prc=0xb387525c, bEraseBkgnd=1) at window.c:4368
#5 0xb7e9d9b1 in InvalidateRect (hWnd=135247384, prc=0xb387525c, bEraseBkgnd=1) at window.c:4457
问题出现frame 0 和 1之间.
(gdb) p *r
Cannot access memory at address 0x0
(gdb) up
#1 0xb7f03cd0 in REGION_RegionOp (newReg=0x80fb664, reg1=0x80fb664, reg2=0xb3875114, overlapFunc=0xb7f0424d <REGION_UnionO>,
nonOverlap1Func=0xb7f0419a <REGION_UnionNonO>, nonOverlap2Func=0xb7f0419a <REGION_UnionNonO> at region.c:747
747 (* nonOverlap1Func) (pdst, r1, r1BandEnd, top, bot);
(gdb) p *r1
$31 = {rc = {left = 0, top = 0, right = 0, bottom = 0}, next = 0x0, prev = 0x8285edc}
(gdb)
问题出现在调用(* nonOverlap1Func) (pdst, r1, r1BandEnd, top, bot)的时候r1是有效的, 结果到了frame 0后传进去的r1就变成了0x0;
程序有上10多个线程, 有可能是哪里越界造成传成r1的时候给覆盖掉了.我改怎么样下个断点,
断在frame 0状态下r被改成0x00的时候停住, 或者有更好的办法找出问题?
另外这个函数出现的几率是1/1000, 也就是前1000多次调用是不会出现问题的.
望ggjj们帮忙分析怎么弄? 先谢谢了! |
|