Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Dec 1998 17:58:42 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Don Lewis <Don.Lewis@tsc.tdk.com>
Cc:        Peter Edwards <peter.edwards@isocor.ie>, Archie Cobbs <archie@whistle.com>, freebsd-current@FreeBSD.ORG
Subject:   Re: inetd: realloc/free bug
Message-ID:  <199812130158.RAA14315@apollo.backplane.com>
References:   <199812130138.RAA22963@salsa.gv.tsc.tdk.com>

next in thread | previous in thread | raw e-mail | index | archive | help
:It also has the downside of keeping inetd "active", so it can't
:be totally swapped out if it's not in use.  This might be a bit
:of a concern to some folks, like those who run FreeBSD on their
:laptops.  Your implementation is also more syscall intensive than
:some of the alternatives.

    We may be able to remove the timeout from the select(), but someone
    else is going to have to go through the code (as I indicated earlier)
    to determine that this is the case before removing the timeout.

:Your patch also doesn't eliminate all the race conditions.  When
:a signal handler is invoked, it blocks reception of the signal that
:triggered it, but not the reception of other signals, so it is possible

    Sure it does.  Look at the code.  Line 410 or so of inetd.c

:Oh yeah, there is another race condition that I've never seen mentioned.
:In the case of TCP services where we do something like
:	ctrl = accept(...);
:	pid = fork();
:	if (pid == 0) {
:		fiddle with fds
:		exec(...);
:	}
:	close(ctrl);
:there is a problem if the child process runs, writes a bunch of data
:to the socket and exits before the parent process executes the close().
:If this happens, the close() in the parent can hang for an indefinite
:period of time, until the client consumes the buffered data on the socket.
:I fixed this in BIND 4.x a few years ago using a pipe to synchronize

    I'm not sure I follow.  close() on a socket descriptor does not block.

						-Matt

    Matthew Dillon  Engineering, HiWay Technologies, Inc. & BEST Internet 
                    Communications & God knows what else.
    <dillon@backplane.com> (Please include original email in any response)    

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



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