Fatal trap 12: page fault while in kernel mode.

Matthew Dillon dillon at apollo.backplane.com
Tue May 25 11:38:04 PDT 2004


:/sys/kern/kern_device.c, starting at line 158
:
:static
:lwkt_port_t
:_init_cdevmsg(dev_t dev, cdevmsg_t msg, int cmd)
:{
:     lwkt_initmsg_simple(&msg->msg, cmd);
:     KKASSERT(dev != NULL);
:     msg->dev = dev;
:     return(dev->si_port);
:}
:
:trace (using hmp's changes):
:
:_init_cdevmsg(ffffffff,c05e4900,10003,5,0) at _init_cdevmsg+0x47
:dev_dstrategy(ffffffff,c0e2e6ec,200,40000,d60bcddc) at dev_dstrategy+0x17
:mbr_extended(ffffffff,d66ea4d0,d60bccb8,3c24db0,28512c0,3c24db0,3f,f0,0,1) 
:at mbr_extended+0x5e
:dsinit(c0ce6238,d66ea4d0,d66ea4cc,d66ea490,0) at dsinit+0x3f8
:dsopen(c0ce6238,2000,0,d66ea4cc,d66ea4d0) at dsopen+0xde
:diskopen(c0ce6238,1,2000,c04a6bc0,c05e4b1c) at diskopen+0x97
:disk_putport(d66ea490,c05e4b1c) at disk_putport+0x35
:lwkt_domsg(d66ea490,c05e4b1cd66daec0,c0ce5f68,c05e4b84) at lwkt_domsg+0x35
:dev_dopen(c0ce6238,1,2000,c04a6bc0,c05e4c00) at dev_dopen0x3a
:spec_open(c05e4c00) at spec_open+0x18a
:ffs_mountfs(d66daec0,c0dd1438,c04a6bc0,c04c80a0,c05e4d4c) at 
:fs_mountfs+0x198
:ffs_mount(c0dd1438,0,0,0,c04a6bc0) at ffs_mount+0xa4
:vfs_mountroot_try(c05c1198,c04417ac) at vfs_mountroot_try+0x148
:vfs_mountroot(0,5e1c00,5ef000,0,c013782c) at vfs_mountroot+0x5a
:mi_startup(5e1000,ff800000,c04f1244,c05e471c,c05e470c) at i_startup+0x90
:begin() at begin+0x43

    The big clue here is that mbr_extended() is being passed -1 for 
    the dev_t (which is the #define for NODEV).

    I'll have this fixed in just a second.  The code is assuming that
    bp->b_dev is remaining valid after the BUF_STRATEGY() call, but this
    is not true any more.  bp->b_dev is set to NODEV after a strategy
    call (in order to catch places in our codebase where we aren't properly
    initializing b_dev).

						-Matt






More information about the Bugs mailing list