From owner-freebsd-current Fri Nov 1 14:47: 5 2002 Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 088B637B401 for ; Fri, 1 Nov 2002 14:47:04 -0800 (PST) Received: from stash.attlabs.att.com (mpfg.attlabs.net [12.106.35.2]) by mx1.FreeBSD.org (Postfix) with ESMTP id 29EF343E77 for ; Fri, 1 Nov 2002 14:47:03 -0800 (PST) (envelope-from fenner@research.att.com) Received: from stash.attlabs.att.com (localhost [IPv6:::1]) by stash.attlabs.att.com (8.12.6/8.12.6) with ESMTP id gA1Mkjh5001479; Fri, 1 Nov 2002 14:46:45 -0800 (PST) (envelope-from fenner@stash.attlabs.att.com) Received: (from fenner@localhost) by stash.attlabs.att.com (8.12.6/8.12.6/Submit) id gA1Mki5n001478; Fri, 1 Nov 2002 14:46:44 -0800 (PST) (envelope-from fenner) Date: Fri, 1 Nov 2002 14:46:44 -0800 (PST) From: Bill Fenner Message-Id: <200211012246.gA1Mki5n001478@stash.attlabs.att.com> To: mime@traveller.cz Subject: Re: crash with network load (in tcp syncache ?) Cc: current@FreeBSD.ORG Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG sonewconn() hands sofree() a self-inconsistent socket -- so->so_head is set, so so must be on a queue, but sonewconn() hasn't put it on a queue yet. Please try this patch. Bill Index: uipc_socket2.c =================================================================== RCS file: /home/ncvs/src/sys/kern/uipc_socket2.c,v retrieving revision 1.104 diff -u -r1.104 uipc_socket2.c --- uipc_socket2.c 18 Sep 2002 19:44:11 -0000 1.104 +++ uipc_socket2.c 1 Nov 2002 22:40:52 -0000 @@ -192,7 +192,7 @@ return ((struct socket *)0); if ((head->so_options & SO_ACCEPTFILTER) != 0) connstatus = 0; - so->so_head = head; + so->so_head = NULL; so->so_type = head->so_type; so->so_options = head->so_options &~ SO_ACCEPTCONN; so->so_linger = head->so_linger; @@ -209,6 +209,7 @@ return ((struct socket *)0); } + so->so_head = head; if (connstatus) { TAILQ_INSERT_TAIL(&head->so_comp, so, so_list); so->so_state |= SS_COMP; To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message