X-Recipient: archive-cygwin AT delorie DOT com X-Spam-Check-By: sourceware.org Date: Tue, 21 Jul 2009 15:58:48 +0200 From: Corinna Vinschen To: newlib AT sourceware DOT org, cygwin AT cygwin DOT com Subject: Re: close on exec atomics Message-ID: <20090721135848.GA2600@calimero.vinschen.de> Mail-Followup-To: newlib AT sourceware DOT org, cygwin AT cygwin DOT com References: <4A65BCC9 DOT 1020002 AT byu DOT net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A65BCC9.1020002@byu.net> User-Agent: Mutt/1.5.19 (2009-02-20) Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com On Jul 21 07:04, Eric Blake wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > It seems like it would be pretty easy to add several new close-on-exec > features required by POSIX 2008: > > open(name, O_RDONLY | O_CLOEXEC); > // skips the need to use fcntl > > fcntl(fd, F_DUPFD_CLOEXEC); > // like F_DUPFD, but closes window without having to use > // fcntl(fd, F_SETFD, fcntl(fd, F_GETFD)) > > and those provided by glibc as extensions: > > fopen(name, "re"); > // like fopen "r", but with cloexec set > > The argument is that in multi-threaded apps, if one thread opens a file > but has not yet turned on the close-on-exec bit while another thread does > a fork-and-exec, then you leaked the fd into the child; and these new > flags close the window. > > Should I go ahead and prepare a patch for the newlib side? It's not that easy to implement, especially not the fcntl which requires to redefine the dup2 methods throughout to allow atomic operation on the target OS handles. open (O_CLOEXEC) is much easier. Anyway, can we wait until after Cygwin 1.7.1? Corinna -- Corinna Vinschen Cygwin Project Co-Leader Red Hat -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple