Skip site navigation (1)Skip section navigation (2)
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>