Bug in the heap management code?

Mike Hearn mike at theoretic.com
Thu Sep 18 07:43:23 CDT 2003


This is very much like a problem I am having with InstallShield.
Something, somewhere, is trashing the heap data structures, which causes
a crash some time later, often yards away from the original bug. As far
as I know, there is no good way to spot this problem, it's just C/C++
sucking.... maybe valgrind might help?

On Wed, 2003-09-17 at 18:00, Michael Günnewig wrote:
> Hallo.
> 
> When I try to play "The Elder Scroll III: Tribunal" version 1.4.1313
> german under wine I get a page fault after some time. The time span
> differs and so the calling point of the heap management but it always
> occurs in HEAP_CreateFreeBlock in line 415.
> 
> Generating of a full "-debugmsg +heap" log is nearly impossible
> because it takes too long to start the game and start playing
> (after > 200 min. it still wasn't finished with initializing). 
> 
> ,-----
> | err:ntdll:RtlpWaitForCriticalSection section 0x4046001c "?" wait timed out in thread 0010, blocked by 000c, retrying (60 sec)
> | err:ntdll:RtlpWaitForCriticalSection section 0x7d63d8 "?" wait timed out in thread 0009, blocked by 000c, retrying (60 sec)
> | Unhandled exception: page fault on write access to 0x53acae7c in 32-bit code (0x400826d1).
> | In 32-bit mode.
> | 0x400826d1 (HEAP_CreateFreeBlock+0x11 [heap.c:415] in libntdll.dll.so): movl   $0x45455246,0x4(%esi)
> | 419         pEnd = (char *)ptr + size;
> | Wine-dbg>bt
> | Backtrace:
> | =>0 0x400826d1 (HEAP_CreateFreeBlock+0x11(subheap=0x539a0000, ptr=0x53acae78, size=0x3f6ebd18) [heap.c:415] in libntdll.dll.so) (ebp=4c031d80)
> |   1 0x400829be (HEAP_ShrinkBlock+0x4e(subheap=0x539a0000, pArena=0x53aaae70, size=0x20000) [heap.c:521] in libntdll.dll.so) (ebp=4c031d9c)
> |   2 0x400838c7 (RtlAllocateHeap+0xa7(heap=0x40460000, flags=0xa, size=0x20000) [heap.c:1159] in libntdll.dll.so) (ebp=4c031dc8)
> |   3 0x40aac68e (IDirect3DDevice8Impl_CreateImageSurface+0x9e(iface=0x4052fca8, Width=0x100, Height=0x80, Format=0x31545844, ppSurface=0x53a81dd0) [device.c:1987] in d3d8.dll.so) (ebp=4c031dec)
> |   4 0x40aaba39 (IDirect3DDevice8Impl_CreateTexture+0x119(iface=0x4052fca8, Width=0x100, Height=0x80, Levels=0x5, Usage=0x0, Format=0x31545844, Pool=0x1, ppTexture=0x52c58170) [device.c:539] in d3d8.dll.so) (ebp=4c031e20)
> |   5 0x006b9766 (Morrowind.exe..text+0x2b8766 in Morrowind.exe) (ebp=535bb5c0)
> |   6 0x00000001 (ebp=00748e84)
> |   7 0x006cf2a0 (Morrowind.exe..text+0x2ce2a0 in Morrowind.exe) (ebp=006ce690)
> |   8 0x00000478 (ebp=e8f18b56)
> | *** Invalid address 0xe8f18b56 (MSVCP60.DLL..reloc+0x70dfab56)
> `-----
> ,-----
> | err:ntdll:RtlpWaitForCriticalSection section 0x4046001c "?" wait timed out in thread 0010, blocked by 000c, retrying (60 sec)
> | err:ntdll:RtlpWaitForCriticalSection section 0x4046001c "?" wait timed out in thread 0009, blocked by 000c, retrying (60 sec)
> | Unhandled exception: page fault on write access to 0x537c0064 in 32-bit code (0x400826d1).
> | In 32-bit mode.
> | 0x400826d1 (HEAP_CreateFreeBlock+0x11 [heap.c:415] in libntdll.dll.so): movl   $0x45455246,0x4(%esi)
> | 419         pEnd = (char *)ptr + size;
> | Wine-dbg>bt
> | Backtrace:
> | =>0 0x400826d1 (HEAP_CreateFreeBlock+0x11(subheap=0x536b0000, ptr=0x537c0060, size=0x3f6f4c38) [heap.c:415] in libntdll.dll.so) (ebp=4c032518)
> |   1 0x400829be (HEAP_ShrinkBlock+0x4e(subheap=0x536b0000, pArena=0x537bff90, size=0xc8) [heap.c:521] in libntdll.dll.so) (ebp=4c032534)
> |   2 0x400838c7 (RtlAllocateHeap+0xa7(heap=0x40460000, flags=0x2, size=0xc8) [heap.c:1159] in libntdll.dll.so) (ebp=4c032560)
> |   3 0x412befe7 (MSVCRT.DLL.??_U at YAPAXI@Z+0x27 in msvcrt.dll.so) (ebp=4c032580)
> |   4 0x00412b03 (Morrowind.exe..text+0x11b03 in Morrowind.exe) (ebp=4c03261c)
> |   5 0x00412dcb (Morrowind.exe..text+0x11dcb in Morrowind.exe) (ebp=4af5fce8)
> |   6 0x5376b8e0 (_end+0x832c1f0) (ebp=4cbe2238)
> |   7 0x444e414c (_end+0x2ebf630) (ebp=007428b0)
> |   8 0x004c8620 (Morrowind.exe..text+0xc7620 in Morrowind.exe) (ebp=004c7b90)
> |   9 0x00000018 (ebp=e8f18b56)
> | *** Invalid address 0xe8f18b56 (MSVCP60.DLL..reloc+0x70dfab56)
> `-----
> 
> 
>   Michael
> 
> 




More information about the wine-devel mailing list