Re: [PATCH] Properly handle short writes in sigint handlers
authorTomi Ollila <tomi.ollila@iki.fi>
Fri, 23 Dec 2011 12:30:50 +0000 (14:30 +0200)
committerW. Trevor King <wking@tremily.us>
Fri, 7 Nov 2014 17:41:13 +0000 (09:41 -0800)
ea/04c7df7027a81c4b051592f7ebd16f4befc0e0 [new file with mode: 0644]

diff --git a/ea/04c7df7027a81c4b051592f7ebd16f4befc0e0 b/ea/04c7df7027a81c4b051592f7ebd16f4befc0e0
new file mode 100644 (file)
index 0000000..a861147
--- /dev/null
@@ -0,0 +1,109 @@
+Return-Path: <tomi.ollila@nixu.com>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+       by olra.theworths.org (Postfix) with ESMTP id 6AABE431FD0\r
+       for <notmuch@notmuchmail.org>; Fri, 23 Dec 2011 04:31:03 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: 0\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none]\r
+       autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+       with ESMTP id 9lhO1VQ57QtB for <notmuch@notmuchmail.org>;\r
+       Fri, 23 Dec 2011 04:31:01 -0800 (PST)\r
+Received: from mail-gw3.nixu.fi (mail-gw3.nixu.fi [193.209.237.7])\r
+       (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))\r
+       (No client certificate requested)\r
+       by olra.theworths.org (Postfix) with ESMTPS id 050EB431FB6\r
+       for <notmuch@notmuchmail.org>; Fri, 23 Dec 2011 04:31:00 -0800 (PST)\r
+Received: from pps.filterd (mail-gw3 [127.0.0.1])\r
+       by mail-gw3.nixu.fi (8.14.4/8.14.4) with SMTP id pBNCUKhf017815;\r
+       Fri, 23 Dec 2011 14:30:52 +0200\r
+Received: from taco2.nixu.fi (taco2.nixu.fi [194.197.118.31])\r
+       by mail-gw3.nixu.fi with ESMTP id 114cs0v5nn-1\r
+       (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NOT);\r
+       Fri, 23 Dec 2011 14:30:52 +0200\r
+Received: from taco2.nixu.fi (taco2.nixu.fi [194.197.118.31])\r
+       by taco2.nixu.fi (8.14.3/8.14.3/Debian-5+lenny1) with ESMTP id\r
+       pBNCUoUY026817; Fri, 23 Dec 2011 14:30:51 +0200\r
+From: Tomi Ollila <tomi.ollila@iki.fi>\r
+To: David Edmondson <dme@dme.org>, Austin Clements <amdragon@MIT.EDU>,\r
+       notmuch@notmuchmail.org\r
+Subject: Re: [PATCH] Properly handle short writes in sigint handlers\r
+In-Reply-To: <cunhb0rvhc6.fsf@hotblack-desiato.hh.sledj.net>\r
+References: <20111222201553.GK10376@mit.edu>\r
+       <1324584948-8009-1-git-send-email-amdragon@mit.edu>\r
+       <cunhb0rvhc6.fsf@hotblack-desiato.hh.sledj.net>\r
+User-Agent: Notmuch/0.10.2+123~g49af79c (http://notmuchmail.org) Emacs/23.3.1\r
+       (i686-pc-linux-gnu)\r
+X-Face: HhBM'cA~<r"^Xv\KRN0P{vn'Y"Kd;zg_y3S[4)KSN~s?O\"QPoL\r
+       $[Xv_BD:i/F$WiEWax}R(MPS`^UaptOGD`*/=@\1lKoVa9tnrg0TW?"r7aRtgk[F\r
+       !)g;OY^,BjTbr)Np:%c_o'jj,Z\r
+Date: Fri, 23 Dec 2011 14:30:50 +0200\r
+Message-ID: <yf6fwgba2rp.fsf@taco2.nixu.fi>\r
+MIME-Version: 1.0\r
+Content-Type: text/plain; charset=us-ascii\r
+X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.5.7110,\r
+ 1.0.211,      0.0.0000        definitions=2011-12-23_03:2011-12-23, 2011-12-23,\r
+       1970-01-01 signatures=0\r
+X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0\r
+       ipscore=0 suspectscore=0\r
+       phishscore=0 bulkscore=0 adultscore=0 classifier=spam adjust=0\r
+       reason=mlx\r
+       scancount=1 engine=6.0.2-1012030000 definitions=main-1112230066\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+       <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Fri, 23 Dec 2011 12:31:03 -0000\r
+\r
+On Fri, 23 Dec 2011 08:10:33 +0000, David Edmondson <dme@dme.org> wrote:\r
+> Sorry for being slow.\r
+> \r
+> Can you describe the situation in which you expect a write to stderr to\r
+> be a short write? (Without error.)\r
+\r
+In the following hypothetical case (correct me if I'm wrong :):\r
+\r
+* There is 4096 byte buffer in tty driver.\r
+* Stderr is in blocking-mode (the usual case).\r
+* There is already 4090 bytes in that buffer that has not been read.\r
+* One attemtps to write "Stopping...         \n" there (blocks).\r
+* Somehow the system call is interrupted (and SA_RESTART not set)\r
+  -- write() should return 6 bytes written.\r
+\r
+But, if the buffer is full already, does the write() system call return\r
+with -1 and EINTR set ?\r
+\r
+If there is enough space for all data in that buffer to begin with, \r
+write() should be atomic.\r
+\r
+> In that situation, what guarantee is there that the loop you've written\r
+> will terminate?\r
+\r
+If write() keeps returning 0 then it will not terminate (I guess this never\r
+happens). Also, it never terminates if write blocks indefinitely \r
+(with or without that loop).\r
+\r
+> We're not talking about safeguarding a users' data here - this is a\r
+> short message to indicate that a tool is terminating due to a signal.\r
+> I'm concerned that the solution is worse than the problem.\r
+\r
+I'm also in favor of "opportunistic" write *in this particular case*\r
+\r
+In case that write fails there is most probably more serious things going\r
+on (all resources eaten, hardware problem, etc) and trying to push these\r
+writes forward doesn't help.\r
+\r
+Tomi\r