amd64/183397: Kernel panic at first incoming ssh

John Baldwin jhb at freebsd.org
Fri Nov 1 17:25:27 UTC 2013


On Friday, November 01, 2013 12:48:54 pm Torbjorn Granlund wrote:
> John Baldwin <jhb at 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


More information about the freebsd-amd64 mailing list