Date: Wed, 10 Sep 1997 12:22:02 +0200 From: j@ida.interface-business.de (J Wunsch) To: bugs@freebsd.org Cc: dfr@freebsd.org, dyson@freebsd.org Subject: Yet another 2.2-stable NFS (client) panic Message-ID: <19970910122202.WS38344@ida.interface-business.de>
next in thread | raw e-mail | index | archive | help
Fatal trap 12: page fault while in kernel mode
fault virtual address = 0x87654371
fault code = supervisor read, page not present
instruction pointer = 0x8:0xf013476f
stack pointer = 0x10:0xefbffdb0
frame pointer = 0x10:0xefbffdc0
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, def32 1, gran 1
processor eflags = interrupt enabled, resume, IOPL = 3
current process = 7004 (hpscan)
interrupt mask = bio
0xf013476f <reassignbuf+147>: movl 0x50(%edx),%eax
Register %edx had the fairly suspicious value 0x87654321. Alas, the
register values seem to have been clobbered when taking the coredump
from within DDB. Here's the stack trace (modulo the frames that were
caused by the DDB `panic' command, and a subsequent page fault inside
DDB):
#23 0xf01c78f7 in trap (frame={tf_es = 16, tf_ds = 16, tf_edi = -1073706944,
tf_esi = -257406464, tf_ebp = -272630336, tf_isp = -272630372,
tf_ebx = -225681520, tf_edx = -2023406815, tf_ecx = -225811320,
tf_eax = 128, tf_trapno = 12, tf_err = 0, tf_eip = -267171985,
tf_cs = 8, tf_eflags = 78470, tf_esp = -225681520, tf_ss = -225681520})
at ../../i386/i386/trap.c:311
#24 0xf013476f in reassignbuf (bp=0xf28c5f90, newvp=0xf0a84a00)
at ../../kern/vfs_subr.c:670
#25 0xf012f2f5 in bdwrite (bp=0xf28c5f90) at ../../kern/vfs_bio.c:410
#26 0xf015a5d6 in nfs_write (ap=0xefbffee8) at ../../nfs/nfs_bio.c:710
#27 0xf0139247 in vn_write ()
#28 0xf011efc3 in write ()
#29 0xf01c8417 in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = 512,
tf_esi = 136170860, tf_ebp = -272639304, tf_isp = -272629788,
tf_ebx = 136110176, tf_edx = 4505583, tf_ecx = 4505583, tf_eax = 4,
tf_trapno = 7, tf_err = 7, tf_eip = 136061205, tf_cs = 31,
The current process above was doing heavy NFS writing by the time of
this panic. (The NFS server is also a FreeBSD-2.2-something machine.)
Not sure whether it was a concidence, but right at the moment the
panic happened, i had just issued an `ntpdate' command on the NFS
server machine, causing it to change its system clock by ~ 45 seconds.
(kgdb) up 24
#24 0xf013476f in reassignbuf (bp=0xf28c5f90, newvp=0xf0a84a00)
at ../../kern/vfs_subr.c:670
670 (tbp->b_vnbufs.le_next->b_lblkno < bp->b_lblkno)) {
(kgdb) l 670
665 tbp = newvp->v_dirtyblkhd.lh_first;
666 if (!tbp || (tbp->b_lblkno > bp->b_lblkno)) {
667 bufinsvn(bp, &newvp->v_dirtyblkhd);
668 } else {
669 while (tbp->b_vnbufs.le_next &&
670 (tbp->b_vnbufs.le_next->b_lblkno < bp->b_lblkno)) {
671 tbp = tbp->b_vnbufs.le_next;
672 }
673 LIST_INSERT_AFTER(tbp, bp, b_vnbufs);
674 }
(kgdb) up
#25 0xf012f2f5 in bdwrite (bp=0xf28c5f90) at ../../kern/vfs_bio.c:410
410 reassignbuf(bp, bp->b_vp);
(kgdb) l 410
405 return;
406 }
407 bp->b_flags &= ~(B_READ|B_RELBUF);
408 if ((bp->b_flags & B_DELWRI) == 0) {
409 bp->b_flags |= B_DONE | B_DELWRI;
410 reassignbuf(bp, bp->b_vp);
411 }
412
413 /*
414 * This bmap keeps the system from needing to do the bmap later,
(kgdb) up
#26 0xf015a5d6 in nfs_write (ap=0xefbffee8) at ../../nfs/nfs_bio.c:710
710 bdwrite(bp);
(kgdb) l 710
705 (nmp->nm_flag & NFSMNT_NQNFS) == 0) {
706 bp->b_proc = (struct proc *)0;
707 bp->b_flags |= B_ASYNC;
708 (void)nfs_writebp(bp, 0);
709 } else
710 bdwrite(bp);
711 } while (uio->uio_resid > 0 && n > 0);
712 return (0);
713 }
714
The coredump is still available if somebody has further questions.
--
J"org Wunsch Unix support engineer
joerg_wunsch@interface-business.de http://www.interface-business.de/~j
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19970910122202.WS38344>
