From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from conssluserg-05.nifty.com (conssluserg-05.nifty.com [210.131.2.90]) by sourceware.org (Postfix) with ESMTPS id E10473858404 for ; Wed, 10 Nov 2021 08:30:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E10473858404 Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=nifty.ne.jp Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=nifty.ne.jp Received: from Express5800-S70 (z221123.dynamic.ppp.asahi-net.or.jp [110.4.221.123]) (authenticated) by conssluserg-05.nifty.com with ESMTP id 1AA8Tp2t020578 for ; Wed, 10 Nov 2021 17:29:51 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conssluserg-05.nifty.com 1AA8Tp2t020578 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.ne.jp; s=dec2015msa; t=1636532991; bh=YcHqkhSTgWxTBPhmpjbWhz/UiXu1jemWs68ErS2lYu0=; h=Date:From:To:Subject:In-Reply-To:References:From; b=omtrdBYl/rm6bMi4qNS+DT8xUTMICOsJLiokAEAGQ18AfgJhMLfqLHc/RFdskd0rC cYEuSu859O3d0RQQ89+kqjBOJJXjt5q1pNryOKgsvigwjsBy8cPOl2dnfuBVe6dIB/ GOv/GNaVU5OR81XYlXJa+/d0SxRsRo50G3YcgxrDkvmQHGgjQTjQtx4bCUoDaLZNOL 1vUCUMATeMrIbYmA5UhEccVt4USBSTJ7AAifsfruhzAn8xTdRHB5m5kycganq94nP/ u8RyjGYpgSIlPSAPVluZJEKgaP5Y3l2Smrl2jHT/9buAibMdMsAt19fBYzt+awBlfZ uyPZvLvvNU/qQ== X-Nifty-SrcIP: [110.4.221.123] Date: Wed, 10 Nov 2021 17:30:03 +0900 From: Takashi Yano To: cygwin-developers@cygwin.com Subject: Re: 3.3.0: Possible regression in cygwin DLL (Win10); fixed in snapshot Message-Id: <20211110173003.88359e8482ffa8b8be326903@nifty.ne.jp> In-Reply-To: References: <20211105123950.b118a7f2ba38379764df4c12@nifty.ne.jp> <20211105170542.96ce6dd4ca32880ddfddd660@nifty.ne.jp> <20211106044116.698b465a5d8ed6ce2cc75c99@nifty.ne.jp> <2cfa5de7-3b95-9062-4572-f36d304bc916@cornell.edu> <20211106151047.4d8f626bd6ebe9e4d8017f3b@nifty.ne.jp> X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.30; i686-pc-mingw32) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Wed__10_Nov_2021_17_30_03_+0900_GokT1XvZzC2Vs_h3" X-Spam-Status: No, score=-5.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: cygwin-developers@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Cygwin core component developers mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Nov 2021 08:30:08 -0000 This is a multi-part message in MIME format. --Multipart=_Wed__10_Nov_2021_17_30_03_+0900_GokT1XvZzC2Vs_h3 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Hi Corinna, On Sat, 6 Nov 2021 12:42:46 +0100 Corinna Vinschen wrote: > On Nov 6 15:10, Takashi Yano wrote: > > Unfortunately, these solutions do not resolve the issue > > which is another issue with C# program: > > https://cygwin.com/pipermail/cygwin/2021-March/247987.html > > This still needs FILE_SYNCHRONOUS_IO_NONALERT flag. > > If we want to add FILE_SYNCHRONOUS_IO_NONALERT, this would have to be > solved by running NtReadFile/NtWriteFile synchronously in a thread, > started on every invocation of raw_read/raw_write. raw_read/raw_write > would then call cygwait on the thread object. To break on signal or > thread cancallation events, it would have to call CancelSynchronousIo. > That's certainly doable. I tried to implement your idea, however, I noticed that NtQueryObject(ObjectNameInformation) call in get_query_hdl_per_process() is blocked while reading the pipe if FIPE_SYNCHRONOUS_IO_NONALERT is set and pipe is in blocking mode. So I would like to propose alternative implementation with FILE_SYNCHRONOUS_IO_NONALERT being set. Please have a look at attached patch. With this patch, pipe itself in read side is always set to nonblocking mode and simulate the blocking behaviour in raw_read(). This can eliminate creating thread for reading as well as calling CancelSynchronousIo(). Note that setting FILE_SYNCHRONOUS_IO_NONALERT only for read pipe seems to be enough for C# programs. What do you think of this implementation? -- Takashi Yano --Multipart=_Wed__10_Nov_2021_17_30_03_+0900_GokT1XvZzC2Vs_h3 Content-Type: application/octet-stream; name="pipe20211110.patch" Content-Disposition: attachment; filename="pipe20211110.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcGlwZS5jYyBiL3dpbnN1cC9jeWd3 aW4vZmhhbmRsZXJfcGlwZS5jYwppbmRleCAxMzczMTQzN2UuLjQxMTIxMzk0ZSAxMDA2NDQKLS0t IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9waXBlLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZmhh bmRsZXJfcGlwZS5jYwpAQCAtOTAsNyArOTAsMTAgQEAgZmhhbmRsZXJfcGlwZTo6aW5pdCAoSEFO RExFIGYsIERXT1JEIGEsIG1vZGVfdCBtb2RlLCBpbnQ2NF90IHVuaXFfaWQpCiAgIHNldF9pbm8g KHVuaXFfaWQpOwogICBzZXRfdW5pcXVlX2lkICh1bmlxX2lkIHwgISEobW9kZSAmIEdFTkVSSUNf V1JJVEUpKTsKICAgaWYgKG9wZW5lZF9wcm9wZXJseSkKLSAgICBzZXRfcGlwZV9ub25fYmxvY2tp bmcgKGlzX25vbmJsb2NraW5nICgpKTsKKyAgICAvKiBTZXQgcmVhZCBwaXBlIGFsd2F5cyBub25i bG9ja2luZyB0byBhbGxvdyBzaWduYWwgaGFuZGxpbmcKKyAgICAgICBldmVuIHdpdGggRklMRV9T WU5DSFJPTk9VU19JT19OT05BTEVSVC4gKi8KKyAgICBzZXRfcGlwZV9ub25fYmxvY2tpbmcgKGdl dF9kZXZpY2UgKCkgPT0gRkhfUElQRVIgPworCQkJICAgdHJ1ZSA6IGlzX25vbmJsb2NraW5nICgp KTsKICAgcmV0dXJuIDE7CiB9CiAKQEAgLTI2NCw5ICsyNjcsOSBAQCBmaGFuZGxlcl9waXBlOjpy ZWxlYXNlX3NlbGVjdF9zZW0gKGNvbnN0IGNoYXIgKmZyb20pCiAgIGlmIChnZXRfZGV2ICgpID09 IEZIX1BJUEVSKSAvKiBOdW1iZXIgb2Ygc2VsZWN0KCkgYW5kIHdyaXRlciAqLwogICAgIG5fcmVs ZWFzZSA9IGdldF9vYmpfaGFuZGxlX2NvdW50IChzZWxlY3Rfc2VtKQogICAgICAgLSBnZXRfb2Jq X2hhbmRsZV9jb3VudCAocmVhZF9tdHgpOwotICBlbHNlIC8qIE51bWJlciBvZiBzZWxlY3QoKSBj YWxsICovCisgIGVsc2UgLyogTnVtYmVyIG9mIHNlbGVjdCgpIGNhbGwgYW5kIHJlYWRlciAqLwog ICAgIG5fcmVsZWFzZSA9IGdldF9vYmpfaGFuZGxlX2NvdW50IChzZWxlY3Rfc2VtKQotICAgICAg LSBnZXRfb2JqX2hhbmRsZV9jb3VudCAoaGRsX2NudF9tdHgpOworICAgICAgLSBnZXRfb2JqX2hh bmRsZV9jb3VudCAoZ2V0X2hhbmRsZSAoKSk7CiAgIGRlYnVnX3ByaW50ZigiJXMoJXMpIHJlbGVh c2UgJWQiLCBmcm9tLAogCSAgICAgICBnZXRfZGV2ICgpID09IEZIX1BJUEVSID8gIlBJUEVSIiA6 ICJQSVBFVyIsIG5fcmVsZWFzZSk7CiAgIGlmIChuX3JlbGVhc2UpCkBAIC0yNzksMTkgKzI4Miwx MCBAQCBmaGFuZGxlcl9waXBlOjpyYXdfcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbikKICAg c2l6ZV90IG5ieXRlcyA9IDA7CiAgIE5UU1RBVFVTIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOwog ICBJT19TVEFUVVNfQkxPQ0sgaW87Ci0gIEhBTkRMRSBldnQgPSBOVUxMOwogCiAgIGlmICghbGVu KQogICAgIHJldHVybjsKIAotICAvKiBDcmVhdGUgYSB3YWl0IGV2ZW50IGlmIHdlJ3JlIGluIGJs b2NraW5nIG1vZGUuICovCi0gIGlmICghaXNfbm9uYmxvY2tpbmcgKCkgJiYgIShldnQgPSBDcmVh dGVFdmVudCAoTlVMTCwgZmFsc2UsIGZhbHNlLCBOVUxMKSkpCi0gICAgewotICAgICAgX19zZXRl cnJubyAoKTsKLSAgICAgIGxlbiA9IChzaXplX3QpIC0xOwotICAgICAgcmV0dXJuOwotICAgIH0K LQogICBEV09SRCB0aW1lb3V0ID0gaXNfbm9uYmxvY2tpbmcgKCkgPyAwIDogSU5GSU5JVEU7CiAg IERXT1JEIHdhaXRyZXQgPSBjeWd3YWl0IChyZWFkX210eCwgdGltZW91dCk7CiAgIHN3aXRjaCAo d2FpdHJldCkKQEAgLTMxOSw0OCArMzEzLDIzIEBAIGZoYW5kbGVyX3BpcGU6OnJhd19yZWFkICh2 b2lkICpwdHIsIHNpemVfdCYgbGVuKQogICAgIHsKICAgICAgIFVMT05HX1BUUiBuYnl0ZXNfbm93 ID0gMDsKICAgICAgIFVMT05HIGxlbjEgPSAoVUxPTkcpIChsZW4gLSBuYnl0ZXMpOwotICAgICAg d2FpdHJldCA9IFdBSVRfT0JKRUNUXzA7CiAKLSAgICAgIGlmIChldnQpCi0JUmVzZXRFdmVudCAo ZXZ0KTsKICAgICAgIEZJTEVfUElQRV9MT0NBTF9JTkZPUk1BVElPTiBmcGxpOwogICAgICAgc3Rh dHVzID0gTnRRdWVyeUluZm9ybWF0aW9uRmlsZSAoZ2V0X2hhbmRsZSAoKSwgJmlvLAogCQkJCSAg ICAgICAmZnBsaSwgc2l6ZW9mIChmcGxpKSwKIAkJCQkgICAgICAgRmlsZVBpcGVMb2NhbEluZm9y bWF0aW9uKTsKICAgICAgIGlmIChOVF9TVUNDRVNTIChzdGF0dXMpKQogCXsKLQlpZiAoZnBsaS5S ZWFkRGF0YUF2YWlsYWJsZSA9PSAwICYmIG5ieXRlcyAhPSAwKQotCSAgYnJlYWs7CisJICBpZiAo ZnBsaS5SZWFkRGF0YUF2YWlsYWJsZSA9PSAwICYmIG5ieXRlcyAhPSAwKQorCSAgICBicmVhazsK IAl9CiAgICAgICBlbHNlIGlmIChuYnl0ZXMgIT0gMCkKIAlicmVhazsKLSAgICAgIHN0YXR1cyA9 IE50UmVhZEZpbGUgKGdldF9oYW5kbGUgKCksIGV2dCwgTlVMTCwgTlVMTCwgJmlvLCBwdHIsCisg ICAgICBzdGF0dXMgPSBOdFJlYWRGaWxlIChnZXRfaGFuZGxlICgpLCBOVUxMLCBOVUxMLCBOVUxM LCAmaW8sIHB0ciwKIAkJCSAgIGxlbjEsIE5VTEwsIE5VTEwpOwotICAgICAgaWYgKGV2dCAmJiBz dGF0dXMgPT0gU1RBVFVTX1BFTkRJTkcpCi0JewotCSAgd2FpdHJldCA9IGN5Z3dhaXQgKGV2dCwg SU5GSU5JVEUsIGN3X2NhbmNlbCB8IGN3X3NpZyk7Ci0JICAvKiBJZiBpby5TdGF0dXMgaXMgU1RB VFVTX0NBTkNFTExFRCBhZnRlciBDYW5jZWxJbywgSU8gaGFzIGFjdHVhbGx5Ci0JICAgICBiZWVu IGNhbmNlbGxlZCBhbmQgaW8uSW5mb3JtYXRpb24gY29udGFpbnMgdGhlIG51bWJlciBvZiBieXRl cwotCSAgICAgcHJvY2Vzc2VkIHNvIGZhci4KLQkgICAgIE90aGVyd2lzZSBJTyBoYXMgYmVlbiBm aW5pc2hlZCByZWd1bGFyeSBhbmQgaW8uU3RhdHVzIGNvbnRhaW5zCi0JICAgICB2YWxpZCBzdWNj ZXNzIG9yIGVycm9yIGluZm9ybWF0aW9uLiAqLwotCSAgQ2FuY2VsSW8gKGdldF9oYW5kbGUgKCkp OwotCSAgaWYgKHdhaXRyZXQgPT0gV0FJVF9TSUdOQUxFRCAmJiBpby5TdGF0dXMgIT0gU1RBVFVT X0NBTkNFTExFRCkKLQkgICAgd2FpdHJldCA9IFdBSVRfT0JKRUNUXzA7Ci0KLQkgIGlmICh3YWl0 cmV0ID09IFdBSVRfQ0FOQ0VMRUQpCi0JICAgIHN0YXR1cyA9IFNUQVRVU19USFJFQURfQ0FOQ0VM RUQ7Ci0JICBlbHNlIGlmICh3YWl0cmV0ID09IFdBSVRfU0lHTkFMRUQpCi0JICAgIHN0YXR1cyA9 IFNUQVRVU19USFJFQURfU0lHTkFMRUQ7Ci0JICBlbHNlCi0JICAgIHN0YXR1cyA9IGlvLlN0YXR1 czsKLQl9CiAgICAgICBpZiAoaXNjbG9zZWQgKCkpICAvKiBBIHNpZ25hbCBoYW5kbGVyIG1pZ2h0 IGhhdmUgY2xvc2VkIHRoZSBmZC4gKi8KIAl7Ci0JICBpZiAod2FpdHJldCA9PSBXQUlUX09CSkVD VF8wKQotCSAgICBzZXRfZXJybm8gKEVCQURGKTsKLQkgIGVsc2UKLQkgICAgX19zZXRlcnJubyAo KTsKKwkgIHNldF9lcnJubyAoRUJBREYpOwogCSAgbmJ5dGVzID0gKHNpemVfdCkgLTE7CiAJfQog ICAgICAgZWxzZSBpZiAoTlRfU1VDQ0VTUyAoc3RhdHVzKQpAQCAtMzkzLDcgKzM2MiwxNiBAQCBm aGFuZGxlcl9waXBlOjpyYXdfcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbikKIAkJICBuYnl0 ZXMgPSAoc2l6ZV90KSAtMTsKIAkJICBicmVhazsKIAkJfQotCSAgICAgIGZhbGx0aHJvdWdoOwor CSAgICAgIHdhaXRyZXQgPSBjeWd3YWl0IChzZWxlY3Rfc2VtLCAxKTsKKwkgICAgICBpZiAod2Fp dHJldCA9PSBXQUlUX0NBTkNFTEVEKQorCQlwdGhyZWFkOjpzdGF0aWNfY2FuY2VsX3NlbGYgKCk7 CisJICAgICAgZWxzZSBpZiAod2FpdHJldCA9PSBXQUlUX1NJR05BTEVEKQorCQl7CisJCSAgc2V0 X2Vycm5vIChFSU5UUik7CisJCSAgbmJ5dGVzID0gKHNpemVfdCkgLTE7CisJCSAgYnJlYWs7CisJ CX0KKwkgICAgICBjb250aW51ZTsKIAkgICAgZGVmYXVsdDoKIAkgICAgICBfX3NldGVycm5vX2Zy b21fbnRfc3RhdHVzIChzdGF0dXMpOwogCSAgICAgIG5ieXRlcyA9IChzaXplX3QpIC0xOwpAQCAt NDA2LDggKzM4NCw2IEBAIGZoYW5kbGVyX3BpcGU6OnJhd19yZWFkICh2b2lkICpwdHIsIHNpemVf dCYgbGVuKQogCWJyZWFrOwogICAgIH0KICAgUmVsZWFzZU11dGV4IChyZWFkX210eCk7Ci0gIGlm IChldnQpCi0gICAgQ2xvc2VIYW5kbGUgKGV2dCk7CiAgIGlmIChzdGF0dXMgPT0gU1RBVFVTX1RI UkVBRF9TSUdOQUxFRCAmJiBuYnl0ZXMgPT0gMCkKICAgICB7CiAgICAgICBzZXRfZXJybm8gKEVJ TlRSKTsKQEAgLTk5Myw5ICs5NjksMTIgQEAgbnRfY3JlYXRlIChMUFNFQ1VSSVRZX0FUVFJJQlVU RVMgc2FfcHRyLCBIQU5ETEUgJnIsIEhBTkRMRSAmdywKIAkJCQkgIG5wZnNoLCBzYV9wdHItPmxw U2VjdXJpdHlEZXNjcmlwdG9yKTsKIAogICAgICAgdGltZW91dC5RdWFkUGFydCA9IC01MDAwMDA7 CisgICAgICAvKiBTZXQgRklMRV9TWU5DSFJPTk9VU19JT19OT05BTEVSVCBmbGFnIHNvIHRoYXQg bmF0aXZlCisJIEMjIHByb2dyYW1zIHdvcmsgd2l0aCBjeWd3aW4gcGlwZS4gKi8KICAgICAgIHN0 YXR1cyA9IE50Q3JlYXRlTmFtZWRQaXBlRmlsZSAoJnIsIGFjY2VzcywgJmF0dHIsICZpbywKIAkJ CQkgICAgICBGSUxFX1NIQVJFX1JFQUQgfCBGSUxFX1NIQVJFX1dSSVRFLAotCQkJCSAgICAgIEZJ TEVfQ1JFQVRFLCAwLCBwaXBlX3R5cGUsCisJCQkJICAgICAgRklMRV9DUkVBVEUsCisJCQkJICAg ICAgRklMRV9TWU5DSFJPTk9VU19JT19OT05BTEVSVCwgcGlwZV90eXBlLAogCQkJCSAgICAgIEZJ TEVfUElQRV9CWVRFX1NUUkVBTV9NT0RFLAogCQkJCSAgICAgIDAsIDEsIHBzaXplLCBwc2l6ZSwg JnRpbWVvdXQpOwogCkBAIC0xMTA3LDcgKzEwODYsOSBAQCBmaGFuZGxlcl9waXBlOjpmY250bCAo aW50IGNtZCwgaW50cHRyX3QgYXJnKQogICBjb25zdCBib29sIHdhc19ub25ibG9ja2luZyA9IGlz X25vbmJsb2NraW5nICgpOwogICBpbnQgcmVzID0gZmhhbmRsZXJfYmFzZTo6ZmNudGwgKGNtZCwg YXJnKTsKICAgY29uc3QgYm9vbCBub3dfbm9uYmxvY2tpbmcgPSBpc19ub25ibG9ja2luZyAoKTsK LSAgaWYgKG5vd19ub25ibG9ja2luZyAhPSB3YXNfbm9uYmxvY2tpbmcpCisgIC8qIERvIG5vdCBz ZXQgYmxvY2tpbmcgbW9kZSBmb3IgcmVhZCBwaXBlIHRvIGFsbG93IHNpZ25hbCBoYW5kbGluZwor ICAgICBldmVuIHdpdGggRklMRV9TWU5DSFJPTk9VU19JT19OT05BTEVSVC4gKi8KKyAgaWYgKG5v d19ub25ibG9ja2luZyAhPSB3YXNfbm9uYmxvY2tpbmcgJiYgZ2V0X2RldmljZSAoKSAhPSBGSF9Q SVBFUikKICAgICBzZXRfcGlwZV9ub25fYmxvY2tpbmcgKG5vd19ub25ibG9ja2luZyk7CiAgIHJl dHVybiByZXM7CiB9CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL2dsb2JhbHMuY2MgYi93aW5z dXAvY3lnd2luL2dsb2JhbHMuY2MKaW5kZXggNDhmYjMxMmRlLi5hYzVhZDAzMDcgMTAwNjQ0Ci0t LSBhL3dpbnN1cC9jeWd3aW4vZ2xvYmFscy5jYworKysgYi93aW5zdXAvY3lnd2luL2dsb2JhbHMu Y2MKQEAgLTY5LDcgKzY5LDcgQEAgaW50IE5PX0NPUFkgZHluYW1pY2FsbHlfbG9hZGVkOwogLyog U29tZSBDWUdXSU4gZW52aXJvbm1lbnQgdmFyaWFibGUgdmFyaWFibGVzLiAqLwogYm9vbCBhbGxv d19nbG9iID0gdHJ1ZTsKIGJvb2wgaWdub3JlX2Nhc2Vfd2l0aF9nbG9iOwotYm9vbCBwaXBlX2J5 dGU7Citib29sIHBpcGVfYnl0ZSA9IHRydWU7IC8qIERlZmF1bHQgdG8gYnl0ZSBtb2RlIHNvIHRo YXQgQyMgcHJvZ3JhbXMgd29yay4gKi8KIGJvb2wgcmVzZXRfY29tOwogYm9vbCB3aW5jbWRsbjsK IHdpbnN5bV90IGFsbG93X3dpbnN5bWxpbmtzID0gV1NZTV9kZWZhdWx0Owo= --Multipart=_Wed__10_Nov_2021_17_30_03_+0900_GokT1XvZzC2Vs_h3--