panic on RELENG_5 on em(4)
Rong-En Fan
grafan at gmail.com
Thu Oct 27 01:00:23 PDT 2005
Hi,
I'm running RELENG_5 around Oct 12, got a panic related to em(4).
After some searching, I saw a similar panic reported on -current
(his/her system is also RELENG_5) in May, but no further replies.
The kernel is similar to GENERIC with IPFW and have HTT
enabled in loader.conf. Box is a 2*Xeon with HTT, SMP kernel
is enabled, thus there are 4 logical cpus. For some reasons,
I did not have DDB compiled. The kgdb outputs are enclosed.
If there are people interested to help debug this, I can send
information as request.
Thanks,,
Rong-En Fan
(kgdb and console):
Fatal trap 12: page fault while in kernel mode
cpuid = 2; apic id = 06
fault virtual address = 0xbfc38018
fault code = supervisor read, page not present
instruction pointer = 0x8:0xc05fb49f
stack pointer = 0x10:0xe6448bc0
frame pointer = 0x10:0xe6448c24
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 = 77 (irq16: em0)
trap number = 12
panic: page fault
cpuid = 2
#0 doadump () at pcpu.h:160
No locals.
#1 0xc04c1268 in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:412
first_buf_printf = 1
#2 0xc04c1616 in panic (fmt=0xc062dcbe "%s")
at /usr/src/sys/kern/kern_shutdown.c:568
td = (struct thread *) 0xc313bd80
bootopt = 260
newpanic = 0
ap = 0xc313bd80 "L\023\020\t"
buf = "page fault", '\0' <repeats 245 times>
#3 0xc06121dd in trap_fatal (frame=0xe6448b80, eva=0)
at /usr/src/sys/i386/i386/trap.c:817
code = 16
type = 12
ss = 16
esp = 0
softseg = {ssd_base = 0, ssd_limit = 1048575, ssd_type = 27,
ssd_dpl = 0, ssd_p = 1, ssd_xx = 1, ssd_xx1 = 0, ssd_def32 = 1, ssd_gran = 1}
#4 0xc0611ed4 in trap_pfault (frame=0xe6448b80, usermode=0, eva=3217260568)
at /usr/src/sys/i386/i386/trap.c:735
va = 3217260544
vm = (struct vmspace *) 0x0
map = 0xc0673280
rv = 1
ftype = 1 '\001'
td = (struct thread *) 0xc313bd80
p = (struct proc *) 0xc313a54c
#5 0xc0611ab9 in trap (frame=
{tf_fs = -1022033896, tf_es = 16, tf_ds = -431751152, tf_edi = -10217512\
96, tf_esi = -1017843008, tf_ebp = -431715292, tf_isp = -431715412, tf_ebx = -\
1008379904, tf_edx = 0, tf_ecx = 234907650, tf_eax = 57350, tf_trapno = 12, tf\
_err = 0, tf_eip = -1067469665, tf_cs = 8, tf_eflags = 66055, tf_esp = -431715\
256, tf_ss = -1021353488}) at /usr/src/sys/i386/i386/trap.c:425
td = (struct thread *) 0xc313bd80
p = (struct proc *) 0xc313a54c
sticks = 3863251848
i = 0
ucode = 0
type = 12
code = 0
eva = 3217260568
#6 0xc05fdc4a in calltrap () at /usr/src/sys/i386/i386/exception.s:140
No locals.
#7 0xc3150018 in ?? ()
No symbol table info available.
#8 0x00000010 in ?? ()
No symbol table info available.
#9 0xe6440010 in ?? ()
No symbol table info available.
#10 0xc3195000 in ?? ()
No symbol table info available.
#11 0xc354f2c0 in ?? ()
No symbol table info available.
#12 0xe6448c24 in ?? ()
No symbol table info available.
#13 0xe6448bac in ?? ()
No symbol table info available.
#14 0xc3e55800 in ?? ()
No symbol table info available.
#15 0x00000000 in ?? ()
No symbol table info available.
#16 0x0e006802 in ?? ()
No symbol table info available.
#17 0x0000e006 in ?? ()
No symbol table info available.
#18 0x0000000c in ?? ()
No symbol table info available.
#19 0x00000000 in ?? ()
No symbol table info available.
#20 0xc05fb49f in bus_dmamap_load (dmat=0xc3353400, map=0x0, buf=0xe006802,
buflen=2046, callback=0xc045f8e8 <em_dmamap_cb>, callback_arg=0xe6448c48,
flags=0) at pmap.h:200
lastaddr = 0
error = 0
nsegs = 0
195 vm_paddr_t pa;
196
197 if ((pa = PTD[va >> PDRSHIFT]) & PG_PS) {
198 pa = (pa & ~(NBPDR - 1)) | (va & (NBPDR - 1));
199 } else {
200 pa = *vtopte(va);
201 pa = (pa & PG_FRAME) | (va & PAGE_MASK);
202 }
203 return pa;
204 }
#21 0xc04602f1 in em_get_buf (i=88, adapter=0xc3195000, nmp=0x0)
at /usr/src/sys/dev/em/if_em.c:2531
mp = (struct mbuf *) 0xc3e55800
rx_buffer = (struct em_buffer *) 0xc354f2c0
ifp = (struct ifnet *) 0xc354f2c0
paddr = 3272850816
error = -1021751296
2526
2527 /*
2528 * Using memory from the mbuf cluster pool, invoke the
2529 * bus_dma machinery to arrange the memory mapping.
2530 */
2531 error = bus_dmamap_load(adapter->rxtag, rx_buffer->map,
2532 mtod(mp, void *), mp->m_len,
2533 em_dmamap_cb, &paddr, 0);
2534 if (error) {
2535 m_free(mp);
#22 0xc0460b6e in em_process_receive_interrupts (adapter=0xc3195000, count=-2)
at /usr/src/sys/dev/em/if_em.c:2852
ifp = (struct ifnet *) 0xc3195000
mp = (struct mbuf *) 0xc3638500
accept_frame = 1 '\001'
eop = 1 '\001'
len = 60
desc_len = 0
prev_len_adj = 0
i = 88
current_desc = (struct em_rx_desc *) 0xc31da580
2847 }
2848 }
2849
2850 if (accept_frame) {
2851
2852 if (em_get_buf(i, adapter, NULL) == ENOBUFS) {
2853 adapter->dropped_pkts++;
2854 em_get_buf(i, adapter, mp);
2855 if (adapter->fmp != NULL)
2856 m_freem(adapter->fmp);
#23 0xc045d8ae in em_intr (arg=0xc3195000) at /usr/src/sys/dev/em/if_em.c:1025
loop_cnt = 3
reg_icr = 0
ifp = (struct ifnet *) 0xc3195000
adapter = (struct adapter *) 0xc3195000
1021 }
1022
1023 while (loop_cnt > 0) {
1024 if (ifp->if_flags & IFF_RUNNING) {
1025 em_process_receive_interrupts(adapter, -1);
1026 em_clean_transmit_interrupts(adapter);
1027 }
1028 loop_cnt--;
1029 }
#24 0xc04a8e1b in ithread_loop (arg=0xc312b480)
at /usr/src/sys/kern/kern_intr.c:547
ithd = (struct ithd *) 0xc312b480
ih = (struct intrhand *) 0xc31e3400
td = (struct thread *) 0xc313bd80
p = (struct proc *) 0xc313a54c
count = 0
warming = 0
warned = 0
542 mtx_unlock(&ithd->it_lock);
543 goto restart;
544 }
545 if ((ih->ih_flags & IH_MPSAFE) == 0)
546 mtx_lock(&Giant);
547 ih->ih_handler(ih->ih_argument);
548 if ((ih->ih_flags & IH_MPSAFE) == 0)
549 mtx_unlock(&Giant);
550 }
551 if (ithd->it_enable != NULL) {
#25 0xc04a7b8d in fork_exit (callout=0xc04a8c77 <ithread_loop>, arg=0x0,
frame=0x0) at /usr/src/sys/kern/kern_fork.c:791
p = (struct proc *) 0xc313a54c
td = (struct thread *) 0x0
786 * cpu_set_fork_handler intercepts this function call to
787 * have this call a non-return function to stay in kernel mode.
788 * initproc has its own fork handler, but it does return.
789 */
790 KASSERT(callout != NULL, ("NULL callout in fork_exit"));
791 callout(arg, frame);
792
793 /*
794 * Check if a kernel thread misbehaved and returned from its m\
ain
795 * function.
(kgdb) p callout
$1 = (void (*)(void *, struct trapframe *)) 0xc04a8c77 <ithread_loop>
#26 0xc05fdcac in fork_trampoline () at /usr/src/sys/i386/i386/exception.s:209
No locals.
More information about the freebsd-stable
mailing list