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>