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