Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965040AbbLRRYM (ORCPT ); Fri, 18 Dec 2015 12:24:12 -0500 Received: from smtp-out-so.shaw.ca ([64.59.136.138]:49219 "EHLO smtp-out-so.shaw.ca" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933050AbbLRRXy (ORCPT ); Fri, 18 Dec 2015 12:23:54 -0500 X-Authority-Analysis: v=2.1 cv=IaYnITea c=1 sm=1 tr=0 a=qZxK3cM5tHtOUZVZkOzy1Q==:117 a=qZxK3cM5tHtOUZVZkOzy1Q==:17 a=3I1X_3ewAAAA:8 a=kj9zAlcOel0A:10 a=x1GGP5G-xCwoeII2-3oA:9 a=CjuIK1q_8ugA:10 Date: Fri, 18 Dec 2015 10:23:41 -0700 (Mountain Standard Time) From: Marc Aurele La France To: Peter Hurley cc: Greg Kroah-Hartman , Jiri Slaby , linux-kernel@vger.kernel.org, Volth , Damien Miller Subject: Re: n_tty: Check the other end of pty pair before returning EAGAIN on a read() In-Reply-To: <567436DE.2020101@hurleysoftware.com> Message-ID: References: <56699356.8040802@hurleysoftware.com> <566A13C2.7040803@hurleysoftware.com> <566AD5FC.6010407@hurleysoftware.com> <567436DE.2020101@hurleysoftware.com> User-Agent: Alpine 2.00 (WNT 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-CMAE-Envelope: MS4wfPdaSUHPLDX/RP6ie0Cxtg9k/00D8XqgjQiWaJAqjcGEHmVoIv7sE366JzcMwr6Qx/4JKSOQfh5bdkCeAGh5NEchtiKO9l8NoYe3g24QZqPE110ULs1Q YyGvUm6NL9qDGbDSLliiEFgOUIBPSRUKOrZO/00D5GE64iTyluNj+dawmFFtJ6NCQkA51NKGV2hRDjXHR9TYUU1GmJHBGVrgbE3daZFn8XZA9/aKnwWOC2u3 7UexoIri4CK/686O+6gJ1vm2HZ7RMFfW2zoN90Co7IhSXojYQQxYn6AiCfo8ZLqeZ3OBv1URHF8yBRMyPjxzRp5GLlYM9W5pZowp6k4qa+U= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2372 Lines: 55 On Fri, 18 Dec 2015, Peter Hurley wrote: > On 12/18/2015 06:26 AM, Marc Aurele La France wrote: >> On Fri, 11 Dec 2015, Peter Hurley wrote: >>> On 12/11/2015 05:37 AM, Marc Aurele La France wrote: >>>> I am not asking to read data before it has been produced. I am puzzled >>>> that despite knowing that the data exists, I can now be lied to when I >>>> try to retrieve it, when I wasn't before. We are talking about what is >>>> essentially a two-way pipe, not some network or serial connection with >>>> transmission delays userland has long experience in dealing with. >>>> These previously internal additional delays, that are now exposed to >>>> userland, are simply an implementation detail that userland did not, >>>> and should not, need to worry about. >>> Your mental model is that pseudo-terminals are a synchronous pipe, which >>> is not true. >>> But this argument is pointless because the regression needs to be fixed >>> regardless of the merits. >> Fair enough. >> Anything new on this? > It's on my todo list. > While considering this issue further, I was curious what ssh does > regarding the entire foreground process group and its output? > If ssh only knows that the child has terminated, how does it wait > for the rest of the foreground process group's output since those > processes may not yet have received their SIGHUP/SIGCONT signals > yet? sshd cannot know about the termination of any process other than the session leader because any of the session leader's children are re-parented to init. The idea is to, at minimum, collect any output the session leader might have left behind. Yes, this could entail also collecting output from its children that might have squeaked in, but that's gravy that can't be avoided. This situation is much simpler on the *BSDs. There, both ends of the pty pair are, in effect, completely closed after disassociation of either end, preventing (with EIO) any further output (but still allowing data already collected to be read, after which an EIO occurs). It's unfortunate System V variants don't do this, but that's crying over spilt milk. Marc. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/