panic: witness_warn head/amd64 @r285741 on 1 of 2 machines

Randall Stewart rrs at netflix.com
Wed Jul 22 09:28:43 UTC 2015


David

Yep.. we got that wrong.

If 1 is returned by the submit it means the PCB was lost. If 0 is
returned you unlock as usual.

R
On Jul 21, 2015, at 5:59 PM, David Wolfskill <david at catwhisker.org> wrote:

> On Tue, Jul 21, 2015 at 03:21:16PM -0500, Eric van Gyzen wrote:
>> ...
>>>> So it looks like net swi, leaking some udp6 lock.
>>> Curiouser and curiouser...  While I'm not taking any special pains to
>>> avoid building IPv6, I'm not actively actually doing anything with it
>>> (IPv6), either (for both the failing machine and my laptop).
>>> 
>>> Once I'm back home, I should be able to poke around in ddb after
>>> re-creating the panic, if that would be a useful thing for me to do (and
>>> given some hints as to what to poke).
>>> 
>>> Naturally, I'm also happy to change bits of sources, rebuild, and
>>> smoke-test.
>>> 
>>> A quick check from the SVN update output only shows r285710, r285711, and
>>> r285740 in the range from (r285685,r285741] -- as the kernel running
>>> r285685 had no known issues -- that touched sys/netinet6/*.
>> 
>> It's a multicast destination.  Maybe something is using mDNS?
>> 
>> Randall, does the test on line 406 of udp6_usrreq.c need to be inverted?
>> 
>> Eric
>> 
> 
> <DING!>  We have a winner!
> 
> FreeBSD freebeast.catwhisker.org 11.0-CURRENT FreeBSD 11.0-CURRENT #1789  r285741M/285741:1100077: Tue Jul 21 14:50:59 PDT 2015     root at freebeast.catwhisker.org:/common/S3/obj/usr/src/sys/GENERIC  amd64
> 
> freebeast(11.0-C)[3] cd /usr/src
> freebeast(11.0-C)[4] svn diff sys/netinet
> netinet/  netinet6/ 
> freebeast(11.0-C)[4] svn diff sys/netinet*
> Index: sys/netinet6/udp6_usrreq.c
> ===================================================================
> --- sys/netinet6/udp6_usrreq.c  (revision 285741)
> +++ sys/netinet6/udp6_usrreq.c  (working copy)
> @@ -403,7 +403,7 @@
>                INP_RLOCK(last);
>                INP_INFO_RUNLOCK(pcbinfo);
>                UDP_PROBE(receive, NULL, last, ip6, last, uh);
> -               if (udp6_append(last, m, off, &fromsa)) 
> +               if (! udp6_append(last, m, off, &fromsa)) 
>                        INP_RUNLOCK(last);
>        inp_lost:
>                return (IPPROTO_DONE);
> freebeast(11.0-C)[5] 
> 
> Thanks! :-)
> 
> Peace,
> david
> -- 
> David H. Wolfskill				david at catwhisker.org
> Those who murder in the name of God or prophet are blasphemous cowards.
> 
> See http://www.catwhisker.org/~david/publickey.gpg for my public key.

--------
Randall Stewart
rrs at netflix.com
803-317-4952







More information about the freebsd-net mailing list