今天调试evc程序,总是出现几个莫名奇妙的错误如下:
Data Abort: Thread=8795c908 Proc=80becdf0 'OnLine.exe'
AKY=00000801 PC=03fa006c(coredll.dll+0x0002006c) RA=50616548(???+0x50616548) BVA=18332421 FSR=00000001
FMD_OEMIoControl::Not supported IOCtl : 0x10303FF
FMD_OEMIoControl::Not supported IOCtl : 0x10303FF
或者
Data Abort: Thread=866593e4 Proc=80becd00 'ONLINE.EXE'
AKY=00000401 PC=03fa006c(coredll.dll+0x0002006c) RA=50616548(???+0x50616548) BVA=162f2021 FSR=00000001
Assertion Failed: OnLine: File wincore.cpp, Line 1152
Data Abort: Thread=8795c908 Proc=80becd00 'ONLINE.EXE'
AKY=00000401 PC=03f9fb04(coredll.dll+0x0001fb04) RA=160bf4d8(ONLINE.EXE+0x000af4d8) BVA=2a3b14e9 FSR=00000001
FMD_OEMIoControl::Not supported IOCtl : 0x10303FF
Data Abort: Thread=8795c908 Proc=80becd00 'ONLINE.EXE'
AKY=00000401 PC=03f9fb04(coredll.dll+0x0001fb04) RA=160bf4d8(ONLINE.EXE+0x000af4d8) BVA=2a3b14e9 FSR=00000001
Data Abort: Thread=8795c908 Proc=80becd00 'ONLINE.EXE'
AKY=00000401 PC=03f9fb04(coredll.dll+0x0001fb04) RA=160bf4d8(ONLINE.EXE+0x000af4d8) BVA=2a3b14e9 FSR=00000001
FMD_OEMIoControl::Not supported IOCtl : 0x10303FF
查看coredll.map,
0001:0001e52c HeapCreate 1001f52c f coredll_ALL:heap.obj
0001:0001e668 Int_HeapCreate 1001f668 f coredll_ALL:heap.obj
0001:0001e6c8 CeHeapCreate 1001f6c8 f coredll_ALL:heap.obj
0001:0001ebf4 HeapReAlloc 1001fbf4 f coredll_ALL:heap.obj
0001:0001ec14 HeapAlloc 1001fc14 f coredll_ALL:heap.obj
0001:0001ec34 HeapAllocTrace 1001fc34 f coredll_ALL:heap.obj
0001:0001ec88 Int_HeapAlloc 1001fc88 f coredll_ALL:heap.obj
0001:0001eee8 HeapFree 1001fee8 f coredll_ALL:heap.obj
0001:0001ef08 Int_HeapFree 1001ff08 f coredll_ALL:heap.obj
0001:0001f0e0 HeapSize 100200e0 f coredll_ALL:heap.obj
0001:0001f100 Int_HeapSize 10020100 f coredll_ALL:heap.obj
发现coredll.dll+0x0002006c对应的函数为: Int_HeapFree ,堆资源释放问题,
coredll.dll+0x0001fb04对应的函数为: CeHeapCreate,堆资源创建问题。
追踪程序发现:plastSaveTime = new char[mea_TotalNumber*7+14],在初始化时mea_TotalNumber =0,
导致实际申请容量与想要使用的不一致,这样操作plastSaveTime 时,操作到别的堆空间了,导致释放别的堆资源出错。