From owner-freebsd-arch Wed Dec 13 14:19:24 2000 From owner-freebsd-arch@FreeBSD.ORG Wed Dec 13 14:19:19 2000 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from fw.wintelcom.net (ns1.wintelcom.net [209.1.153.20]) by hub.freebsd.org (Postfix) with ESMTP id 9234437B698; Wed, 13 Dec 2000 14:19:19 -0800 (PST) Received: (from bright@localhost) by fw.wintelcom.net (8.10.0/8.10.0) id eBDMJIx04918; Wed, 13 Dec 2000 14:19:18 -0800 (PST) Date: Wed, 13 Dec 2000 14:19:18 -0800 From: Alfred Perlstein To: Matt Dillon Cc: Kirk McKusick , arch@FreeBSD.ORG, net@FreeBSD.ORG Subject: Re: patch to cleanup inflight desciptor handling. Message-ID: <20001213141917.Q16205@fw.wintelcom.net> References: <200012131852.KAA17423@beastie.mckusick.com> <200012132106.eBDL6Sg86570@earth.backplane.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <200012132106.eBDL6Sg86570@earth.backplane.com>; from dillon@earth.backplane.com on Wed, Dec 13, 2000 at 01:06:28PM -0800 Sender: bright@fw.wintelcom.net Sender: owner-freebsd-arch@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG * Matt Dillon [001213 13:07] wrote: > :I believe that your changes have been sorely needed for many > :years. While I would like to see regular mbufs given a callback > :mechanism, your present approach of using an mbuf cluster > :solves 90% of the problem. > : > : Kirk McKusick > > ... Aflred, be careful that you don't break things we only just fixed > last year. The descriptor passing code has been broken for many years. > > I think the reason we have to scan the descriptor list is related to > locating isolated self-referential 'loops' with descriptor passing and > unix domain sockets and closing them. e.g. when you pass a descriptor > for a unix-domain socket through a unix-domain socket, it is possible > for the socket descriptors to reference each other and thus never have > their ref count drop to 0 even when all associated processes have > close()'d. This happens all the time. Be sure you don't break the > fix that solves that particular problem. Ok, I'll see if that can happen. Basically since the reference never goes to zero on the socket, the buffers are never forced to be flushed/cleared and the mbuf will then never be free'd resulting it it leaking itself. Basically a socket hanging there with an mbuf referencing itself. I wonder if Linux fixed/has this problem. -- -Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org] "I have the heart of a child; I keep it in a jar on my desk." To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message