I got this weird panic a few days ago on one of my SMP testboxes, but I don't
think it is SMPng related:

Fatal trap 12: page fault while in kernel mode
cpuid = 1; lapic.id = 01000000
fault virtual address   = 0x7c
fault code              = supervisor read, page not present
...
current process         = 7421 (make)
kernel: type 12 trap, code=0
Stopped at      bread+0x29L     testb   $0x20,0x7c(%esi)
db> trace
bread(c8a63d00,2,1000,0,c8b41bcc) at bread+0x29
ffs_blkatoff()
ufs_lookup()
ufs_vnoperate()
ufs_cache_lookup()
ufs_vnoperate()
lookup()
namei()
vn_open()
open()
syscall2()
Xint0x80_syscall()

Now, 0xc8b41bcc is the bpp argument, and from bread in vfs_bio.c:

int
bread(struct vnode * vp, daddr_t blkno, int size, struct ucred * cred,
    struct buf ** bpp)
{
        struct buf *bp;

        bp = getblk(vp, blkno, size, 0, 0);
        *bpp = bp;

        /* if not found in cache, do some I/O */
        if ((bp->b_flags & B_CACHE) == 0) {

I'm fairly sure it is dying trying to do the deref of bp, so I figured bp was
NULL.  Checking *bpp confirmed this:

db> x/x 0xc8b41bcc
0xc8b41bcc:     0

This means that getblk() returned NULL.  I've looked at getblk() and have no
idea why it would return NULL when passed in a timeout of 0.  Any ideas?  The
panic was during a buildworld -j 128 btw.  Current being in the wonderful state
that it is, I don't think I can get a crashdump, so I'm leaving the machine up
at a ddb prompt if more info is needed.

-- 

John Baldwin <[EMAIL PROTECTED]> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to