Help debugging a problem!

Ann & Jason Edmeades us at edmeades.me.uk
Tue Sep 27 16:52:28 CDT 2005


Hiya,

I've got a weird issue and was wondering if anyone could advise on how to
resolve. (Comes from a 16bit windows app, but is a more general debugging
issue).

The problem is ...
1) If I run the application, it just hangs - no overly helpful information
at all.
2) If I add WINEDEBUG +relay trace, it runs ok :-)  (Workaround...!)
3) If I add anything else on WINEDEBUG other than relay, it fails
4) Running under winedbg didn't help at all - I could code to stop it before
the hang but it wouldn't step through to the failure
5) Attaching to the hung process shows code in 16 bit user app, and winedbg
didn't overly help there either

So - I've (painstakingly) got to the point of failure with the add of debug
tracepoints and comparing the relay with the debug statements.

Now the odd bit!

If you look at dlls\user\wnd16.c, routine RegisterClass16 the final line is:
    return RegisterClassEx16( &wcex );

If I change this to
    fred = RegisterClassEx16( &wcex );
    TRACE("Here... %d\n", fred);
    return fred;

it all works.....!

How can I debug this further? I was thinking about trying to dump the
registers before and after the trace statement, but I really can't think of
what could be causing the problem!

Does windows guarantee any of the registers across a win16 call which we
don't honour? What about i386 flags?

Any suggestions please?

Jason






More information about the wine-devel mailing list