Re: panic: sbflush_locked
From: Robert Watson (rwatson_at_freebsd.org)
Date: 12/22/04
- Previous message: B: "Re: BIND9 performance issues with SMP"
- In reply to: Alan Cox: "Re: panic: sbflush_locked"
- Next in thread: Alan Cox: "Re: panic: sbflush_locked"
- Reply: Alan Cox: "Re: panic: sbflush_locked"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Wed, 22 Dec 2004 08:55:31 +0000 (GMT) To: Alan Cox <alc@cs.rice.edu>
On Mon, 20 Dec 2004, Alan Cox wrote:
> > I haven't seen this in a very long time, but I've definitely tried to
> > track it down before with zero luck.
>
> With the attached change, I've had no more crashes.
>
> I speculate uipc_send() is missing needed synchronization on so_snd.
> Robert, can you verify the patch?
Sorry for the delay in responding to your original post; I'm still
catching up with e-mail from my trip to Bangladesh. I actually had
similar changes to this in the netperf branch at one point, but think I
removed them due to concerns about lock order. However, this change is
careful to acquire the send lock before the receive lock, so I think
shouldn't present a problem from that perspective. Please go ahead and
commit, perhaps with a 2 week MFC time?
Thanks!
Robert N M Watson FreeBSD Core Team, TrustedBSD Projects
robert@fledge.watson.org Principal Research Scientist, McAfee Research
> Index: kern/uipc_usrreq.c
> ===================================================================
> RCS file: /home/ncvs/src/sys/kern/uipc_usrreq.c,v
> retrieving revision 1.143
> diff -u -r1.143 uipc_usrreq.c
> --- kern/uipc_usrreq.c 1 Dec 2004 09:22:26 -0000 1.143
> +++ kern/uipc_usrreq.c 19 Dec 2004 03:22:50 -0000
> @@ -452,7 +452,9 @@
> }
> }
>
> + SOCKBUF_LOCK(&so->so_snd);
> if (so->so_snd.sb_state & SBS_CANTSENDMORE) {
> + SOCKBUF_UNLOCK(&so->so_snd);
> error = EPIPE;
> break;
> }
> @@ -478,6 +480,7 @@
> (so2->so_rcv.sb_cc - unp->unp_conn->unp_cc);
> (void)chgsbsize(so->so_cred->cr_uidinfo, &so->so_snd.sb_hiwat,
> newhiwat, RLIM_INFINITY);
> + SOCKBUF_UNLOCK(&so->so_snd);
> unp->unp_conn->unp_cc = so2->so_rcv.sb_cc;
> sorwakeup_locked(so2);
> m = NULL;
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
- Previous message: B: "Re: BIND9 performance issues with SMP"
- In reply to: Alan Cox: "Re: panic: sbflush_locked"
- Next in thread: Alan Cox: "Re: panic: sbflush_locked"
- Reply: Alan Cox: "Re: panic: sbflush_locked"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|