X-Recipient: archive-cygwin AT delorie DOT com X-Spam-Check-By: sourceware.org MIME-Version: 1.0 Date: Mon, 18 Aug 2008 13:55:20 +0200 Reply-To: "Christian Franke" To: cygwin AT cygwin DOT com X-UMS: email X-Mailer: TOI Kommunikationscenter V9-2-9 Subject: cygwin 1.7.0-28: Broken pipe signal broken? From: "Christian Franke" Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit Message-ID: <1KV3KS-06K7k00@fwd26.aul.t-online.de> X-ID: rw8CzBZVohjzIL8cLd5dDh4iwdYmB2+YkfJHk-deOLs+ekJPIuHjwmO2XsrPDqTQj- AT t-dialin DOT net X-TOI-MSGID: d0b19b89-8c27-466d-b5e6-b2c22d10dbb8 X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: 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 During testing of my packages on 1.7, I got the following error message from the grub-mkrescue script from package grub: $ cat boot.img /dev/zero | dd bs=1024 count=1440 > floppy.img cat: write error: No space left on device But due to a hack in coreutils*/lib/full_write.c, the error message is misleading. The following test program demonstrates the root of the problem: ===== testpipe.c ===== #include #include #include #include void sigpipe_handler() { write(2, "[SIGPIPE!]", 10); } int main() { static char buf[1024*1024]; signal(SIGPIPE, sigpipe_handler); errno = 0; int n = write(1, buf, sizeof(buf)); fprintf(stderr, "write = %d, errno = %d\n", n, errno); return 0; } ====================== Result on 1.5.25-15: $ ./testpipe | dd bs=1 count=1 >/dev/null 2>/dev/null [SIGPIPE!]write = -1, errno = 32 Result on 1.7.0-28: $ ./testpipe | dd bs=1 count=1 >/dev/null 2>/dev/null write = 0, errno = 32 According to strace, errno=EPIPE is set in fhandler_base::wait_overlapped() due to a failing GetOverlappedResult(). Missing raise(SIGPIPE) call in fhandler_base::write_overlapped() ? Hope this helps, Christian PS: No other issues found so far - nice work! -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/