The following version of the Dr. Watson log file includes comments. These comments do not appear in the normal Dr. Watson log. They have been added here to explain the sections of the log.
Start Dr. Watson 0.80 - Thu Sep 26 10:51:28 1991
# This line is inserted each time you start Dr. Watson.
# You can disable it with SkipInfo=time.
************************************************************************
# This line marks the beginning of a Dr. Watson report.
Dr. Watson 0.80 Failure Report - Thu Sep 26 10:51:36 1991
# Version 0.80 of Dr. Watson - date report was generated
BICHO had a 'Exceed Segment Bounds (Read)' fault at BICHO _DoCommand+006b
# Application 'BICHO' had an 'Exceed Segment Bounds' fault
# while reading memory. The actual code that failed
# was also in BICHO, 0x6b bytes past the start of the
# DoCommand function.
$tag$BICHO$Exceed Segment Bounds (Read)$BICHO _DoCommand+006b
$push word ptr [fffe]$Thu Sep 26 10:51:36 1991
# This line repeats the previous information in a format
# easier for automatic code to parse. It also includes
# the actual faulting instruction (a push instruction here).
CPU Registers (regs)
ax=1e54 bx=0014 cx=0d7f dx=0111 si=1e54 di=0111
# The 16-bit CPU registers. This can be useful for decoding
# what address an instruction was modifying.
ip=02fd sp=230c bp=237a O- D- I+ S- Z- A+ P+ C-
# The IP is the instruction pointer (Program Counter).
# SP and BP are the stack pointer and base pointer.
# The last 8 items show the states of the flag bits.
# In this case, Overflow, Direction, Sign, Zero, and Carry
# bits are clear (0); the Interrupt, AuxCarry, and Parity
# bits are set (1).
cs = 0e57 8059fbc0:083f Code Ex/R
# Code segment selector is 0E57, linear address is 8059FBC0
# (enhanced-mode linear addresses often start with 8xxx),
# and the limit is 083F. Accessing code and data segments
# beyond their limits is a common cause of GP faults.
ss = 0d7f 8059d5e0:25df Data R/W
# Stack selector
ds = 0d7f 8059d5e0:25df Data R/W
# Data selector--note that the limit is 25DF, and we
# tried to read the value at FFFE, beyond the limit.
es = 0d7f 8059d5e0:25df Data R/W
CPU 32 bit Registers (32bit)
eax = 00001e54 ebx = 00000014 ecx = ffff0d7f edx = 00000111
esi = 00001e54 edi = 00000111 ebp = 0000237a esp = 800422fc
fs = 0000 0:0000 Null Ptr
# If the selector is 0, it indicates a NULL pointer. Trying
# to use a NULL pointer is another common cause of GP faults.
gs = 0000 0:0000 Null Ptr
eflag = 00000002
System Info (info)
Windows version 3.10
Debug build
# The debugging version of Windows was running.
Windows Build 3.1.048
# This is an internal Microsoft build of Windows, #48.
Username Unknown User
# Your name here
Organization Unknown Organization
# Your organization here
System Free Space 7131008
Stack base 1122, top 9164, lowest 7504, size 8042
# Stack size of current task
System resources: USER: 87% free, seg 0777 GDI: 85% free, seg 05d7
LargestFree 6594560, MaxPagesAvail 1610, MaxPagesLockable 267
# These statistics are almost useless.
TotalLinear 1948, TotalUnlockedPages 274, FreePages 52
TotalPages 614, FreeLinearSpace 1611, SwapFilePages 7158
Page Size 4096
4 tasks executing.
WinFlags -
Math coprocessor
80386 or 80386 SX
Enhanced mode
Protect mode
Stack Dump (stack)
# We dump the stack to see what called the routine that failed.
Stack Frame 0 is BICHO _DoCommand+006b ss:bp 0d7f:237a
# The failure occurred in BICHO, 0x6B bytes past the
# start of DoCommand.
0e57:02f0 e9 02b9 jmp near 05ac
0e57:02f3 6a 00 push 00
0e57:02f5 9a 8db0 0477 callf 0477:8db0
0e57:02fa e9 02af jmp near 05ac
(BICHO:_DoCommand+006b)
# The failure happened on the following instruction:
0e57:02fd ff 36 fffe push word ptr [fffe]
# We tried to read a value from memory at DS:FFFE and
# push it on the stack. However, the limit of the DS
# segment is 25DF.
0e57:0301 68 0110 push 0110
0e57:0304 e8 fe5d call near 0164
0e57:0307 83 c4 04 add sp, 04
Stack Frame 1 is BICHO MAINWNDPROC+0027 ss:bp 0d7f:2388
# The Bicho MainWndProc probably called DoCommand.
0e57:0670 eb 16 jmp short 0688
0e57:0672 ff 76 0a push word ptr [bp+0a]
0e57:0675 56 push si
0e57:0676 e8 fc19 call near 0292
(BICHO:MAINWNDPROC+0027)
0e57:0679 83 c4 04 add sp, 04
0e57:067c 99 cwd
0e57:067d eb 1f jmp short 069e
0e57:067f 6a 00 push 00
Stack Frame 2 is USER IDISPATCHMESSAGE+007e ss:bp 0d7f:239e
# USER is the Windows USER.EXE. It is what calls your
# window and dialog box procedures. In this case,
# it called the BICHO MainWndProc.
Stack Frame 3 is BICHO WINMAIN+0050 ss:bp 0d7f:23bc
# Here is the BICHO WinMain, which called
# DispatchMessage, which called MainWndProc.
Stack Frame 4 is BICHO 1:00a3 ss:bp 0d7f:23ca
# Here is where the startup code calls WinMain.
System Tasks (tasks)
Task WINEXIT, Handle 0daf, Flags 0001, Info 9248 08-09-90 16:52
FileName C:\MS\WIN\DON\WINEXIT.EXE
Task DRWATSON, Handle 0ea7, Flags 0001, Info 26256 09-23-91 12:00
FileName C:\WIN31\DRWATSON.EXE
# This task will always be listed.
Task PROGMAN, Handle 060f, Flags 0001, Info 110224 09-23-91 12:02
FileName C:\WIN31\PROGMAN.EXE
# This task (or whatever shell you use) will always be listed.
Task BICHO, Handle 0da7, Flags 0001, Info 16537 09-11-91 8:45
FileName D:\BICHO.EXE
# This is the name of the program that caused the failure.
1> I ran a test app that accessed a value
2> beyond the limits of the segment bounds.
# Anything you type in the Dr. Watson's Clues dialog box
# is added to the log file, so you can type what you
# want to remember.
Stop Dr. Watson 0.80 - Thu Sep 26 10:52:10 1991
# This line is written each time Dr. Watson terminates.