Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin AT sources DOT redhat DOT com Message-ID: <077d01c1400e$2d92cdc0$d2823bd5@dmitry> From: "Dmitry Timoshkov" To: Subject: fcntl(F_SETFD) on a file or socket handle Date: Tue, 18 Sep 2001 15:48:22 +0900 MIME-Version: 1.0 Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.50.4522.1200 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200 Hello. Just want report a serious bug in Cygwin. Many applications use this construct in their code: fcntl(fd, F_SETFD, 1); /* set close on exec flag */ fcntl(fd) below is a replacement for the above construct, fd - file/socket descriptor, resulted from an open() or a socket() call. Some symptoms: 1. If an fd is a socket and fcntl(fd) is called right after the connect(fd) call, connection will get broken. 2. If an fd is transferred via a pipe end and fcntl(fd) is called right after write(pipe, &fd, sizeof(fd)) call, the another pipe end will receive an invalid fd handle. If in the both cases above add sleep(1) before fcntl(fd), then all works without a failure. I didn't investigate it further, and probably will not have time in the near future to do so. Sorry. -- Dmitry. -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/