From owner-freebsd-bugs@FreeBSD.ORG Sat Feb 11 07:30:14 2012 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3FA72106564A for ; Sat, 11 Feb 2012 07:30:14 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 2DE7D8FC0A for ; Sat, 11 Feb 2012 07:30:14 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q1B7UD7Z074056 for ; Sat, 11 Feb 2012 07:30:13 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q1B7UDp2074053; Sat, 11 Feb 2012 07:30:13 GMT (envelope-from gnats) Date: Sat, 11 Feb 2012 07:30:13 GMT Message-Id: <201202110730.q1B7UDp2074053@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: Diomidis Spinellis Cc: Subject: Re: bin/164947: tee looses data when writing to non-blocking file descriptors X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Diomidis Spinellis List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Feb 2012 07:30:14 -0000 The following reply was made to PR bin/164947; it has been noted by GNATS. From: Diomidis Spinellis To: davidxu@FreeBSD.org Cc: David Xu , freebsd-gnats-submit@FreeBSD.org Subject: Re: bin/164947: tee looses data when writing to non-blocking file descriptors Date: Sat, 11 Feb 2012 09:25:34 +0200 On 11/02/2012 05:21, David Xu wrote: > On 2012/2/10 15:04, Diomidis Spinellis wrote: >>> Number: 164947 >>> Category: bin >>> Synopsis: tee looses data when writing to non-blocking file descriptors >>> Confidential: no >>> Severity: serious >>> Priority: medium >>> Responsible: freebsd-bugs >>> State: open >>> Quarter: >>> Keywords: >>> Date-Required: >>> Class: sw-bug >>> Submitter-Id: current-users >>> Arrival-Date: Fri Feb 10 07:10:09 UTC 2012 >>> Closed-Date: >>> Last-Modified: >>> Originator: Diomidis Spinellis >>> Release: 8.1 >>> Organization: >> AUEB >>> Environment: >> FreeBSD istlab.dmst.aueb.gr 8.1-RELEASE-p6 FreeBSD 8.1-RELEASE-p6 #0: >> Tue Nov 1 15:16:34 EET 2011 >> dds@istlab.dmst.aueb.gr:/usr/obj/usr/src/sys/ISTLAB i386 >> You have new mail in /var/mail/dds >> >>> Description: >> When tee(1) tries to write to a file descriptor that has been set to >> non-blocking mode the write(2) call may fail with EAGAIN. Instead of >> retrying the operation, tee will throw that chunk of data away. > so tee should also work with non-blocking read, your patch is incomplete. You're right. By the same argument all other utilities should also be fixed. However, this may create new bugs and instability. For the specific case of tee writing I offered a test case, demonstrating the problem. This was distilled from an actual production use (scattering a dump to tape and disk). I think it's best to fix each utility as the need arises.