Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Nov 2011 18:24:14 +0000 (UTC)
From:      "Bjoern A. Zeeb" <bz@FreeBSD.ORG>
To:        Maxim Sobolev <sobomax@FreeBSD.org>
Cc:        freebsd-net@FreeBSD.ORG, Robert Watson <rwatson@FreeBSD.ORG>, "current@freebsd.org" <current@FreeBSD.ORG>
Subject:   Re: Panic in the udp_input() under heavy load
Message-ID:  <alpine.BSF.2.00.1111071818250.4603@ai.fobar.qr>
In-Reply-To: <4EB804D2.2090101@FreeBSD.org>
References:  <4EB804D2.2090101@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 7 Nov 2011, Maxim Sobolev wrote:

> Hi Gang,
>
> We are seeing repeatable panics under high PPS load on our production 
> systems. It happens when the traffic gets into the range or 200MBps and 
> 150-200K PPS. We have been managed to track it down to the following piece of 
> code:
>
> (gdb) l *udp_input+0x5d2
> 0xffffffff806f6202 is in udp_input (/usr/src/sys/netinet/udp_usrreq.c:628).
> 623             if (inp->inp_ip_minttl && inp->inp_ip_minttl > ip->ip_ttl) {
> 624                     INP_RUNLOCK(inp);
> 625                     goto badunlocked;
> 626             }
> 627             up = intoudpcb(inp);
> 628             if (up->u_tun_func == NULL) {
> 629                     udp_append(inp, ip, m, iphlen + sizeof(struct 
> udphdr), &udp_in);
> 630             } else {
> 631                     /*
> 632                      * Engage the tunneling protocol.
>
> The faulty line appears to be 628, with up value is being NULL, attempt to 
> deference it causes NULL pointer exception. I believe this particular piece 
> of code has been introduced here:

Unlikely; the inp is properly locked there and the udp info attach
better still be valid there; your problem is most likely elsewhere;
try to see if you have other threads and see what they do at the same
time, etc.  You would need to race with udp_detach();  you also want
to make sure that the inp still looks sane from either ddb or a dump
and we are not talking about random memory corruption here.

/bz

-- 
Bjoern A. Zeeb                                 You have to have visions!
          Stop bit received. Insert coin for new address family.



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