X-Recipient: archive-cygwin AT delorie DOT com DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:mime-version:from:date:message-id:subject:to :content-type; q=dns; s=default; b=GdqJBR0vjKGt2Gj6c4pFZbW8FOPbP loJ8rg7kd2n1T5Cy4wwE3O24pmigngZO2EsKo086m26VHAtU4OFXEZR0pLOQYBqd E4RYp1V6YSjle0rR4Sbpnwj6j0S50ZWfN0nrTH0DHd/g1087MCEMjRvHzmJjzo4M 7d7TxsJhmA0IeY= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:mime-version:from:date:message-id:subject:to :content-type; s=default; bh=EFD7K2iL2O6DhGTDOPfRrrF0ObQ=; b=KOE R4eV/5x4fBX6IeQfRPCQi9kg9bM6ljOp7CRfahSv3q4wwT2YP+I7KoSnCajqkwyC bnBz6OW22gKT+dSb3n+2JuhKngq0xqGgp++L4JKiVv4UPU3/xU7Nl3Ug6IxaQ9Ga 6s8btFXntMp8c17s6vCqz3sKZ/3HR4Pn66s567Vg= 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 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=cpr X-HELO: mail-lf1-f42.google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=7JjCuOIgjB/KbdJqXFYUmSOAtZRCt2hbeOEvFgIPSgY=; b=Kxm43dRmOFun43boGDv3PmIslhHZ2Es/bHKGksG2kvgaGHGUnxf7Ex3dbLi96e4Lqb KZd8u/Oy08ipOf4bZeIab6mnqIrDC2QQeu9Mv8jTMBP4JgmfHfLsWzmlnqD2CuyF353L fZIpRyjbsiHBRq3vug58yKBizAYSYot9LaUeB6ilj0C7JM4WNIwJtLvzLl0wviOxpeBH 7dJNaDX4ZUM4cR3yH9d69AGkXjQ7NBcct9KDDIxg/nj1CbN7enlLgdq9qByyqNPhGU/z lqEDRI1JIHjHzY1EwQCeSKGrv+4RMARhY/ZVnnsqCxOfUHG+bFWNFCM+pSSexgJEYzl+ 8s2Q== MIME-Version: 1.0 From: Koichi Murase Date: Fri, 24 Jan 2020 19:20:48 +0800 Message-ID: Subject: Cygwin-3.1.3: read(2) from /dev/consN returns unexpected EOF after select(2) and redirection To: cygwin AT cygwin DOT com Content-Type: multipart/mixed; boundary="000000000000c45a1b059ce0f3ea" X-IsSubscribed: yes --000000000000c45a1b059ce0f3ea Content-Type: text/plain; charset="UTF-8" Hi, this is another report related to Cygwin console. Description: In a noncanonical mode of console (where tty is /dev/consN), if there is some unprocessed inputs from the user side (i.e., terminal side), the combination of select(2) (for read) and redirection causes the next attempt of read(2) to return EOF [i.e., read(0, buf, sz) = 0] even though the TTY is still alive. Because of this behavior, the shell session unexpectedly closes because the shell considers the TTY has been closed. This only affects the first attempt of read(2) (in each process) after the redirection. Repeat-By: This is a reduced test case to reproduce the problem: 1. Open cygwin console (pseudo console mode) with Bash This can be done by, for example, opening Run dialog with "Win + R", typing "C:\cygwin64\bin\bash" and finally pressing "Enter". 2. Run the following command $ stty -icanon; printf '\e[6n'; read -t 0; : < /dev/null; stty sane As a result, the terminal response CPR (CSI Pn ; Pn R) to DSR(6) request (CSI 6 n) is expected to be inserted in the command line. It should look like the following: $ 7;1R However, in the console, the Bash session is closed by the above command because Bash receives EOF from the TTY and considers the TTY session has been closed. Note: Only the first attempt of read(2) after the redirection returns EOF. This can be confirmed by the following command where the Bash session does not close. $ stty -icanon; printf '\e[6n'; read -t 0; : < /dev/null; read; stty sane Note: Also the first read(2) fails for each forked process in the session: $ stty -icanon; printf '\e[6n'; read -t 0; : < /dev/null; wc -c; (read||echo fail;read||echo fail2); read; stty sane 0 fail success $ Repeat-By (2): This demonstrates the problem more explicitly by system calls. 1. Open cygwin console (pseudo console mode) 2. Compile and run the attached program `min1.cpp'. $ g++ -o min1.exe min1.cpp $ ./min1 The expected result is something like $ ./min1 CHR CHR CHR CHR CHR CHR CHR $ However, in the console, it prints EOF and exit. Also the terminal response CPR appears to be lost. $ ./min1 EOF $ Thank you, Koichi --000000000000c45a1b059ce0f3ea Content-Type: application/octet-stream; name="min1.cpp" Content-Disposition: attachment; filename="min1.cpp" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k5s2pxai0 LyotLSBCRUdJTiBtaW4xLmNwcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2luY2x1ZGUgPHVuaXN0ZC5o PgojaW5jbHVkZSA8dGVybWlvcy5oPgojaW5jbHVkZSA8ZmNudGwuaD4KI2lu Y2x1ZGUgPGN0eXBlLmg+CgpzdHJ1Y3QgdGVybWlvcyBzZXR1cF90dHkoKSB7 CiAgc3RydWN0IHRlcm1pb3Mgb2xkVGVybWlvczsKICB0Y2dldGF0dHIoU1RE SU5fRklMRU5PLCAmb2xkVGVybWlvcyk7CgogIHN0cnVjdCB0ZXJtaW9zIHRl cm1pb3MgPSBvbGRUZXJtaW9zOwogIHRlcm1pb3MuY19sZmxhZyAmPSB+KEVD SE8gfCBJQ0FOT04gfCBJRVhURU4gfCBJU0lHKTsKICB0ZXJtaW9zLmNfaWZs YWcgJj0gfihCUktJTlQgfCBJQ1JOTCB8IElOUENLIHwgSVNUUklQIHwgSVhP Tik7CiAgdGVybWlvcy5jX2NmbGFnICY9IH4oQ1NJWkUgfCBQQVJFTkIpOwog IHRlcm1pb3MuY19jZmxhZyB8PSBDUzg7CiAgdGVybWlvcy5jX29mbGFnICY9 IH4oT1BPU1QpOwogIHRlcm1pb3MuY19jY1tWTUlOXSAgPSAxOwogIHRlcm1p b3MuY19jY1tWVElNRV0gPSAwOwogIHRjc2V0YXR0cihTVERJTl9GSUxFTk8s IFRDU0FGTFVTSCwgJnRlcm1pb3MpOwoKICByZXR1cm4gb2xkVGVybWlvczsK fQoKaW50IGNoZWNrX2lucHV0KGludCBmZCkgewogIGlmIChmZCA8IDApIHJl dHVybiAtMTsKCiAgZmRfc2V0IHJlYWRmZHMsIGV4Y2VwdGZkczsKICBGRF9a RVJPKCZyZWFkZmRzKTsKICBGRF9aRVJPKCZleGNlcHRmZHMpOwogIEZEX1NF VChmZCwgJnJlYWRmZHMpOwogIEZEX1NFVChmZCwgJmV4Y2VwdGZkcyk7Cgog IHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7CiAgdGltZW91dC50dl9zZWMgPSAw OwogIHRpbWVvdXQudHZfdXNlYyA9IDA7CgogIHJldHVybiAwIDwgc2VsZWN0 KGZkICsgMSwgJnJlYWRmZHMsIChmZF9zZXQgKikgTlVMTCwgJmV4Y2VwdGZk cywgJnRpbWVvdXQpOwp9Cgp2b2lkIHJlZGlyZWN0KCkgewogIGludCBmZCA9 IG9wZW4oIi9kZXYvbnVsbCIsIE9fUkRPTkxZKTsKICBpbnQgZmRfc2F2ZSA9 IGZjbnRsKFNURElOX0ZJTEVOTywgRl9EVVBGRCwgMTApOwogIGR1cDIoZmQs IFNURElOX0ZJTEVOTyk7CiAgZHVwMihmZF9zYXZlLCBTVERJTl9GSUxFTk8p OwogIGNsb3NlKGZkX3NhdmUpOwogIGNsb3NlKGZkKTsKfQoKaW50IG1haW4o KSB7CiAgc3RydWN0IHRlcm1pb3Mgb2xkVGVybWlvcyA9IHNldHVwX3R0eSgp OyAvLyBzdHR5IC1pY2Fub24gLi4uCgogIC8vIERTUig2KSBSZXF1ZXN0CiAg d3JpdGUoU1RET1VUX0ZJTEVOTywgIlwwMzNbNm4iLCA0KTsKCiAgY2hlY2tf aW5wdXQoU1RESU5fRklMRU5PKTsgIC8vIHJlYWQgLXQgMAogIHJlZGlyZWN0 KCk7ICAgICAgICAgICAgICAgICAvLyA6IDwgL2Rldi9udWxsCgogIC8vIFJl YWQgQ1BSIFJlc3BvbnNlCiAgZm9yICg7OykgewogICAgY2hhciBjOwogICAg c3NpemVfdCByZXN1bHQgPSByZWFkKFNURElOX0ZJTEVOTywgJmMsIDEpOwog ICAgaWYgKHJlc3VsdCAhPSAxKSB7CiAgICAgIHdyaXRlKFNURE9VVF9GSUxF Tk8sIHJlc3VsdCA9PSAwID8gIkVPRiIgOiAiRVJSIiwgNCk7CiAgICAgIGJy ZWFrOwogICAgfQogICAgd3JpdGUoU1RET1VUX0ZJTEVOTywgIkNIUiAiLCA0 KTsKICAgIGlmIChpc2FscGhhKGMpKSBicmVhazsKICB9CgogIHRjc2V0YXR0 cihTVERJTl9GSUxFTk8sIFRDU0FGTFVTSCwgJm9sZFRlcm1pb3MpOwogIHdy aXRlKFNURE9VVF9GSUxFTk8sICJcbiIsIDEpOwogIHJldHVybiAwOwp9Ci8q LS0gRU5EIG1pbjEuY3BwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCg== --000000000000c45a1b059ce0f3ea Content-Type: text/plain; charset=us-ascii -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple --000000000000c45a1b059ce0f3ea--