lots of panics in uPort V -> Problems @ 10MHz

John Plocher root at uwspan.UUCP
Thu Mar 17 16:44:36 AEST 1988


+---- fortin at zap.UUCP (Denis Fortin) writes in <421 at zap.UUCP> ----
| 	user=0xC7E
| 	cs=0x208 ds=0x220 es=0x220 ss=0x213 di=0x400 si=0x5BE0
| 	bp=0x2C0 bx=0x7 dx=0xA1 cx=0x0 ax=0x7 ip=0x5807 flags=0x202
| 	trap type 0xD
| 	err=0x210
| 	stack frame address = E830270
| 	Double panic: Software detects double fault
| 
| I have also seen "user=0x10 ... err=0x8173".
| 
| I guess my biggest problem is that I have really no way of knowing what
| the register dump really means
+----

The user= and the err= don't really tell you anything; the ones you are
interested in are cs= and ip=.

First you need a copy of the symbol table from the kernel.  You get this by
executing the following command:
	nm /system5 > system5.nm
system5.mn is LARGE - several hundred K - so be sure you don't put it in (your
small) root filesystem.  It looks like this:

Symbols from /system5:
Name                  Value   Class        Type         Size   Line  Section
gdt.s               |        | file |                  |      |     |
sludge              |35656025|static|                  |      |     |.data
tfsbot              |35658780|static|                  |      |     |.data
tfstack             |35659804|static|                  |      |     |.data
wnsbot              |35659892|static|                  |      |     |.data
wnstack             |35660916|static|                  |      |     |.data
conf.c              |        | file |                  |      |     |
prfintr             |33554432|extern|            int( )|     6|     |.text
emul_present        |33554438|extern|            int( )|    11|     |.text
sioscan             |33554449|extern|           long( )|    12|     |.text
lomem.c             |        | file |                  |      |     |
linesw.c            |        | file |                  |      |     |
buffers.c           |        | file |                  |      |     |
...
(but your numbers WILL be different than these :-)

Then you get the CS:IP address from the above register dump:
    | 	cs=0x208
    | 	                                      ip=0x5807
and form them into a full address:
	02085807

At this point you need to find out where the panic happened:
    vi system5.mn	- start the editor
    /020858  		- search for the MSBs of the address
			-- NOTE that the LSBs are not looked for
			  (Most Significant Bits, Least Significant Bits)
			- There may be a few places where this search succeedes,
			  look for the place that is the closest one with a
			  value SMALLER than the address calculated above.
			  eg. in choosing between 02085800 and 02085810, you
			  would choose the first one.  This is because you want
			  to find the name of the routine which was executing
			  when the panic happened, not the name of the one
			  just after it in memory.

At this point you should be able to find a class text address near the one
calculated from CS and IP above.  NOTE that the variable "sioscan" is
located near 33554440, as is "emul_present" and "prfintr".  We can also
tell from this symbol table that these routines can be found in the file
conf.c.


- Hope this isn't too confusing,
    John

-- 
Comp.Unix.Microport is now unmoderated!  Use at your own risk :-)



More information about the Comp.unix.microport mailing list