Help with debugging needed

Stefan Dösinger stefandoesinger at
Sat Aug 13 16:12:05 CDT 2005

> > So my questions are:
> > *Am I right with my suspection that the problems are caused by a
> > incorrect return?
> It's possible. I'm working on a problem like that with palm desktop. But
> you won't know until you debug it :) It could be nasty to fix though.
I was lucky with setting a brakepoint in the wine code. The crash happens in 
the DDraw implementation. The return from 
Main_DirectDraw_Release(ddraw_main.c:154) leads to a random adress. The call 
which leads to this is "HeapFree(GetProcessHeap(), 0, This);" in 
Main_DirectDrawSurface_Destroy, surface_main.c:154. If I comment out this 
call, Empire Earth continues loading and crashes more or less randomly at 
some later points.

I've edited the IDirectDrawSurfaceImpl structure and added a 2048 byte block 
at the beginning and the end. This makes the crashes reliable: With the 
HeapFree call, the ret jumps to NULL, and without the call Empire Earth 
crashes little later.

This looks like a really nasty heap corruption to me, and I'm afraid it's 
beyond my knowledge. Can anyone of the ddraw/d3d people help me?

> > *How can I get a disassembly of Low-Level
> > Engine.?Deactivate at GERasterizer@@UAEJXZ or simmilar functions. I didn't
> > find this symbol.
> If I had to guess, I'd say these functions are in the game itself, most
> likely in one or more DLLs. Your best bet here is to use a good
> disassembler. My personal favorite is IDA. You can find a demo version
> here: This version works just
> fine for this sort of thing.
Yes it's a part of the game in a Dll called "low-level engine.dll". The IDA 
disassembler looks really great, I'm considering ordering it. But it's quite 

Thanks for your help so far,

More information about the wine-devel mailing list