Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Nov 2002 07:46:28 -0800 (PST)
From:      Dave Cornejo <dave@dogwood.com>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        Dave Cornejo <dave@dogwood.com>, freebsd-current@FreeBSD.org
Subject:   Re: current SMP kernel crashes (different?)
Message-ID:  <200211141546.gAEFkS2h000892@white.dogwood.com>
In-Reply-To: <XFMail.20021113120246.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
you wrote:
> I think the ACPI PCI LNK code is messing up b/c with SMP we don't use
> LNK's.  So you probably want to disable ACPI for now.  Is the panic the
> same w/o ACPI?

without ACPI the kernel hangs after the "Waiting 2 seconds for SCSI
devices to settle" message. 

> > Fatal trap 12: page fault while in kernel mode
> > cpuid = 0; lapic.id = 00000000
> > fault virtual address   = 0x6dbc00
> > fault code              = supervisor read, page not present
> > instruction pointer     = 0x8:0xc02d7383
> > stack pointer           = 0x10:0xc06decf8
> > frame pointer           = 0x10:0xc06ded18
> > code segment            = base 0x0, limit 0xfffff, type 0x1b
> >                         = DPL 0, pres 1, def32 1, gran 1
> > processor eflags        = interrupt enabled, resume, IOPL = 0
> > current process         = 0 (swapper)
> > kernel: type 12 trap, code=0
> > Stopped at      _mtx_lock_flags+0x43:   cmpl    $0xc05216c0,0(%ebx)
> > db> trace
> > _mtx_lock_flags(6dbc00,0,c04c3c00,138,c02d767d) at _mtx_lock_flags+0x43
> > ithread_remove_handler(c06ded80,c06ded78,c046c427,c06ded80,0) at ithread_remove_handler+0x53
> > inthand_remove(c06ded80,0,c04e8e36,445,a0) at inthand_remove+0x11
> > cpu_initclocks(c06ded98,c02bcf75,0,6db000,6dbc00) at cpu_initclocks+0x327
> > initclocks(0,6db000,6dbc00,6db000,0) at initclocks+0x1c
> > mi_startup() at mi_startup+0xb5
> > begin() at begin+0x2c
> > db>
> > 
> > _mtx_lock_flags+0x43 -> sys/kern/kern_mutex.c:324
> > ithread_remove_handler+0x53 -> sys/kern/kern_intr.c:314
> > inthand_remove+0x11 -> sys/i386/isa/intr_machdep.c:705
> > cpu_initclocks+0x327 -> sys/i386/isa/clock.c:1096
> > initclocks+0x1c -> sys/kern/kern_clock.c:153
> > mi_startup+0xb5 -> sys/kern/init_main.c:217
> 
>         KASSERT(m->mtx_object.lo_class == &lock_class_mtx_sleep,
>             ("mtx_lock() of spin mutex %s @ %s:%d", m->mtx_object.lo_name,
>             file, line));
> 
> It's blowing up doing that == compare, so it seems that the mutex pointer
> (m) (%ebx) is 0x6dbc00.  (Doing a p $ebx might confirm this.)  That means
> that the ithread might be messed up.  Either that or the handler itself
> might be messed up.  If you do a hexdump of the first argument to
> ithread_remove_handler() that should give you a dump of the struct intrhand,
> and you can then see if that looks valid, esp. the ithread pointer.  If the
> ithread pointer is valid then you can start looking at the ithread structure
> via hexdump and see if it looks valid.

Thanks for these hints, I'll try them ASAP,

dave c

-- 
Dave Cornejo @ Dogwood Media, Fremont, California (also dcornejo@ieee.org)
  "There aren't any monkeys chasing us..." - Xochi

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




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