Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 23 Jul 2005 09:53:21 -0400
From:      Edwin <edwin@verolan.com>
To:        Giorgos Keramidas <keramida@freebsd.org>
Cc:        Edwin <edwin@verolan.com>, freebsd-hackers@freebsd.org
Subject:   Re: help w/panic under heavy load - 5.4
Message-ID:  <20050723135321.GA13607@asx01.verolan.com>
In-Reply-To: <20050723011348.GA973@gothmog.gr>
References:  <20050719034215.GB20752@asx01.verolan.com> <200507191120.37526.jhb@FreeBSD.org> <20050720020302.GA24474@asx01.verolan.com> <20050720100623.GA1470@beatrix.daedalusnetworks.priv> <20050720154156.GA26755@asx01.verolan.com> <20050721115719.GK16179@beatrix.daedalusnetworks.priv> <20050722215303.GA11141@asx01.verolan.com> <20050723011348.GA973@gothmog.gr>

next in thread | previous in thread | raw e-mail | index | archive | help
comments in-line.

Giorgos Keramidas (keramida@freebsd.org) wrote:
> 
> This looks rather strange.  ip_fastforward() should pass an mtu of 1500
> but somehow the negative strange value gets passed.  It would be
> interesting to see the value of ``mtu'' in frame 13 too, if you still
> have this crash dump stored somewhere.

included right below - i have a few other questions while i'm looking @ these

 - the value of hlen (looks from the code that it should be ip->ip_hl << 2 (5*4=20 right?)
	not some large -value - plus the value of hlen is sortof close to crazy mtu value
 - ip->ip_len = 10240 ??? not sure why this would be either
 - i think mtu should have a value of 1500 here - both the ifp struct and ro struct
	have values of 1500, but even if it did have a value of 1500 - since
	ip->ip_len = 10240 - it's still going to drop through to else of line 542
	(ie. ip->ip_len <= mtu) which leaves either can't frag/drop or frag (where
	we are i think) - unless I'm missing something


(kgdb) f 13
#13 0xc06933c1 in ip_fastforward (m=0xc12e6c00) at /usr/src/sys/netinet/ip_fastfwd.c:572
warning: Source file is more recent than executable.

572                             if (ip_fragment(ip, &m, mtu, ifp->if_hwassist,
(kgdb) i loc
ip = (struct ip *) 0xc12f700e
m0 = (struct mbuf *) 0xc12f700e
ro = {ro_rt = 0xc11f8420, ro_dst = {sa_len = 16 '\020', sa_family = 2 '\002',
    sa_data = "\000\000�\002\005\000\000\000\000\000\000\000"}}
dst = (struct sockaddr_in *) 0xc76bfc3c
ia = (struct in_ifaddr *) 0x0
ifa = (struct ifaddr *) 0x0
ifp = (struct ifnet *) 0xc0f91800
odest = {s_addr = 84060352}
dest = {s_addr = 84060352}
sum = 0
ip_len = 0
error = 84060352
hlen = -1057417216
mtu = 0
__func__ = "ip_fastforward"
(kgdb) p *ip
$1 = {ip_hl = 5, ip_v = 4, ip_tos = 0 '\0', ip_len = 10240, ip_id = 61249, ip_off = 0, ip_ttl = 63 '?',  ip_p = 17 '\021', ip_sum = 31921, ip_src = {s_addr = 67479744}, ip_dst = {s_addr = 84060352}}
(kgdb)


> 
> You are not running a kernel with optimization and/or architecture-
> dependent optimization flags, right?
> 

ntiko - i have added CPU_GEODE/CPU_SOEKRIS to my config - but same crash on the generic
config as well..this is a soekris net4801 box (w/ geode proc - i586). generic
'make buildkernel KERNCONF=D1-0722' command line (ie no other make/compiler options).


mbsd05# diff /root/kernels/D1-0722 /root/kernels/GENERIC 
21,22d20
< makeoptions   DEBUG=-g
< 
24c22
< #cpu          I486_CPU
---
> cpu           I486_CPU
26,27c24,25
< #cpu          I686_CPU
< ident         D1-0722
---
> cpu           I686_CPU
> ident         GENERIC
31,48d28
< 
< options               KDB
< options               DDB
< options               INVARIANTS
< options               INVARIANT_SUPPORT
< 
< options               CPU_SOEKRIS
< options               CPU_GEODE
< 
< options               HZ=1000
< options               DEVICE_POLLING
< 
< options               IPFIREWALL
< options               IPFIREWALL_VERBOSE
< options               IPFIREWALL_VERBOSE_LIMIT
< options               IPFIREWALL_DEFAULT_TO_ACCEPT
< options               DUMMYNET
< options               IPDIVERT
mbsd05# 




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050723135321.GA13607>