Kernel panic with IGMPv3

From: Pierre Guinoiseau <geekounet_at_poildetroll.net>
Date: Tue, 24 Mar 2009 00:22:35 +0100
Hi all !

My last running kernel is from 03/05/2009, I can't get a working kernel
since then, because it panics soon after the boot process (or even while
booting), whenever my laptop start networking. The panic seems to be
related to IGMPv3 interrupts. The pointer given to m_freem() seems...
abnormal ;) But I don't know how to debug this. Anyway, it may be
related to the IGMPv3 merge on 03/09/2009 at rev r189592.

Here is the kgdb output with a kernel compiled today from latest
current, I hope this helps, and I'm at your disposition if more infos
are required to solve this problem. :)

Thanks !



[root_at_Korriban ~] # kgdb /boot/kernel.noop/kernel /usr/crash/vmcore.0
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "amd64-marcel-freebsd"...

Unread portion of the kernel message buffer:


Fatal trap 9: general protection fault while in kernel mode
cpuid = 0; apic id = 00
instruction pointer     = 0x8:0xffffffff803ae495
stack pointer           = 0x10:0xfffffffe40035ad0
frame pointer           = 0x10:0xfffffffe40035af0
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 12 (swi1: net)
panic: from debugger
cpuid = 0
Uptime: 2m51s
Physical memory: 2027 MB
Dumping 146 MB: 131 115 99 83 67 51 35 19 3

#0  doadump () at pcpu.h:215
215     pcpu.h: No such file or directory.
        in pcpu.h
