Skip site navigation (1)Skip section navigation (2)
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>