- 論壇徽章:
- 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
問(wèn)題出現(xiàn)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)
問(wèn)題出現(xiàn)在調(diào)用(* nonOverlap1Func) (pdst, r1, r1BandEnd, top, bot)的時(shí)候r1是有效的, 結(jié)果到了frame 0后傳進(jìn)去的r1就變成了0x0;
程序有上10多個(gè)線(xiàn)程, 有可能是哪里越界造成傳成r1的時(shí)候給覆蓋掉了.我改怎么樣下個(gè)斷點(diǎn),
斷在frame 0狀態(tài)下r被改成0x00的時(shí)候停住, 或者有更好的辦法找出問(wèn)題?
另外這個(gè)函數(shù)出現(xiàn)的幾率是1/1000, 也就是前1000多次調(diào)用是不會(huì)出現(xiàn)問(wèn)題的.
望ggjj們幫忙分析怎么弄? 先謝謝了! |
|