(kgdb) bt
#0  doadump () at pcpu.h:215
#1  0xffffffff803583f2 in boot (howto=260) at
/usr/src/sys/kern/kern_shutdown.c:420
#2  0xffffffff803588a0 in panic (fmt=Variable "fmt" is not available.
) at /usr/src/sys/kern/kern_shutdown.c:576
#3  0xffffffff801dadc7 in db_panic (addr=Variable "addr" is not available.
) at /usr/src/sys/ddb/db_command.c:478
#4  0xffffffff801db251 in db_command (last_cmdp=0xffffffff8080c6a0,
cmd_table=Variable "cmd_table" is not available.
) at /usr/src/sys/ddb/db_command.c:445
#5  0xffffffff801db499 in db_command_loop () at
/usr/src/sys/ddb/db_command.c:498
#6  0xffffffff801dd2f7 in db_trap (type=Variable "type" is not available.
) at /usr/src/sys/ddb/db_main.c:229
#7  0xffffffff80384662 in kdb_trap (type=9, code=0,
tf=0xfffffffe40035a20) at /usr/src/sys/kern/subr_kdb.c:534
#8  0xffffffff805b0e0d in trap_fatal (frame=0xfffffffe40035a20,
eva=Variable "eva" is not available.
) at /usr/src/sys/amd64/amd64/trap.c:745
#9  0xffffffff805b1855 in trap (frame=0xfffffffe40035a20) at
/usr/src/sys/amd64/amd64/trap.c:551
#10 0xffffffff8058f2be in calltrap () at
/usr/src/sys/amd64/amd64/exception.S:217
#11 0xffffffff803ae495 in m_freem (mb=0xdeadc0dedeadc0de) at
/usr/src/sys/kern/uipc_mbuf.c:163
#10 0xffffffff8058f2be in calltrap () at
/usr/src/sys/amd64/amd64/exception.S:217
#11 0xffffffff803ae495 in m_freem (mb=0xdeadc0dedeadc0de) at
/usr/src/sys/kern/uipc_mbuf.c:163
#12 0xffffffff80434e4c in igmp_intr (m=Variable "m" is not available.
) at /usr/src/sys/netinet/igmp.c:3454
#13 0xffffffff803fd942 in swi_net (dummy=0xffffff0004211400) at
/usr/src/sys/net/netisr.c:145
#14 0xffffffff8033a195 in intr_event_execute_handlers (p=Variable "p" is
not available.
) at /usr/src/sys/kern/kern_intr.c:1134
#15 0xffffffff8033ad89 in ithread_loop (arg=0xffffff0001319820) at
/usr/src/sys/kern/kern_intr.c:1147
#16 0xffffffff8033819a in fork_exit (callout=0xffffffff8033acdb
<ithread_loop>, arg=0xffffff0001319820, frame=0xfffffffe40035c80) at
/usr/src/sys/kern/kern_fork.c:821
#17 0xffffffff8058f69e in fork_trampoline () at
/usr/src/sys/amd64/amd64/exception.S:553
#18 0x0000000000000000 in ?? ()
#19 0x0000000000000000 in ?? ()
#20 0x0000000000000001 in ?? ()
#21 0x0000000000000000 in ?? ()
#22 0x0000000000000000 in ?? ()
#23 0x0000000000000000 in ?? ()
#24 0x0000000000000000 in ?? ()
#25 0x0000000000000000 in ?? ()
#26 0x0000000000000000 in ?? ()
#27 0x0000000000000000 in ?? ()
#28 0x0000000000000000 in ?? ()
#29 0x0000000000000000 in ?? ()
#30 0x0000000000000000 in ?? ()
#31 0x0000000000000000 in ?? ()
#32 0x0000000000000000 in ?? ()
#33 0x0000000000000000 in ?? ()
#34 0x0000000000000000 in ?? ()
#35 0x0000000000000000 in ?? ()
#36 0x0000000000000000 in ?? ()
#37 0x0000000000000000 in ?? ()
#38 0x0000000000000000 in ?? ()
#39 0x0000000000000000 in ?? ()
#40 0x0000000000000000 in ?? ()
#41 0x0000000000000000 in ?? ()
#42 0x0000000000ba2000 in ?? ()
#43 0x0000000000000109 in ?? ()
#44 0xffffffff8082dcc0 in affinity ()
#45 0xffffffff8082dcc0 in affinity ()
#46 0x0000000000000000 in ?? ()
#47 0xfffffffe40035b80 in ?? ()
#48 0xfffffffe40035b38 in ?? ()
#49 0xffffff000132d000 in ?? ()
#50 0xffffffff80378a99 in sched_switch (td=0xffffff0001319820,
newtd=Variable "newtd" is not available.
) at /usr/src/sys/kern/sched_ule.c:1867
Previous frame inner to this frame (corrupt stack?)
(kgdb) frame 11
#11 0xffffffff803ae495 in m_freem (mb=0xdeadc0dedeadc0de) at
/usr/src/sys/kern/uipc_mbuf.c:163
163             while (mb != NULL)
(kgdb) list
158      */
159     void
160     m_freem(struct mbuf *mb)
161     {
162
163             while (mb != NULL)
164                     mb = m_free(mb);
165     }
166
167     /*-
(kgdb) frame 12
#12 0xffffffff80434e4c in igmp_intr (m=Variable "m" is not available.
) at /usr/src/sys/netinet/igmp.c:3454
3454                    m_freem(m0);
(kgdb) list
3449            mac_netinet_igmp_send(ifp, m0);
3450    #endif
3451            error = ip_output(m0, ipopts, NULL, 0, &imo, NULL);
3452            if (error) {
3453                    CTR3(KTR_IGMPV3, "%s: ip_output(%p) = %d",
__func__, m0, error);
3454                    m_freem(m0);
3455                    goto out;
3456            }
3457
3458            ++V_igmpstat.igps_snd_reports;
(kgdb) frame 13
#13 0xffffffff803fd942 in swi_net (dummy=0xffffff0004211400) at
/usr/src/sys/net/netisr.c:145
145                     ni->ni_handler(m);
(kgdb) list
140
141             for (;;) {
142                     IF_DEQUEUE(ni->ni_queue, m);
143                     if (m == NULL)
144                             break;
145                     ni->ni_handler(m);
146             }
147     }
148
149     /*
(kgdb)


Received on Mon Mar 23 2009 - 22:42:15 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:44 UTC