Panic at boot time on SMP
John Baldwin
jhb at FreeBSD.org
Thu Jul 3 07:34:24 PDT 2003
On 03-Jul-2003 Kris Kennaway wrote:
> Anyone's ears burning? :)
>
> Kris
>
> Booting [/boot/kernel/kernel]...
> Copyright (c) 1992-2003 The FreeBSD Project.
> Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
> The Regents of the University of California. All rights reserved.
> FreeBSD 5.1-CURRENT #22: Wed Jul 2 17:39:58 PDT 2003
> kris at bento.FreeBSD.org:/usr/src/sys/i386/compile/LOCAL5
> Preloaded elf kernel "/boot/kernel/kernel" at 0xc0443000.
> Timecounter "i8254" frequency 1193182 Hz
> Timecounter "TSC" frequency 730843207 Hz
> CPU: Intel Pentium III (730.84-MHz 686-class CPU)
> Origin = "GenuineIntel" Id = 0x683 Stepping = 3
>
> Features=0x387fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,PN,MMX,
> FXSR,SSE>
> real memory = 1073741824 (1024 MB)
> avail memory = 1038618624 (990 MB)
> Programming 16 pins in IOAPIC #0
> IOAPIC #0 intpin 2 -> irq 0
> Programming 16 pins in IOAPIC #1
> FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
> cpu0 (BSP): apic id: 1, version: 0x00040011, at 0xfee00000
> cpu1 (AP): apic id: 0, version: 0x00040011, at 0xfee00000
> io0 (APIC): apic id: 2, version: 0x000f0011, at 0xfec00000
> io1 (APIC): apic id: 3, version: 0x000f0011, at 0xfec01000
>
>
> Fatal trap 12: page fault while in kernel mode
> cpuid = 0; lapic.id = 01000000
> fault virtual address = 0xdf119fec
> fault code = supervisor write, page not present
> instruction pointer = 0x8:0xc030b254
> stack pointer = 0x10:0xc0467b48
> frame pointer = 0x10:0xc0467b48
> 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 cpu_thread_setup+0x24: movl $0,0x24c(%ecx)
> db> trace
> cpu_thread_setup(c21ab000,0,c033b1d4,be,0) at cpu_thread_setup+0x24
void
cpu_thread_setup(struct thread *td)
{
td->td_pcb =
(struct pcb *)(td->td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1;
td->td_frame = (struct trapframe *)((caddr_t)td->td_pcb - 16) - 1;
td->td_pcb->pcb_ext = NULL;
}
On my laptop, cpu_thread_setup+0x24 is the line that sets td->td_pcb->pcb_ext
to NULL. It would seem that td_pcb is hosered. You could perhaps add
some printf's to dump the value of td_kstack and make sure it is a sane
value?
--
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!" - http://www.FreeBSD.org/
More information about the freebsd-current
mailing list