Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 1 Sep 2005 13:32:21 -0400
From:      John Baldwin <jhb@FreeBSD.org>
To:        freebsd-current@freebsd.org
Cc:        Don Lewis <truckman@freebsd.org>, rwatson@freebsd.org, dandee@volny.cz, bzeeb-lists@lists.zabbadoz.net, fli+freebsd-current@shapeshifter.se, imp@bsdimp.com
Subject:   Re: LOR route vr0
Message-ID:  <200509011332.24342.jhb@FreeBSD.org>
In-Reply-To: <200509011722.j81HMMPp021231@gw.catspoiler.org>
References:  <200509011722.j81HMMPp021231@gw.catspoiler.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 01 September 2005 01:22 pm, Don Lewis wrote:
> On  1 Sep, Fredrik Lindberg wrote:
> > Don Lewis wrote:
> >> On 27 Aug, M. Warner Losh wrote:
> >>>In message: <20050828025721.X43518@fledge.watson.org>
> >>>
> >>>            Robert Watson <rwatson@FreeBSD.org> writes:
> >>>: On Sat, 27 Aug 2005, M. Warner Losh wrote:
> >>>: > : You need to add an entry to subr_witness.c creating a graph edge
> >>>: > : between the softc lock and the routing lock.  An example of an
> >>>: > : entry in subr_witness.c:
> >>>: > :
> >>>: > :          /*
> >>>: > :           * TCP/IP
> >>>: > :           */
> >>>: > :          { "tcp", &lock_class_mtx_sleep },
> >>>: > :          { "tcpinp", &lock_class_mtx_sleep },
> >>>: > :          { "so_snd", &lock_class_mtx_sleep },
> >>>: > :          { NULL, NULL },
> >>>: > :
> >>>: > : Note that sets of ordered entries are terminated with a
> >>>: > : double-null.  This declares that locks of type "tcp" preceed
> >>>: > : "tcpinp" which preceed "so_snd".
> >>>: >
> >>>: > So you have to have locks of type tcp BEFORE you take out tcpinp
> >>>: > type locks?
> >>>:
> >>>: Correct.  'tcp' reflects the global TCP state tables (pcbinfo) locks,
> >>>: and 'tcpinp' is for individual PCBs.  If you acquire first a tcpinp
> >>>: and then tcp, the above settings should cause WITNESS to generate a
> >>>: lock order warning.  Likewise, both tcp and tcpinp preceed so_snd, so
> >>>: if you acquire a protocol lock after a socket lock, it will get
> >>>: unhappy.  WITNESS handles transitive relationships, so it gets
> >>>: connected up to the rest of the lock graph, explicit and implicit, so
> >>>: indirect violations of orders are fully handled.
> >>>
> >>>OK.  I've been seeing similar LORs in ed, sn, iwi (ed is my locked
> >>>version of ed, not in tree GIANT locked ed).
> >>
> >> Just as a datapoint, I've got fxp interfaces on all my machines running
> >> -CURRENT and I'm not seeing the problem here.
> >
> > I'm seeing both the rentry and the tcpinp LORs on my fxp interface
> > on a machine running a few days old -current (Aug 25).
> >
> > lock order reversal
> > 1st 0xc1e30d38 inp (tcpinp) @ /usr/src/sys/netinet/tcp_input.c:742
> > 2nd 0xc1b74018 fxp0 (network driver) @/usr/src/sys/dev/fxp/if_fxp.c:1172
> >
> > lock order reversal
> > 1st 0xc1e06bb8 rtentry (rtentry) @ /usr/src/sys/net/route.c:1269
> > 2nd 0xc1b74018 fxp0 (network driver) @/usr/src/sys/dev/fxp/if_fxp.c:1172
> >
> > As for their backtraces they are almost identical to the
> > once already posted.
>
> Are you using any applications that use multicast?  Can you break into
> DDB and capture the output of "show witness"?

Also, are you using DEVICE_POLLING?

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



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