Marcus Meissner wrote:
On Sat, Jan 14, 2006 at 08:41:50PM +0100, Christer Palm wrote:


After messing around with with the mfc42 runtime, I managed to get a backtrace with debugging information, which looks like this:


=>1 0x5f4056dd CEnumOleVerb::~CEnumOleVerb+0x37 [oleverb.cpp:61] in mfc42 (0x5f4056dd)


You should find out what it does before.

Capture a WINEDEBUG=+relay,+seh trace (redirect output to a logfile).

Then look at this trace, search for the winedbg call and scroll back
until the RaiseException with c00000005 code (likely only some dozen
lines above the initial debugger start).

The look backwards from this to see where it might have got this NULL
pointer... :/

If its bad, it could have got it from millions of lines ago. :/


Hello Marcus and thanks for your response!

OK, sounds a bit ad-hoc to me but I'm sure that you're talking from experience. In the relay trace, I can see that just before the exception is raised, it sits in a loop calling:

0009:Call user32.ShowWindow(00000000,00000000) ret=5f4056f5
0009:Ret  user32.ShowWindow() retval=00000000 ret=5f4056f5

33 times (same return address each time), which looks a bit suspicious to me (HWND being 0). The return address is in MFC42, but as winedbg refuses to run the dang thing I can't resolve that into the actual MFC function or set any breakpoints or anything.

So, looking a bit further up in the trace, my best bet is that it's getting that HWND from:

0009:Call user32.GetParent(00010026) ret=5f401281
...
0009:Ret  user32.GetParent() retval=00000000 ret=5f401281

But that's just a wild guess. 00010026 seems to the apps main window, because I see a lot of activity on that HWND before the crash - for example:

0009:Call user32.DrawMenuBar(00010026) ret=5f4136d0
...
0009:Ret  user32.DrawMenuBar() retval=00000001 ret=5f4136d0

And I can see the menu bar of the main (top) window being updated just before the crash. I played around a bit with the graphics settings in winecfg with no result other than that I've now managed to lock myself out of wine (including winecfg) by specifying an invalid display depth :-(

Does anyting of this make sense?

Cheers,
--
Christer Palm



Reply via email to