Path: utzoo!mnetor!uunet!husc6!bbn!uwmcsd1!dogie!uwvax!geowhiz!uwspan!root From: root@uwspan.UUCP (John Plocher) Newsgroups: comp.unix.microport Subject: Re: lots of panics in uPort V -> Problems @ 10MHz Message-ID: <2570@uwspan.UUCP> Date: 17 Mar 88 06:44:36 GMT References: <115@hawkmoon.UUCP> <829@ddsw1.UUCP> <421@zap.UUCP> Reply-To: root@uwspan.UUCP (John Plocher) Followup-To: comp.unix.microport Organization: U of Wisconsin - Madison Spanish Department Lines: 74 +---- fortin@zap.UUCP (Denis Fortin) writes in <421@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 :-)