From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.17.10]) by sourceware.org (Postfix) with ESMTPS id BD1F73858D1E for ; Thu, 22 Dec 2022 14:55:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BD1F73858D1E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=towo.net Authentication-Results: sourceware.org; spf=none smtp.mailfrom=towo.net Received: from [192.168.178.51] ([91.65.247.133]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Mg6i8-1ofMPx2Jgs-00hbob for ; Thu, 22 Dec 2022 15:55:03 +0100 Content-Type: multipart/mixed; boundary="------------CbuXZRCaS3vt8VwlonzDV1fd" Message-ID: Date: Thu, 22 Dec 2022 15:55:01 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 From: Thomas Wolff To: cygwin-developers@cygwin.com Subject: read vs select on mouse events in console X-Provags-ID: V03:K1:IUo9MnWxMFNqz/JU+J0Z+y8qr8exzE5q3HuQ3UoPWsiHzBwGuHA v1mdIkphNBfPqlp1Vw9Dhdufw0Dvb8ZMtBovfNQPctRRsfuVyC5xEAYhaddcSTaFznNsw2t bCLIOuHykux2/r4yigJ319MSbMb3QMBHH1X2sXzzDHwv218mkGt8hsLtHQpwE3P8J61t/dh 16sCYtVg8Nm5Q4lFBIH4g== UI-OutboundReport: notjunk:1;M01:P0:G20Ds8rY8Zg=;HG7e1JSQH8+D9YV8ACheeu8os1v kB9ohAEjsTAx19wkKsaUqkg3J4uLjSERQ0gqZiW8ePlOISYsCydtk6d5vZcGvhpMOLtxZEzre CAaioyV8fvGfI8n4Qy6fCzz+eNJr6tPCcfmOw07ZkBIGCQ4bSvzF89+zIk3lAmEPoBwLZ4J7U OBWsqxjRuuZIbphCv0mY7j3Y7+nDZmylrnJDpV/wZCBv3Bw89PAKlCKPI2Eh9OMqpVpwGrAU2 ayEqt+V5SVzc9cjHL+JoLicv6AH0RMI5wnz1XULTOQZuBBe42LOVvK34bqs77AIPvz5BKezqP rlm3E1JFbgoP2Ft5cwMVzVJjtIG9dLaV6ZZkjqFDucyUO/DsSIGPtkbmvmL1PLRWEub7MoFPT LQ8o4LZx1a/egyq1ge63utHKd55j3ZNDEX2BZRA9rN58JUydKkxZ8aLg6T8SlQysT1FDSA4kg nFnrlh/einuOmjH3ErFabyvMajzKUYS8DR0lFq7Y7uphfEuHfBN0ZfGsx/XSDvaLlc0PxfgEO wnpgqXy6b9fh9nmsQnkuW8DdAa2qqEFK9fMTQw3dBJsb+NWtRdayufmjDt4BIR0IcItCGlIlh IXStSuihXxpAOvYyF/QnTQhOtqUxmbCZVRxEMhd1WplHkn5UEl0t9G0NBiZvE9XYLDid+qoAB CfmR9/vcE9yHY7Kw0/tWSkXq10QXXBcJeZ//GXaODg== X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,KAM_DMARC_STATUS,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=no autolearn_force=no version=3.4.6 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. --------------CbuXZRCaS3vt8VwlonzDV1fd Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit When I added mouse notification support to the console long ago, I deliberately introduced a function mouse_aware() which was common between the console version of function read() and the console branch of function select(), in order to make sure by design that inconsistencies between them could never occur. Now I noticed that by some change, mouse_aware() is not used anymore in select() code. This means that it could happen that either a mouse event would be indicated by select() but then not be delivered by read(), so read() could stall, or (possibly, not sure) the other way round, a mouse event available for delivery would not be recognized by select(). The attached test case is a rough demonstration of the issue. It uses mouse mode DECSET 1000 which has a limited range of mouse coordinates. Run it in a maximized console, click into the upper left area, then further apart toward lower right, and eventually the program will stall until another key is pressed. Thomas --------------CbuXZRCaS3vt8VwlonzDV1fd Content-Type: text/plain; charset=UTF-8; name="test-select.c" Content-Disposition: attachment; filename="test-select.c" Content-Transfer-Encoding: base64 I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxmY250 bC5oPgojaW5jbHVkZSA8dGVybWlvcy5oPgojaW5jbHVkZSA8c3RkaW8uaD4KCiNpbmNsdWRl IDxzeXMvc2VsZWN0Lmg+CiNpbmNsdWRlIDx0aW1lLmg+CiNpbmNsdWRlIDxzaWduYWwuaD4K CnN0cnVjdCB0ZXJtaW9zIHNhdmVkX3RhdHRyOwoKdm9pZApyZXN0b3JlX3RhdHRyICh2b2lk KQp7CiAgaWYgKGlzYXR0eSAoU1RESU5fRklMRU5PKSkKICAgIHRjc2V0YXR0ciAoU1RESU5f RklMRU5PLCBUQ1NBTk9XLCAmc2F2ZWRfdGF0dHIpOwp9CgppbnQKcmVhZHlfc2VsZWN0ICgp CnsKICBzdHJ1Y3QgdGltZXZhbCB0aW1lb3V0c3RydTsKICBmZF9zZXQgcmVhZGZkczsKICBp bnQgbmZkczsKICBzdGF0aWMgaW50IHJ2ID0gMDsKCiAgdGltZW91dHN0cnUudHZfc2VjID0g MDsKICB0aW1lb3V0c3RydS50dl91c2VjID0gODAwMDAwOwoKICBGRF9aRVJPICgmIHJlYWRm ZHMpOwogIEZEX1NFVCAoU1RESU5fRklMRU5PLCAmIHJlYWRmZHMpOwogIG5mZHMgPSBzZWxl Y3QgKFNURElOX0ZJTEVOTyArIDEsICYgcmVhZGZkcywgMCwgMCwgJiB0aW1lb3V0c3RydSk7 CiAgcHJpbnRmICgiKCVkKSIsIG5mZHMpOwogIGZmbHVzaCAoc3Rkb3V0KTsKICByZXR1cm4g bmZkczsKfQoKaW50Cm1haW4gKHZvaWQpCnsKICBpZiAoaXNhdHR5IChTVERJTl9GSUxFTk8p KSB7CiAgICBzdHJ1Y3QgdGVybWlvcyB0YXR0cjsKICAgIHRjZ2V0YXR0ciAoU1RESU5fRklM RU5PLCAmc2F2ZWRfdGF0dHIpOwogICAgdGF0dHIgPSBzYXZlZF90YXR0cjsKLyoKKi8KICAg IHRhdHRyLmNfaWZsYWcgJj0gfihJR05CUkt8QlJLSU5UfFBBUk1SS3xJU1RSSVB8SU5MQ1J8 SUdOQ1J8SUNSTkx8SVhPTik7CiAgICB0YXR0ci5jX29mbGFnICY9IH5PUE9TVDsKICAgIHRh dHRyLmNfY2ZsYWcgJj0gfihDU0laRXxQQVJFTkIpOwogICAgdGF0dHIuY19jZmxhZyB8PSBD Uzg7CiAgICB0YXR0ci5jX2xmbGFnICY9IH4oRUNIT3xFQ0hPTkx8SUNBTk9OfElTSUd8SUVY VEVOKTsKICAgIC8qIHVzZSBtaW1pbmFsIGNoYW5nZSBmb3IgdGVzdCBjYXNlOiAqLwogICAg dGF0dHIuY19sZmxhZyAmPSB+KElDQU5PTik7CiAgICB0Y3NldGF0dHIgKFNURElOX0ZJTEVO TywgVENTQUZMVVNILCAmdGF0dHIpOwogICAgYXRleGl0IChyZXN0b3JlX3RhdHRyKTsKICB9 CiAgc2V0YnVmIChzdGRvdXQsIDApOwoKLy8gIHByaW50ZiAoIlwwMzNbPzEwMDBoXDAzM1s/ MTAwNmhcMDMzWz8xMDA0aCIpOwogIHByaW50ZiAoIlwwMzNbPzEwMDBoXDAzM1s/MTAwNGgi KTsKICB3aGlsZSAoMSkgewogICAgdW5zaWduZWQgY2hhciBjOwogICAgaW50IHJlczsKCiAg ICB3aGlsZSAoISByZWFkeV9zZWxlY3QgKCkpIHsKICAgIH0KCiAgICByZXMgPSByZWFkIChT VERJTl9GSUxFTk8sICYgYywgMSk7CiAgICBpZiAoYyA9PSAnBCcpIHsKICAgICAgYnJlYWs7 CiAgICB9CiAgICBzd2l0Y2ggKGMgJiAweEZGKSB7CiAgICAgIGNhc2UgMHgwMCAuLi4gMHgx ZjogIHB1dGNoYXIgKCdeJyk7IHB1dGNoYXIgKGMgKyAweDQwKTsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKGMgPT0gJ1xyJykgcHJpbnRmICgiXHJcbiIpOwogICAgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgY2FzZSAweDdmOiBwdXRjaGFyICgnXicp OyBwdXRjaGFyICgnPycpOyBicmVhazsKICAgICAgY2FzZSAweDgwIC4uLiAweEZGOiBwcmlu dGYgKCJcXHglMlgiLCBjKTsgYnJlYWs7CiAgICAgIGRlZmF1bHQ6IHB1dGNoYXIgKGMpOwog ICAgfQogICAgZmZsdXNoIChzdGRvdXQpOwogIH0KICBwcmludGYgKCJcMDMzWz8xMDAwbFww MzNbPzEwMDRsXHJcbmJ5ZVxyXG4iKTsKICByZXR1cm4gMDsKfQo= --------------CbuXZRCaS3vt8VwlonzDV1fd--