Date: Sun, 29 Oct 2000 22:00:03 -0800 (PST) From: "Lachlan O'Dea" <lodea@vet.com.au> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/22224: ipfw pipe command causes kernel panic Message-ID: <200010300600.WAA84682@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/22224; it has been noted by GNATS.
From: "Lachlan O'Dea" <lodea@vet.com.au>
To: freebsd-gnats-submit@FreeBSD.org
Cc: jeff+freebsd@spotlife.com
Subject: Re: kern/22224: ipfw pipe command causes kernel panic
Date: Mon, 30 Oct 2000 16:53:13 +1100
I've got exactly the same problem. The troublesome dummynet code is only
included when using bridging. I have one_pass set to 1.
morannon /sys/netinet % uname -a
FreeBSD morannon.mel.vet.com.au 4.1-STABLE FreeBSD 4.1-STABLE #0: Thu Sep 21 13:19:08 EST 2000 lodea@morannon.mel.vet.com.au:/usr/site/freebsdsrc/src/sys/compile/MORANNON i386
Script started on Mon Oct 30 16:22:43 2000
GNU gdb 4.18
Copyright 1998 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 "i386-unknown-freebsd"...
IdlePTD 3059712
initial pcb at 26c340
panicstr: page fault
panic messages:
---
Fatal trap 12: page fault while in kernel mode
fault virtual address = 0xc055064a
fault code = supervisor write, page not present
instruction pointer = 0x8:0xc01545af
stack pointer = 0x10:0xc024cdfc
frame pointer = 0x10:0xc024ce08
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 = Idle
interrupt mask = net
trap number = 12
panic: page fault
syncing disks... 2 1
done
Uptime: 37d14h24m2s
dumping to dev #ad/0x20001, offset 76272
dump ata0: resetting devices .. done
32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
---
#0 boot (howto=256) at ../../kern/kern_shutdown.c:302
302 dumppcb.pcb_cr3 = rcr3();
(kgdb) where
#0 boot (howto=256) at ../../kern/kern_shutdown.c:302
#1 0xc013ae0c in poweroff_wait (junk=0xc02441cf, howto=0)
at ../../kern/kern_shutdown.c:552
#2 0xc020ec61 in trap_fatal (frame=0xc024cdbc, eva=3226797642)
at ../../i386/i386/trap.c:951
#3 0xc020e939 in trap_pfault (frame=0xc024cdbc, usermode=0, eva=3226797642)
at ../../i386/i386/trap.c:844
#4 0xc020e4f3 in trap (frame={tf_fs = 16, tf_es = 16, tf_ds = 16,
tf_edi = 6422528, tf_esi = 0, tf_ebp = -1071329784,
tf_isp = -1071329816, tf_ebx = -1063740608, tf_edx = 521802, tf_ecx = 0,
tf_eax = -1068691456, tf_trapno = 12, tf_err = 2, tf_eip = -1072347729,
tf_cs = 8, tf_eflags = 66066, tf_esp = -1063740608, tf_ss = 0})
at ../../i386/i386/trap.c:443
#5 0xc01545af in m_free (m=0xc0989b40) at ../../kern/uipc_mbuf.c:515
#6 0xc015537e in m_pullup (n=0xc0989b40, len=14) at ../../kern/uipc_mbuf.c:981
#7 0xc018588d in transmit_event (pipe=0xc0aad800)
at ../../netinet/ip_dummynet.c:407
#8 0xc0185ac7 in ready_event (q=0xc0a03580) at ../../netinet/ip_dummynet.c:525
#9 0xc0185eff in dummynet (unused=0x0) at ../../netinet/ip_dummynet.c:660
#10 0xc01401f1 in softclock () at ../../kern/kern_timeout.c:131
(kgdb) up 7
#7 0xc018588d in transmit_event (pipe=0xc0aad800)
at ../../netinet/ip_dummynet.c:407
407 if (m->m_len < ETHER_HDR_LEN
(kgdb) print *m
$1 = {m_hdr = {mh_next = 0xc04e2700, mh_nextpkt = 0x0,
mh_data = 0xc0842cc0 "ðtMÀ", mh_len = 0, mh_type = 14, mh_flags = 1},
M_dat = {MH = {MH_pkthdr = {rcvif = 0x135d1406, len = 0,
header = 0xc07db800 "", csum_flags = 0, csum_data = 0, aux = 0x0},
MH_dat = {MH_ext = {ext_buf = 0x0, ext_free = 0, ext_size = 0,
ext_ref = 0},
MH_databuf = '\000' <repeats 20 times>, "@O\212À\000ù À\200É\237ÀÈã\224À\000\000\000\000À$ûÃ@\031éÃ@$ûÃ\000\021es_ES.DIS_8859-15ep.co.gz\000\000\000\000\000\000Ò\235ÀP\232~À\000.\225ÀH\022¢À\000\000\000\000@ÔêÃ\200|ûÃÀÓêÃ\000\typ_main.ccay.tzanywhere.al\000\000\000\000\000¾\234À\000Ó\226À\200Ô¢À\210¿\227À\200Ô¢À\200µìÃ\000qõÃ\000µìÃ\000\tlog2.3.gz.gz\000\000\\ã}Àgz\000\000.3.gz\000"...}}, M_databuf = "\006\024]\023\000\000\000\000\000¸}À", '\000' <repeats 32 times>, "@O\212À\000ù À\200É\237ÀÈã\224À \000\000\000\000À$ûÃ@\031éÃ@$ûÃ\000\021es_ES.DIS_8859-15ep.co.gz\000\000\000\000\000\000Ò\235ÀP\232~À\000.\225ÀH\022¢À\000\000\000\000@ÔêÃ\200|ûÃÀÓêÃ\000\typ_main.ccay.tzanywhere.al\000\000\000\000\000¾\234À\000Ó\226À\200Ô¢À\210¿\227À\200Ô¢À\200µìÃ\000qõÃ\000µìÃ\000\tlog2.3.gz.gz\000\000\\ã"...}}
(kgdb)
Script done on Mon Oct 30 16:23:03 2000
In transmit_event, the bridging code passes pkt to m_pullup as if it was
an mbuf. I think pkt is not a valid mbuf, so m_pullup is panicing. The
only thing I could see that looked odd is that the M_EXT flag is set,
but m_ext.ext_buf is NULL.
I'm going to continue to investigate, but I don't know enough about the
kernel's networking code to make much sense of this. Hopefully Luigi can
find time to have a look at this and save us.
--
Lachlan O'Dea <mailto:lodea@vet.com.au> Computer Associates Pty Ltd
Webmaster Vet - Anti-Virus Software
http://www.vet.com.au/
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200010300600.WAA84682>
