Eric Pouech wrote:
Dan Kegel wrote:
How does one tell what DLL contains a particular segment of 16 bit code in winedbg?
that's no longer supported in winedbg (we don't generate in Wine the native 16 bit DLL loading events, so we don't catch them in winedbg) a way to do it is to trace +module and get the address from here (BTW, this is on Alexandre's and my todo list for quite a while now, but with a low priority ATM).
OK. (I also noticed that adding +task to --debugmsg shows a few 16 bit loading stuff.) Here are what appear to be the interesting lines from a log from a run of Resource Hunter's installer, in which it crashed during cleanup:
510 trace:module:NE_OpenFile opened 'F:\rchtemp\SETUP.EXE' -> 0x64 511 trace:module:NE_LoadSegment Loading segment 2, hSeg=0267, flags=0c43 516 trace:module:NE_StartTask Starting main program: cs:ip=025f:7564 ds=0267 ss:sp=0267:5700 ... 8956 trace:module:MODULE_LoadModule16 Loaded module 'F:\rchtemp_ISDEL.EXE' at 0x0447. ... 9028 trace:module:NE_OpenFile opened 'F:\RCHTEMP_ISDEL.EXE' -> 0x78 9029 trace:module:NE_LoadSegment Loading segment 2, hSeg=048e, flags=0c53 9030 trace:module:NE_StartTask Starting main program: cs:ip=0487:079c ds=048f ss:sp=048f:1782 ... 11586 trace:file:FILE_DoOpenFile C:\WINDOWS_iserr31.ini OF_READ OF_SHARE_COMPAT OF_DELETE ... 11590 trace:module:NE_GetOrdinal (0447,'__GP') 11591 wine: Unhandled exception, starting debugger... ... 11732 Unhandled exception: privileged instruction in 16-bit code (0487:09b7).
I had expected the segment number from the exception (0487) would show up on some log line with a DLL filename on it, but the only match was the one on the 2nd NE_startTask. But what the heck, it seems likely in this case that the crash is in the installshield cleanup program _isdel.exe. I guess if I wanted to continue tracking this down, I might set a breakpoint on NE_StartTask, and turn on +all when _isdel.exe starts running. I probably don't have energy for that today, so if someone else wants to take a crack at this apparent InstallShield crash, please do.
Maybe I'll go back to the other 16 bit crash I had and see if turning on +module gives me enough to figure out what DLL or exe is crashing there, too.
Which FM did I fail to R?
... chapter 2 of developer guide
OK, I've reviewed that, thanks. Hmm, if I come up with a good recipie for "figuring out what 16 bit DLL or EXE contains the code that crashed", maybe I should add a note to the developer guide about it; that might help until you and/or Alexadre get around to the item on your todo list you mentioned above. - Dan