RE: Panic at boot time on SMP

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Thu, 03 Jul 2003 10:34:34 -0400 (EDT)
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/
Received on Thu Jul 03 2003 - 05:34:24 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:13 UTC