Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 1 Nov 2013 13:22:35 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        Torbjorn Granlund <tg@gmplib.org>
Cc:        freebsd-amd64@freebsd.org
Subject:   Re: amd64/183397: Kernel panic at first incoming ssh
Message-ID:  <201311011322.35869.jhb@freebsd.org>
In-Reply-To: <86y558ysnd.fsf@shell.gmplib.org>
References:  <201310312350.r9VNo1gE056086@freefall.freebsd.org> <201311010921.57769.jhb@freebsd.org> <86y558ysnd.fsf@shell.gmplib.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Friday, November 01, 2013 12:48:54 pm Torbjorn Granlund wrote:
> John Baldwin <jhb@freebsd.org> writes:
> 
>   Can you fire up gdb against your 64-bit kernel file (e.g. gdb 
>   /boot/kernel/kernel) and do 'l *xn_intr+0x7d'?
> 
> I'm afraid my ignorance of how to debug the kernel will show itself
> here.
> 
> I did this:
> 
> 1. booted the system.
> 2. logged in as root on the (vnc) console.
> 3. issued the command "gdb /boot/kernel/kernel"
> 4. Issued the above command and got this printout:
> 
> (gdb) l *xn_intr+0x7d
> 0xffffffff8079fb7d is in xn_intr (atomic.h:161).
> 156     atomic.h: No such file ot directory.
>         in atomic.h
> (gdb)

Hummm, I assume you can't get a crashdump when this happens?  atomic.h means 
it is likely acquiring a lock:

static void
xn_intr(void *xsc)
{
	struct netfront_info *np = xsc;
	struct ifnet *ifp = np->xn_ifp;

#if 0
	if (!(np->rx.rsp_cons != np->rx.sring->rsp_prod &&
	    likely(netfront_carrier_ok(np)) &&
	    ifp->if_drv_flags & IFF_DRV_RUNNING))
		return;
#endif
	if (RING_HAS_UNCONSUMED_RESPONSES(&np->tx)) {
		XN_TX_LOCK(np);
		xn_txeof(np);
		XN_TX_UNLOCK(np);			
	}	

	XN_RX_LOCK(np);
	xn_rxeof(np);
	XN_RX_UNLOCK(np);

Either the XN_TX_LOCK() or XN_RX_LOCK().  It's hard to narrow down where the 
corruption lies without a dump.

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201311011322.35869.jhb>