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
--
Dan Kegel
http://www.kegel.com
http://counter.li.org/cgi-bin/runscript/display-person.cgi?user=78045