From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.kundenserver.de (mout.kundenserver.de [217.72.192.74]) by sourceware.org (Postfix) with ESMTPS id 65BF83858D39 for ; Wed, 2 Aug 2023 06:32:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 65BF83858D39 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=towo.net Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=towo.net Received: from [192.168.178.72] ([91.64.130.150]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MqJVd-1q5B0G3q43-00nNBq for ; Wed, 02 Aug 2023 08:32:40 +0200 Content-Type: multipart/mixed; boundary="------------YwLjgtMsUsX0GuKBtWLP6bys" Message-ID: Date: Wed, 2 Aug 2023 08:32:39 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: Rare character glitch in pty? To: cygwin-developers@cygwin.com References: <6f0bfdf8-a557-0540-0367-6846406f941d@towo.net> <44ea96ac-25c5-40b3-f8e1-2d6c02a4c8da@towo.net> <20230802073506.d9f9ad8be3c8a8b585c1c494@nifty.ne.jp> From: Thomas Wolff In-Reply-To: <20230802073506.d9f9ad8be3c8a8b585c1c494@nifty.ne.jp> X-Provags-ID: V03:K1:FTL5HLZgGJdRYUGhcgY9QqNt+OIFWGd4XE28Tyq+etRdZjKsjnc OtbgQ7OdOKjQq13TAxS6Z125MzUAOESARQ36ft9XrgHMFmOSCDshH0R1VDOKsdfKUvcVtvN e+8mnYxQBArRIQqZn2LbT8/e3LtamfV7mWwx8dEweRQU+9fp9dnqltzZw/BN9e/O47FJWwX ji7UsDSjlby/I1c0y38ZQ== UI-OutboundReport: notjunk:1;M01:P0:SokJPcY2ICk=;Pupvl8dg6NcODCfDZ/L1bNEIPHz 4VnuszOpyJSQ2CuQOy+fmDNff/ivksjybBZ9iORUo91L6RNSPSU9FELygIW4pw8f82XDejGed 3Che+bfYp7VtR6eYxuEUPKig1InaVLJtW9qjkJ9BNBnBYt+RSmiwd7I6gAqfTw8tTQG2EF4Vl p1UJ9AqTHLZgGqgTHd/WCU+6pIEWJr8E7EwtSpg9wOLf5+fb8Xc5tUn2nE3X/hcXgwjzbkt/r iLIPIVnYy8zJ7kPwAJwHV98dqiH2NbO96KD/RoOTGoussy1FLFfp4w5dl2vWyuvUzabQ86GK6 +0G4p7PsaICzgPrZ+7TG2pYjzANPS9RPfpKQPyJ5Eg27uQzkisGdtRBLQ1G1iJNBbJOQ6XXjD G4SS5Na/bOwBe3cOiuQAQYa6s4DlsOAlodGpbFefm15gdBlpVzxm5b4mdN2aCWBmamOqMaDlC QbWNJjMi/6EADsDNE65i/sHz/9bk5uWn7QJ0VW3HuH/Z2OlXgIvoCFYrTKlCvM+VH+sPPfzGt /pdgK4v8x4ecAgCHSvCM6FudgdKSQl3hAvxjM1OOKjs6fQqWupoBy37e9BOlV1orG8XpDC02O ZavstxYtPXnMAdupehnKi5R0YmM17ZqbfUJOfkOfJ1NPT5srgRyuh2G1MXR89cMNUj73fbjDw Y2XBTA0XMeJ/k0LasfwdWQ/htxIGb4XZSbU10uzl1rp+luTmg8oXKASW8cr3ijoekKUEZrics 1+KaDZ9Ss1NRaMREfQZc/Jqy/V1NCsZ7An3bQFDuv+cfyCxSZV/4SBrPynIAFnzt5JBTYedP6 tOcSVe23M05eSONFyuyunHi6hpUcvNobwK6H5d0M3CfiZ3v47wZEUIlMEYODduREQqonQdjD1 9AAzBDNOXHrVBjQ== X-Spam-Status: No, score=3.2 required=5.0 tests=BAYES_00,BODY_8BITS,KAM_DMARC_STATUS,KAM_LOTSOFHASH,NICE_REPLY_A,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Level: *** X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------YwLjgtMsUsX0GuKBtWLP6bys Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Am 02.08.2023 um 00:35 schrieb Takashi Yano: > On Tue, 1 Aug 2023 23:05:18 +0200 > Thomas Wolff wrote: >> I had reported this to the the main cygwin list: >> >> Am 20.07.2023 um 08:33 schrieb Thomas Wolff via Cygwin: >>> There was a report that on switching terminal windows with the mouse, >>> focus event reports (as enabled with ESC[?1004h) would sometimes get >>> mangled. >>> This is further described in issue reports to mintty/wsltty >>> (https://github.com/mintty/wsltty/issues/335) and also to tmux >>> (https://github.com/tmux/tmux/issues/3601). >>> >>> I could reproduce the issue without either of tmux or WSL. However, it >>> happens only once in a few hundred instances: >>> The escape sequence is changed so that the initial ESC is replaced by >>> one of the two subsequent characters, so instead of ESC[O, either of >>> [[O or sometimes O[O would be sent to the foreground application. >>> >>> I traced the issue down to the pty that connects mintty and its client >>> application, verified that the correct sequence is passed into write() >>> at the pty and the mangled sequence appears at read() in the client >>> process. In addition to a minimised test program that behaves like >>> `cat -v`, I also also put the test output directly into the client >>> process within the mintty code. >>> This leaves the only conclusion that the issue must be happening >>> somehow within pty handling, maybe in the context of some timing >>> condition or Windows messages being passed to mintty. >>> Anyhow, I was about to prepare testing with older mintty versions, in >>> case I overlooked something, when the OP reported that the issue does >>> not happen with cygwin 3.2.0. >>> Is there any recent change that could possibly cause such weird >>> behaviour? >>> Thomas >>> >> I have now automated the test case to chase the issue and associate it >> with a cygwin version. As unlikely as it may appear, results suggest >> that there is a case within the pty handling that may change sequences >> sent through it once in a while, more likely on a system under heavy load. >> I took some of the latest cygwin snapshots (by the way, there are no >> newer ones on the snapshots page): >> I can reproduce the issue with >>     3.3.5-341.x86_64.snap 2022-02-17 11:53 UTC >> while it did not occur with >>     3.4.0-341.x86_64.snap 2022-01-27 14:34 UTC >> Weird enough, the failing newer one is a cygwin 3.3.5 although the older >> one is a 3.4.0 version. > Can you provide the automated test case? I would like to > investigate what is happning. Manual test case: 1. Run `mintty echokey1` with the attached test program that runs like `cat -v` and detects the glitch 2. Run a second test window, same setup to increase the hit rate 3. Switch these 2 windows by clicking them in change a few hundred times, until the test program outputs "FAIL" Automated test case: 1. Use the tool TinyTask (https://www.tinytask.net/) to save the clicking. Sorry, I didn't manage to replace this with a self-made click simulator. 2. Place the 2 test windows in a specific position (e.g. covering the two screen halves in a top position) 3. Use the Record function of the tool and click to switch windows a dozen times, stop recording 4. Save the sequence as a TinyTask script, or use mine (2w.rec attached), better: load the script (Open), then create a standalone test executable (button "exe") to create tinytask2w.exe (I can send that to you if you like) 5. Optionally, create some background load on your system 6. Minimize other windows in case the test script does not hit the test windows 7. Run the test script minptytest (attached) to start the 2 windows and run the TinyTask standalone test in a loop; the script detects a marker file created by the test program; it also detect premature termination of a window (e.g. by hitting ^D in it) > >> Checking the git log around that time, there are a number of changes >> related to pty as listed below. I added some ! or ? marks to indicate >> more or less likely commits to be a culprit of this issue, judged on >> commit messages and browsing of code changes. >> >> I would also try to identify a commit more precisely but unfortunately >> the cygwin build process seems broken for me as it does not create the >> dll anymore... >> >> Thomas >> >> >> commit 2f2b91550547001b005393097c5a4328451343d6 >> Author: Takashi Yano >> Date:   Thu Feb 24 00:57:37 2022 +0900 >> >>     Cygwin: pty, console: Add a workaround for GDB SIGINT handling. >> >>     - The inferior of the GDB cannot be continued after SIGINT even >>       though nopass option is set. This seems because cygwin GDB does >>       not support hooking cygwin signal. Therefore, a workaround for >>       GDB is added. With this patch, only CTRL_C_EVENT is sent to the >>       GDB inferior by Ctrl-C and sending SIGINT is omitted. Note that >>       "handle SIGINT (no)pass" command does not take effect even with >>       or without this patch. >> >> commit 2cab4d0bb4af5ad7ec97914068d5fa1b8954909c >> Author: Takashi Yano >> Date:   Tue Feb 15 23:23:50 2022 +0900 >> ? >>     Cygwin: pty, console: Refactor the code processing special keys. >> >>     - This patch commonize the code which processes special keys in pty >>       and console to improve maintanancibility. As a result, some small >>       bugs have been fixed. >> >> commit bed1add783a13b3304b1625b962707f89e90e323 >> Author: Takashi Yano >> Date:   Sun Feb 13 05:12:18 2022 +0900 >> >>     Cygwin: pty: Fix a bug in tty_min::segpgid(). >> >>     - In tty_min::setpgid(), a pointer to fhandler instance is casted to >>       fhandler_pty_slave and accessed even if terminal is not a pty slave. >>       This patch fixes the issue. >> >> commit c4704c7c204e377859f657a3b06c112133adff09 >> Author: Takashi Yano >> Date:   Sun Feb 13 02:16:32 2022 +0900 >> >>     Cygwin: pty: Discard input in from_master_nat pipe on signal as well. >> >>     - Currently, pty discards input only in from_master pipe on signal. >>       Due to this, if pty is started without pseudo console support and >>       start a non-cygwin process from cmd.exe, type adhead input is not >>       discarded on signals such as Ctrl-C. This patch fixes the issue. >> >> commit b958e1f03acd1732bb0a433a589efb645458aac4 >> Author: Takashi Yano >> Date:   Thu Feb 10 17:47:51 2022 +0900 >> ? >>     Cygwin: pty: Revise the code to wait for completion of forwarding. >> >>     - With this patch, the code to wait for completion of forwarding of >>       output from non-cygwin app is revised so that it can more reliably >>       detect the completion. >> >> commit bddd9c1c417e97791c44241cf94753e90464501c >> Author: Takashi Yano >> Date:   Thu Feb 10 17:22:11 2022 +0900 >> !? >>     Cygwin: pty: Prevent deadlock on echo output. >> >>     - If the slave process writes a lot of text output, doecho() can >>       cause deadlock. This is because output_mutex is held in slave:: >>       write() and if WriteFile() is blocked due to pipe full, doecho() >>       tries to acquire output_mutex and gets into deadlock. With this >> !      patch, the deadlock is prevented on the sacrifice of atomicity >>       of doecho(). >> >> commit b04aea00f1bb503dcc364c83ee3ef3da3bc1305e >> Author: Takashi Yano >> Date:   Sat Feb 12 17:51:55 2022 +0900 >> ?? >>     Cygwin: pty: Pass Ctrl-Z (EOF) to non-cygwin apps with disable_pcon. >> >>     - Previously, non-cygwin app running in pty started without pseudo >>       console support was suspended by Ctrl-Z rather than sending EOF. >>       Even worse, suspended app could not be resumed by fg command. With >>       this patch, Ctrl-Z (EOF for non-cygwin apps) is passed to non-cygwin >>       app instead of suspending that app. This patch also handles Ctrl-\ >>       (QUIT) and Ctrl-D (EOF) as well. >> >> commit c05c36a7c8af5e97fa379abb7571ed35a0088e98 >> Author: Takashi Yano >> Date:   Thu Feb 10 16:53:47 2022 +0900 >> ?? >>     Cygwin: pty, console: Fix Ctrl-C handling for non-cygwin apps. >> >>     - Currently, if cat is started from cmd.exe which is started in cygwin >>       console, Ctrl-C terminates not only cat but also cmd.exe. This also >>       happens in pty in which pseudo console is disabled. This patch fixes >>       the issue. >> >> commit 909ed837ccb932ea70f71cc41891fa2c8143133f >> Author: Takashi Yano >> Date:   Fri Jan 14 19:35:12 2022 +0900 >> ?? >>     Cygwin: pty: Fix race issue between closing and opening master. >> >>     - If the from_master is closed before cleaning up other pipes, such >>       as from_slave_nat, the same pty may be allocated and pty master may >>       try to open the pipe which is not closed yet, and it will fail. >>       This patch fixes the issue. >> >> commit 3af461092e7ee9b76f3a1c18a6d95ed6e226df81 >> Author: Takashi Yano >> Date:   Thu Jan 13 19:44:43 2022 +0900 >> !? >>     Cygwin: pty: Stop closing and recreating attach_mutex. >> >>     - Closing attach_mutex and recreating it causes the race issue >>       between pty and console codes. With this patch, attach_mutex >>       is created only once in a process which opens pty, and never >>       closed in order to avoid this issue. >> >>     Addresses: >> https://cygwin.com/pipermail/cygwin-developers/2021-December/012548.html >> >> commit 4f490c4cef8fd527642dbb5ea5373b373193a49b >> Author: Takashi Yano >> Date:   Thu Jan 13 18:18:00 2022 +0900 >> >>     Cygwin: pty: Fix memory leak in master_fwd_thread. >> >>     - If master_fwd_thread is terminated by cygthread::terminate_thread(), >>       the opportunity to release tmp_pathbuf is missed, resulting in a >>       memory leak. This patch fixes the issue. >> >> commit aa49985245e4e5b278778b0a47f6ce83cceb4ad4 >> Author: Takashi Yano >> Date:   Thu Jan 13 18:16:31 2022 +0900 >> ? >>     Cygwin: pty, console: Fix deadlock in GDB regarding mutex. >> >>     - GDB inferior may be suspended while the inferior grabs mutex. >>       This causes deadlock in terminal I/O. With this patch, timeout >>       for waiting mutex is set to 0 for the debugger process when the >>       process calls CreateProcess() with DEBUG_PROCESS flag to avoid >>       deadlock. This may cause the race issue in GDB, however, there >>       is no other way than that. >> >>     Addresses: >> https://cygwin.com/pipermail/cygwin-developers/2021-December/012542.html >> >> > --------------YwLjgtMsUsX0GuKBtWLP6bys Content-Type: text/plain; charset=UTF-8; name="echokeys1.c" Content-Disposition: attachment; filename="echokeys1.c" Content-Transfer-Encoding: base64 I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDx0ZXJt aW9zLmg+CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgoKc3Ry dWN0IHRlcm1pb3Mgc2F2ZWRfdGF0dHI7Cgp2b2lkCnJlc3RvcmVfdGF0dHIgKHZvaWQpCnsK ICBpZiAoaXNhdHR5IChTVERJTl9GSUxFTk8pKQogICAgdGNzZXRhdHRyIChTVERJTl9GSUxF Tk8sIFRDU0FOT1csICZzYXZlZF90YXR0cik7Cn0KCmludAptYWluICh2b2lkKQp7CiAgcHJp bnRmICgiZW5kIHdpdGggXkRcbiIpOwoKICBpZiAoaXNhdHR5IChTVERJTl9GSUxFTk8pKSB7 CiAgICB0Y2dldGF0dHIgKFNURElOX0ZJTEVOTywgJnNhdmVkX3RhdHRyKTsKICAgIHN0cnVj dCB0ZXJtaW9zIHRhdHRyID0gc2F2ZWRfdGF0dHI7CgogICAgY2ZtYWtlcmF3KCZ0YXR0cik7 CgogICAgdGNzZXRhdHRyIChTVERJTl9GSUxFTk8sIFRDU0FGTFVTSCwgJnRhdHRyKTsKLy8g ICAgYXRleGl0IChyZXN0b3JlX3RhdHRyKTsKICB9CiNpZmRlZiB1c2VfcmVhZAogIHNldGJ1 ZiAoc3Rkb3V0LCAwKTsKI2VuZGlmCgogIC8vIGVuYWJsZSBmb2N1cyByZXBvcnRpbmcKICBw cmludGYoIlxlWz8xMDA0aCIpOwoKICBzdGF0aWMgaW50IG5yZWFkID0gMDsKICBzdGF0aWMg dW5zaWduZWQgY2hhciBwcmV2YyA9IDA7CgogIHdoaWxlICgxKSB7CiAgICB1bnNpZ25lZCBj aGFyIGM7CiNpZmRlZiB1c2VfcmVhZAogICAgaW50IG4gPSByZWFkKDAsICZjLCAxKTsgaWYg KG4gPCAxKSBicmVhazsKI2Vsc2UKICAgIGMgPSBnZXRjaGFyKCk7CiNlbmRpZgoKICAgIHN3 aXRjaCAoYykgewogICAgICBjYXNlIDB4MDAgLi4uIDB4MWY6CiAgICAgICAgcHJpbnRmICgi XGVbN21eJWNcZVttIiwgYyArICdAJyk7CiAgICAgICAgLy9pZiAoYyA9PSAnXHInKSBwcmlu dGYgKCJcclxuIik7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMHg3ZjoKICAgICAgICBw cmludGYgKCJcZVs3bV4/XGVbbSIpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDB4ODAg Li4uIDB4RkY6CiAgICAgICAgcHJpbnRmICgiXFx4JTJYIiwgYyk7CiAgICAgICAgYnJlYWs7 CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgcHV0Y2hhciAoYyk7CiAgICB9CiAgICAvLyBjb3Vu dCBlc2NhcGUgc2VxdWVuY2VzCiAgICBpZiAoYyA9PSAnXGUnKQogICAgICBucmVhZCsrOwog ICAgLy8gZGV0ZWN0IG1hbmdsZWQgZm9jdXMgcmVwb3J0LCBsaWtlIFtbTyBvciBPW08KICAg IGlmIChjID09ICdbJyAmJiBwcmV2YyAhPSAnXGUnKSB7CiAgICAgIHByaW50ZigiXGVbNDFt RkFJTCU0ZFxlW20iLCBucmVhZCk7CiAgICAgIC8vIHRvdWNoIGEgbWFya2VyIGZpbGUgKGFu ZCBsb2cgbnJlYWQgaW4gaXQpLAogICAgICAvLyBzbyBhIHRlc3Qgc2NyaXB0IGNhbiBkZXRl Y3QgaXQgdG8gc3RvcAogICAgICBjaGFyIHNbOTldOwogICAgICBzcHJpbnRmKHMsICJlY2hv IGZhaWxlZCBhdCAlZCA+IC5taW5zdG9wIiwgbnJlYWQpOwogICAgICBzeXN0ZW0ocyk7CiAg ICB9CgogICAgaWYgKGMgPT0gNCkgewogICAgICBwcmludGYgKCJcclxuIik7IGJyZWFrOwog ICAgfQoKICAgIHByZXZjID0gYzsKICB9CiAgcmVzdG9yZV90YXR0ciAoKTsKICByZXR1cm4g MDsKfQo= --------------YwLjgtMsUsX0GuKBtWLP6bys Content-Type: application/octet-stream; name="2w.rec" Content-Disposition: attachment; filename="2w.rec" Content-Transfer-Encoding: base64 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 4gEAAD0AAAB+Su0JAAAAAA== --------------YwLjgtMsUsX0GuKBtWLP6bys Content-Type: text/plain; charset=UTF-8; name="minptytest" Content-Disposition: attachment; filename="minptytest" Content-Transfer-Encoding: base64 IyEgL2Jpbi9kYXNoCiMgZGFzaCByYXRoZXIgdGhhbiBiYXNoIHNvIGl0IGNhbiBiZSByZWNv Z25pemVkIGluIFdpbmRvd3MgdGFzayBtYW5hZ2VyLCAKIyBpbiBjYXNlIGl0IGRvZXMgbm90 IHN0b3AKCiMgcHV0IHRpbnl0YXNrMncgYW5kIGVjaG9rZXlzMSBpbnRvIFBBVEggIQoKY2Fz ZSAiJDEiIGluCi0pCSMgYXNzdW1lIDIgdGVzdCB3aW5kb3dzIHdlcmUgYWxyZWFkeSBzdGFy dGVkCgl0cnVlOzsKKikJIyBzdGFydCAyIHRlc3Qgd2luZG93cwoJIyB1c2UgbWludHR5IHZl cnNpb24gd2l0aCBjb21waWxlZC1pbiBkZWJ1ZyBjb2RlCgkjLi9taW50dHkgLVJwIC1vIFk9 NTAgLXAgbGVmdCA+IC5taW5waWQxICYKCSMuL21pbnR0eSAtUnAgLW8gWT01MCAtcCByaWdo dCA+IC5taW5waWQyICYKCSMgdXNlIG1pbnR0eSB3aXRoIHNlcGFyYXRlIGRlYnVnIHByb2dy YW0KCW1pbnR0eSAtcCBsZWZ0IC1ScCAtbyBZPTUwIGVjaG9rZXlzMSA+IC5taW5waWQxICYK CW1pbnR0eSAtcCByaWdodCAtUnAgLW8gWT01MCBlY2hva2V5czEgPiAubWlucGlkMiAmCgk7 Owplc2FjCgoKc2xlZXAgMgpwMT1gdGFpbCAtMSAubWlucGlkMWAKcDI9YHRhaWwgLTEgLm1p bnBpZDJgCmVjaG8gY2hlY2tpbmcgJHAxICRwMgoKcm0gLWYgLm1pbnN0b3AKI3doaWxlIHBz IC1wICRwMSA+IC9kZXYvbnVsbCAmJiBwcyAtcCAkcDIgPiAvZGV2L251bGwKI3doaWxlICEg WyAtZiAubWluc3RvcCBdCndoaWxlIHBzIC1wICRwMSA+IC9kZXYvbnVsbCAmJiBwcyAtcCAk cDIgPiAvZGV2L251bGwgJiYgISBbIC1mIC5taW5zdG9wIF0KZG8JIyBydW4gcHJlY29tcGls ZWQgVGlueVRhc2sgc2NyaXB0IHRvIHN3aXRjaCB0aGUgMiB0ZXN0IHdpbmRvd3MKCXRpbnl0 YXNrMncKZG9uZQoKaWYgWyAtZiAubWluc3RvcCBdCnRoZW4JY2F0IC5taW5zdG9wCmVsc2UJ ZWNobyB0ZXN0IHdpbmRvdyB3YXMgdGVybWluYXRlZCAjIGUuZy4gd2l0aCBeRApmaQo= --------------YwLjgtMsUsX0GuKBtWLP6bys--