From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29562 invoked by alias); 23 Jul 2013 17:52:12 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 29551 invoked by uid 89); 23 Jul 2013 17:52:11 -0000 X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_50,KHOP_THREADED,RCVD_IN_DNSWL_NONE,RCVD_IN_HOSTKARMA_YE,RDNS_NONE,SPF_SOFTFAIL autolearn=no version=3.3.1 Received: from Unknown (HELO mtaout20.012.net.il) (80.179.55.166) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Tue, 23 Jul 2013 17:52:09 +0000 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0MQE00F00HGKT600@a-mtaout20.012.net.il> for gdb-patches@sourceware.org; Tue, 23 Jul 2013 20:52:01 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MQE00FVZHMOGH80@a-mtaout20.012.net.il>; Tue, 23 Jul 2013 20:52:01 +0300 (IDT) Date: Tue, 23 Jul 2013 17:52:00 -0000 From: Eli Zaretskii Subject: Re: [PATCH] Unbuffer stdout and stderr on windows In-reply-to: <51EE23F8.1070905@codesourcery.com> To: Yao Qi Cc: gdb-patches@sourceware.org Reply-to: Eli Zaretskii Message-id: <83wqohw4ee.fsf@gnu.org> References: <1374462417-7961-1-git-send-email-yao@codesourcery.com> <838v0yy556.fsf@gnu.org> <51EE23F8.1070905@codesourcery.com> X-SW-Source: 2013-07/txt/msg00538.txt.bz2 > Date: Tue, 23 Jul 2013 14:34:32 +0800 > From: Yao Qi > CC: > > On 07/22/2013 11:40 PM, Eli Zaretskii wrote: > > This is wrong, stdout should be line-buffered by default. > > > > stdout is line-buffered if it can be detected to connect to an > interactive device, otherwise it is fully buffered. Cygwin emulates pty > with pipes, and native win32 apps blindly assume all pipes are > non-interactive. Sorry, I was unclear: I meant that stdout should be line-buffered, not unbuffered, when it is connected to a console (which is the default). I was under the impression that you were changing stdout to be unbuffered even in that default case, i.e. even when stdout is connected to a console. If that's not so, i.e. if you were changing the buffering only when stdout is not connected to a console, I apologize for my misunderstanding. > > Also, this punishes batch mode with stdout redirected to a file: its > > stdout buffering (and perhaps also that of stderr, although that's > > less important) will now always be line-buffered, i.e. less efficient. > > Yeah, this patch hurts the performance, but gets the outputs in the > correct order, so that testsuite can be run to get a reasonable test result. I don't think it's right to penalize users for the benefit of the test suite. > > Is it possible to detect the "Cygwin ssh session", whatever that > > means, and only do this then? I don't think it's right to change > > Unfortunately, I am unable to find a heuristics to tell "GDB is in > cygwin session". There are some differences on env variables between > cygwin and Windows cmd.exe console, but I am afraid that they are not > reliable. Then how about introducing a special option which will cause the buffering to be what you want? The test suite could use that option, and the other users will not suffer any penalty. > > behavior of a native w32 GDB just because it misbehaves when mixed > > This patch is to change the buffered output to unbuffered, so the > behaviour of GDB is not changed, IMO. Of course it's changed: buffering is user-visible behavior. > In the last resort, we may add an option "--cygwin-tty" I think this is the best alternative. > which I don't really like. Why not?