Date: Thu, 6 Jul 1995 22:28:00 +0200 From: esser@zpr.uni-koeln.de (Stefan Esser) To: Voradesh Yenbut <yenbut@cs.washington.edu> Cc: hackers@freebsd.org Subject: Re: One cause of 2.05R instability found Message-ID: <199507062028.AA28022@FileServ1.MI.Uni-Koeln.DE> In-Reply-To: Voradesh Yenbut <yenbut@cs.washington.edu> "Re: One cause of 2.05R instability found" (Jul 5, 14:43)
next in thread | previous in thread | raw e-mail | index | archive | help
On Jul 5, 14:43, Voradesh Yenbut wrote: } Subject: Re: One cause of 2.05R instability found } In message <199507051552.AA06352@FileServ1.MI.Uni-Koeln.DE>, Stefan Esser writes: } >Well, since there shouldn't have been any code generated } >before, there shouldn't be any difference ... } } There are some differences. One fact is that my system no longer } crashes. The others seem to be some shifts in the code. More details } of code changes are below. Well, didn't expect that the code would come out different ... } I did make a trivial change of code in if_ed.c for it to identify my } NIC board as 8216 instead of 8416. At first I thought the problem was } with the modified ed driver, but changing it to unmodified version or } version from previous release did not make any difference to the } crash. I did not use any NCR specific kernel config file options. Ok. } >; ncb_profile (np, cp); } > pushl %ecx } > pushl 8(%ebp) } > call _ncb_profile } } <ncr_complete+128> } } > addl $8,%esp } > } >; if (DEBUG_FLAGS & DEBUG_TINY) } >; printf ("CCB=%x STAT=%x/%x\n", (unsigned)cp & 0xfff, } >; cp->host_status,cp->scsi_status); } > } >; xp = cp->xfer; } > movl 12(%ebp),%ecx } > movl 452(%ecx),%edi } > } >; cp->xfer = NULL; } > movl $0,452(%ecx) } } When the "if (DEBUG_FLAGS.." statement has actually been commented } out in the source code, the line "addl $8,%esp" above was moved to a } location before "if (cp->parity_status" as below. There is no change } to the code between the old and the new locations of addl. } } >All data structures should remain unchanged over the } >execution of ncr_complete(), since they are locked in a } >way that should also prevent simultanous updates by the } >NCR ... } > } > xp = cp->xfer; } > cp->xfer = NULL; } > tp = &np->target[xp->sc_link->target]; } > lp = tp->lp[xp->sc_link->lun]; } } >>><ncr_complete+189> } >>> addl $8,%esp <<<<<< New location } } >ncr_complete + 195: } > if (cp->parity_status) { } > ... } > { } } Also the locations of instructions were shifted. For example, } ncr_complete is now at 0xf0168eb1 instead of at 0xf0168ec1. There } could also be other changes that are not mentioned here. Well, I'll have a look at the output of both versions of ncr.c (with and without the "if (DEBUG)"). Perhaps I'll find something ... } >It might help to send a stack trace obtained using } >the kernel debugger ... } } I am afraid it would be hard to do. My system has 64 MBs of memory } and each swap partition has only 48 MBs. Since the panic was in } ncr.c, sometimes the system was just stuck not being able to write } anything to the disks. If there is an easy way to get a dump (without } changing the system much), I might attempt to do it. Well, I thought about building a system with kernel debugger support: options DDB The system will give a debug prompt in case of a panic. To get a stack trace, you enter "trace", to reboot you can use "panic" command ... But You'll have to writ down the stack trace by hand ... Regards, STefan -- Stefan Esser Internet: <se@ZPR.Uni-Koeln.DE> Zentrum fuer Paralleles Rechnen Tel: +49 221 4706021 Universitaet zu Koeln FAX: +49 221 4705160 Weyertal 80 50931 Koeln
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199507062028.AA28022>