From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from conssluserg-06.nifty.com (conssluserg-06.nifty.com [210.131.2.91]) by sourceware.org (Postfix) with ESMTPS id 3584B3858406 for ; Sun, 12 Sep 2021 08:48:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3584B3858406 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-06.nifty.com with ESMTP id 18C8mbVp031423 for ; Sun, 12 Sep 2021 17:48:37 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conssluserg-06.nifty.com 18C8mbVp031423 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.ne.jp; s=dec2015msa; t=1631436517; bh=ljZGfOZSJ/0X8NdHLk15y6P2+Xdxr1ECINEkiXDxOnM=; h=Date:From:To:Subject:In-Reply-To:References:From; b=AV5mjjb2P1aZnrZt5z1lvyArwypkKMh80StNEuAFLyQmBH9LVnglKsSL1gvJusHvK pIGPLnyZt/+DkF1d3qBqVWXv9dBgAb8WlO8SLvLFGPTJypYE2FHCsWIcN7U0wvnDAz l6nFRKSwciRdAQRO9dJdyCoLN9iTQgWO10fjdvyTpzOXhiXzMwb0YX/JHawoL9SILw P+OA/qBgv3peYD0iNjQ7ozkSIc9e8Cl5H1KxGb+RVb5BfiIrBMDg3DKmukfpL5SALB aDWpVyrAl7ESo0hyYfC3Kxm8C4H5bjOTZnIIN18pAOwm/sl888AOg+PQ2rTZ0hBBUI qtzp7fgdO7VvQ== X-Nifty-SrcIP: [110.4.221.123] Date: Sun, 12 Sep 2021 17:48:49 +0900 From: Takashi Yano To: cygwin-developers@cygwin.com Subject: Re: cygrunsrv + sshd + rsync = 20 times too slow -- throttled? Message-Id: <20210912174849.3d38107568065a95aeb19c7c@nifty.ne.jp> In-Reply-To: <695ce1f4-4f7d-f3f3-6dd3-087467d67b28@cornell.edu> References: <41A583E1-C8E7-42AB-9F24-EEC33A41EC60@house.org> <20210825201845.07b6400b79dc5558a7761efe@nifty.ne.jp> <20210826062934.54f2f2216021c095bb7ba13b@nifty.ne.jp> <3b560051-ab27-f392-ca4b-d1fd9b5733b0@cornell.edu> <20210827202440.47706fc2fc07c5e9a1bc0047@nifty.ne.jp> <20210907122631.65452be8d021ec72259431d5@nifty.ne.jp> <20210909124115.555c6be15d675500617d284a@nifty.ne.jp> <20210909170549.506cc3c1f6029d904fece6dd@nifty.ne.jp> <20210909211940.51ef391e27d43f0421962cb8@nifty.ne.jp> <20210909214246.cd1ff1a3062fea27e51ad4ae@nifty.ne.jp> <33386baf-3b2d-d57f-2ad3-1bd328ed7935@cornell.edu> <20210911075734.aaf37697ba7db2ad14d911a3@nifty.ne.jp> <20210911113517.f74fc3ac1971bbf04c7a9bd1@nifty.ne.jp> <695ce1f4-4f7d-f3f3-6dd3-087467d67b28@cornell.edu> X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.30; i686-pc-mingw32) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Sun__12_Sep_2021_17_48_49_+0900_XXFFp20IojAFW3sy" X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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: Sun, 12 Sep 2021 08:49:00 -0000 This is a multi-part message in MIME format. --Multipart=_Sun__12_Sep_2021_17_48_49_+0900_XXFFp20IojAFW3sy Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Sat, 11 Sep 2021 09:12:02 -0400 Ken Brown wrote: > On 9/10/2021 10:35 PM, Takashi Yano wrote: > > On Fri, 10 Sep 2021 22:17:21 -0400 > > Ken Brown wrote: > >> On 9/10/2021 6:57 PM, Takashi Yano wrote: > >>> On Fri, 10 Sep 2021 11:17:58 -0400 > >>> Ken Brown wrote: > >>>> I've rerun your test with the latest version, and the test results are similar. > >>>> I've also run a suite of fifo tests that I've accumulated, and they all pass > >>>> also, so I pushed your patch. > >>>> > >>>> I think we're in pretty good shape now. The only detail remaining, AFAIK, is > >>>> how to best avoid a deadlock if the pipe has been created by a non-Cygwin > >>>> process. I've proposed a timeout, but maybe there's a better idea. > >>> > >>> I am not pretty sure what is the problem, but is not the following > >>> patch enough? > >>> > >>> diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h > >>> index d309be2f7..13fba9a14 100644 > >>> --- a/winsup/cygwin/fhandler.h > >>> +++ b/winsup/cygwin/fhandler.h > >>> @@ -1205,6 +1205,7 @@ public: > >>> select_record *select_except (select_stuff *); > >>> char *get_proc_fd_name (char *buf); > >>> int open (int flags, mode_t mode = 0); > >>> + void open_setup (int flags); > >>> void fixup_after_fork (HANDLE); > >>> int dup (fhandler_base *child, int); > >>> int close (); > >>> diff --git a/winsup/cygwin/fhandler_pipe.cc b/winsup/cygwin/fhandler_pipe.cc > >>> index 6994a5dce..d84e6ad84 100644 > >>> --- a/winsup/cygwin/fhandler_pipe.cc > >>> +++ b/winsup/cygwin/fhandler_pipe.cc > >>> @@ -191,6 +191,17 @@ out: > >>> return 0; > >>> } > >>> > >>> +void > >>> +fhandler_pipe::open_setup (int flags) > >>> +{ > >>> + fhandler_base::open_setup (flags); > >>> + if (get_dev () == FH_PIPER && !read_mtx) > >>> + { > >>> + SECURITY_ATTRIBUTES *sa = sec_none_cloexec (flags); > >>> + read_mtx = CreateMutexW (sa, FALSE, NULL); > >>> + } > >>> +} > >>> + > >>> off_t > >>> fhandler_pipe::lseek (off_t offset, int whence) > >>> { > >>> > >>> > >>> AFAIK, another problem remaining is: > >>> > >>> On Mon, 6 Sep 2021 14:49:55 +0200 > >>> Corinna Vinschen wrote: > >>>> - What about calling select for writing on pipes read by non-Cygwin > >>>> processes? In that case, we still can't rely on WriteQuotaAvailable, > >>>> just as before. > >> > >> This is the problem I was talking about. In this case the non-Cygwin process > >> might have a large pending read, so that the Cygwin process calling select on > >> the write side will see WriteQuotaAvailable == 0. This could lead to a deadlock > >> with the Cygwin process waiting for write ready while the non-Cygwin process is > >> blocked trying to read. > > > > Then, the above patch is for another issue. > > The problem happes when: > > 1) Start command prompt. > > 2) Run 'echo AAAAAAAAAAAA | \cygwin64\bin\cat > > This causes hang up in cat. In this case, pipe is created by cmd.exe. > > Therefore, read_mtx is not created. > > Confirmed, and your patch fixes it. Maybe you should check for error in the > call to CreateMutexW and print a debug message in that case. > > >> My suggestion is that we impose a timeout in this situation, after which select > >> reports write ready. > > > > Keeping read handle in write pipe (Corinna's query_hdl) causes problem > > that write side cannot detect close on read side. > > Is it possible to open read handle temporally when pipe_data_available() > > is called? > > That would be nice, but I have no idea how you could do that. Hmm. Then, what about PoC code attached? This returns to Corinna's query_hdl, and counts read/write handles to detect closing reader side. If the number of read handles is equal to number of write handles, only the pairs of write handle and query_hdl are alive. So, read pipe supposed to be closed. This patch depends another patch I posted a few hours ago. -- Takashi Yano --Multipart=_Sun__12_Sep_2021_17_48_49_+0900_XXFFp20IojAFW3sy Content-Type: application/octet-stream; name="0001-Cygwin-pipe-Return-to-query_hdl-strategy-with-counti.patch" Content-Disposition: attachment; filename="0001-Cygwin-pipe-Return-to-query_hdl-strategy-with-counti.patch" Content-Transfer-Encoding: base64 RnJvbSAwNTBhMWUyMDRkZDA3NTNkMzQ5OGI3ZjJlODRkZmY1ZTZjNzcwNGQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYWthc2hpIFlhbm8gPHRha2FzaGkueWFub0BuaWZ0eS5uZS5q cD4KRGF0ZTogU3VuLCAxMiBTZXAgMjAyMSAxNzo0MjowMyArMDkwMApTdWJqZWN0OiBbUEFUQ0hd IEN5Z3dpbjogcGlwZTogUmV0dXJuIHRvIHF1ZXJ5X2hkbCBzdHJhdGVneSB3aXRoIGNvdW50aW5n IHIvdwogaGFuZGxlcy4KCi0tLQogd2luc3VwL2N5Z3dpbi9maGFuZGxlci5oICAgICAgIHwgIDUg KysKIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcGlwZS5jYyB8IDkxICsrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0KIHdpbnN1cC9jeWd3aW4vc2VsZWN0LmNjICAgICAgICB8IDUwICsr KysrKysrKysrKysrKystLS0KIHdpbnN1cC9jeWd3aW4vc3Bhd24uY2MgICAgICAgICB8ICAyICsK IDQgZmlsZXMgY2hhbmdlZCwgMTEyIGluc2VydGlvbnMoKyksIDM2IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXIuaCBiL3dpbnN1cC9jeWd3aW4vZmhhbmRs ZXIuaAppbmRleCAxM2ZiYTlhMTQuLmYwOWFmMmMzNyAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dp bi9maGFuZGxlci5oCisrKyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXIuaApAQCAtMTE3NiwxMCAr MTE3NiwxNSBAQCBjbGFzcyBmaGFuZGxlcl9waXBlX2ZpZm86IHB1YmxpYyBmaGFuZGxlcl9iYXNl CiB7CiAgcHJvdGVjdGVkOgogICBzaXplX3QgcGlwZV9idWZfc2l6ZTsKKyAgSEFORExFIHF1ZXJ5 X2hkbDsKIAogIHB1YmxpYzoKICAgZmhhbmRsZXJfcGlwZV9maWZvICgpOwogCisgIEhBTkRMRSBn ZXRfcXVlcnlfaGFuZGxlICgpIGNvbnN0IHsgcmV0dXJuIHF1ZXJ5X2hkbDsgfQorICB2b2lkIGNs b3NlX3F1ZXJ5X2hhbmRsZSAoKSB7IENsb3NlSGFuZGxlIChxdWVyeV9oZGwpOyBxdWVyeV9oZGwg PSBOVUxMOyB9CisgIGJvb2wgcmVhZGVyX2Nsb3NlZCAoKTsKKwogICBzc2l6ZV90IF9fcmVnMyBy YXdfd3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbik7CiAKIH07CmRpZmYgLS1naXQg YS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3BpcGUuY2MgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVy X3BpcGUuY2MKaW5kZXggOWI0MjU1Y2ZkLi4yODE4NDIxZWMgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9j eWd3aW4vZmhhbmRsZXJfcGlwZS5jYworKysgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3BpcGUu Y2MKQEAgLTU2LDYgKzU2LDggQEAgZmhhbmRsZXJfcGlwZTo6c2V0X3BpcGVfbm9uX2Jsb2NraW5n IChib29sIG5vbmJsb2NraW5nKQogICBmcGkuUmVhZE1vZGUgPSBGSUxFX1BJUEVfQllURV9TVFJF QU1fTU9ERTsKICAgZnBpLkNvbXBsZXRpb25Nb2RlID0gbm9uYmxvY2tpbmcgPyBGSUxFX1BJUEVf Q09NUExFVEVfT1BFUkFUSU9OCiAgICAgOiBGSUxFX1BJUEVfUVVFVUVfT1BFUkFUSU9OOworICBp ZiAocXVlcnlfaGRsKQorICAgIGZwaS5Db21wbGV0aW9uTW9kZSA9IEZJTEVfUElQRV9DT01QTEVU RV9PUEVSQVRJT047CiAgIHN0YXR1cyA9IE50U2V0SW5mb3JtYXRpb25GaWxlIChnZXRfaGFuZGxl ICgpLCAmaW8sICZmcGksIHNpemVvZiBmcGksCiAJCQkJIEZpbGVQaXBlSW5mb3JtYXRpb24pOwog ICBpZiAoIU5UX1NVQ0NFU1MgKHN0YXR1cykpCkBAIC0yMDIsNiArMjA0LDggQEAgZmhhbmRsZXJf cGlwZTo6b3Blbl9zZXR1cCAoaW50IGZsYWdzKQogICAgICAgaWYgKCFyZWFkX210eCkKIAlkZWJ1 Z19wcmludGYgKCJDcmVhdGVNdXRleCBmYWlsZWQ6ICVFIik7CiAgICAgfQorICBpZiAoZ2V0X2Rl diAoKSA9PSBGSF9QSVBFVyAmJiAhcXVlcnlfaGRsKQorICAgIHNldF9waXBlX25vbl9ibG9ja2lu ZyAoaXNfbm9uYmxvY2tpbmcgKCkpOwogfQogCiBvZmZfdApAQCAtMjY4LDM5ICsyNzIsMTEgQEAg ZmhhbmRsZXJfcGlwZTo6cmF3X3JlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pCiAgIHdoaWxl IChuYnl0ZXMgPCBsZW4pCiAgICAgewogICAgICAgVUxPTkdfUFRSIG5ieXRlc19ub3cgPSAwOwot ICAgICAgc2l6ZV90IGxlZnQgPSBsZW4gLSBuYnl0ZXM7Ci0gICAgICBVTE9ORyBsZW4xID0gKFVM T05HKSBsZWZ0OworICAgICAgVUxPTkcgbGVuMSA9IChVTE9ORykgKGxlbiAtIG5ieXRlcyk7CiAg ICAgICB3YWl0cmV0ID0gV0FJVF9PQkpFQ1RfMDsKIAogICAgICAgaWYgKGV2dCkKIAlSZXNldEV2 ZW50IChldnQpOwotICAgICAgaWYgKCFpc19ub25ibG9ja2luZyAoKSkKLQl7Ci0JICBGSUxFX1BJ UEVfTE9DQUxfSU5GT1JNQVRJT04gZnBsaTsKLQotCSAgLyogSWYgdGhlIHBpcGUgaXMgZW1wdHks IGRvbid0IHJlcXVlc3QgbW9yZSBieXRlcyB0aGFuIHBpcGUKLQkgICAgIGJ1ZmZlciBzaXplIC0g MS4gUGVuZGluZyByZWFkIGxvd2VycyBXcml0ZVF1b3RhQXZhaWxhYmxlIG9uCi0JICAgICB0aGUg d3JpdGUgc2lkZSBhbmQgdGh1cyBhZmZlY3RzIHNlbGVjdCdzIGFiaWxpdHkgdG8gcmV0dXJuCi0J ICAgICBtb3JlIG9yIGxlc3MgcmVsaWFibGUgaW5mbyB3aGV0aGVyIGEgd3JpdGUgc3VjY2VlZHMg b3Igbm90LiAqLwotCSAgVUxPTkcgY2h1bmsgPSBwaXBlX2J1Zl9zaXplIC0gMTsKLQkgIHN0YXR1 cyA9IE50UXVlcnlJbmZvcm1hdGlvbkZpbGUgKGdldF9oYW5kbGUgKCksICZpbywKLQkJCQkJICAg JmZwbGksIHNpemVvZiAoZnBsaSksCi0JCQkJCSAgIEZpbGVQaXBlTG9jYWxJbmZvcm1hdGlvbik7 Ci0JICBpZiAoTlRfU1VDQ0VTUyAoc3RhdHVzKSkKLQkgICAgewotCSAgICAgIGlmIChmcGxpLlJl YWREYXRhQXZhaWxhYmxlID4gMCkKLQkJY2h1bmsgPSBsZWZ0OwotCSAgICAgIGVsc2UgaWYgKG5i eXRlcyAhPSAwKQotCQlicmVhazsKLQkgICAgICBlbHNlCi0JCWNodW5rID0gZnBsaS5JbmJvdW5k UXVvdGEgLSAxOwotCSAgICB9Ci0JICBlbHNlIGlmIChuYnl0ZXMgIT0gMCkKLQkgICAgYnJlYWs7 Ci0KLQkgIGlmIChsZW4xID4gY2h1bmspCi0JICAgIGxlbjEgPSBjaHVuazsKLQl9CiAgICAgICBz dGF0dXMgPSBOdFJlYWRGaWxlIChnZXRfaGFuZGxlICgpLCBldnQsIE5VTEwsIE5VTEwsICZpbywg cHRyLAogCQkJICAgbGVuMSwgTlVMTCwgTlVMTCk7CiAgICAgICBpZiAoZXZ0ICYmIHN0YXR1cyA9 PSBTVEFUVVNfUEVORElORykKQEAgLTM4NSw2ICszNjEsMTYgQEAgZmhhbmRsZXJfcGlwZTo6cmF3 X3JlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pCiAgIGxlbiA9IG5ieXRlczsKIH0KIAorYm9v bAorZmhhbmRsZXJfcGlwZV9maWZvOjpyZWFkZXJfY2xvc2VkICgpCit7CisgIGlmICghcXVlcnlf aGRsKQorICAgIHJldHVybiBmYWxzZTsKKyAgaW50IG5fcmVhZGVyID0gZ2V0X29ial9oYW5kbGVf Y291bnQgKHF1ZXJ5X2hkbCk7CisgIGludCBuX3dyaXRlciA9IGdldF9vYmpfaGFuZGxlX2NvdW50 IChnZXRfaGFuZGxlICgpKTsKKyAgcmV0dXJuIG5fcmVhZGVyID09IG5fd3JpdGVyOworfQorCiBz c2l6ZV90IF9fcmVnMwogZmhhbmRsZXJfcGlwZV9maWZvOjpyYXdfd3JpdGUgKGNvbnN0IHZvaWQg KnB0ciwgc2l6ZV90IGxlbikKIHsKQEAgLTQ5Myw3ICs0NzksMjAgQEAgZmhhbmRsZXJfcGlwZV9m aWZvOjpyYXdfd3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIAkJCSAgICAgIGdl dF9vYmpfaGFuZGxlX2NvdW50IChzZWxlY3Rfc2VtKSwgTlVMTCk7CiAJICAvKiAwIGJ5dGVzIHJl dHVybmVkPyAgRUFHQUlOLiAgU2VlIGFib3ZlLiAqLwogCSAgaWYgKE5UX1NVQ0NFU1MgKHN0YXR1 cykgJiYgbmJ5dGVzID09IDApCi0JICAgIHNldF9lcnJubyAoRUFHQUlOKTsKKwkgICAgeworCSAg ICAgIGlmIChyZWFkZXJfY2xvc2VkICgpKQorCQl7CisJCSAgc2V0X2Vycm5vIChFUElQRSk7CisJ CSAgcmFpc2UgKFNJR1BJUEUpOworCQl9CisJICAgICAgZWxzZSBpZiAoaXNfbm9uYmxvY2tpbmcg KCkpCisJCXNldF9lcnJubyAoRUFHQUlOKTsKKwkgICAgICBlbHNlCisJCXsKKwkJICBjeWd3YWl0 IChzZWxlY3Rfc2VtLCAxMCk7CisJCSAgY29udGludWU7CisJCX0KKwkgICAgfQogCX0KICAgICAg IGVsc2UgaWYgKFNUQVRVU19QSVBFX0lTX0NMT1NFRCAoc3RhdHVzKSkKIAl7CkBAIC01MjIsNiAr NTIxLDEwIEBAIGZoYW5kbGVyX3BpcGU6OmZpeHVwX2FmdGVyX2ZvcmsgKEhBTkRMRSBwYXJlbnQp CiAgICAgZm9ya19maXh1cCAocGFyZW50LCByZWFkX210eCwgInJlYWRfbXR4Iik7CiAgIGlmIChz ZWxlY3Rfc2VtKQogICAgIGZvcmtfZml4dXAgKHBhcmVudCwgc2VsZWN0X3NlbSwgInNlbGVjdF9z ZW0iKTsKKyAgLyogRG8gbm90IGR1cGxpY2F0ZSBxdWVyeV9oZGwgaWYgaXQgaGFzIGJlZW4gYWxy ZWFkeSBpbnJoZXJpdGVkLiAqLworICBpZiAocXVlcnlfaGRsICYmICFnZXRfb2JqX2hhbmRsZV9j b3VudCAocXVlcnlfaGRsKSkKKyAgICBmb3JrX2ZpeHVwIChwYXJlbnQsIHF1ZXJ5X2hkbCwgInF1 ZXJ5X2hkbCIpOworCiAgIGZoYW5kbGVyX2Jhc2U6OmZpeHVwX2FmdGVyX2ZvcmsgKHBhcmVudCk7 CiB9CiAKQEAgLTU1Miw2ICs1NTUsMTUgQEAgZmhhbmRsZXJfcGlwZTo6ZHVwIChmaGFuZGxlcl9i YXNlICpjaGlsZCwgaW50IGZsYWdzKQogICAgICAgZnRwLT5jbG9zZSAoKTsKICAgICAgIHJlcyA9 IC0xOwogICAgIH0KKyAgZWxzZSBpZiAocXVlcnlfaGRsICYmCisJICAgIUR1cGxpY2F0ZUhhbmRs ZSAoR2V0Q3VycmVudFByb2Nlc3MgKCksIHF1ZXJ5X2hkbCwKKwkJCSAgICBHZXRDdXJyZW50UHJv Y2VzcyAoKSwgJmZ0cC0+cXVlcnlfaGRsLAorCQkJICAgIDAsICEoZmxhZ3MgJiBPX0NMT0VYRUMp LCBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MpKQorICAgIHsKKyAgICAgIF9fc2V0ZXJybm8gKCk7Cisg ICAgICBmdHAtPmNsb3NlICgpOworICAgICAgcmVzID0gLTE7CisgICAgfQogCiAgIGRlYnVnX3By aW50ZiAoInJlcyAlZCIsIHJlcyk7CiAgIHJldHVybiByZXM7CkBAIC01NjcsNiArNTc5LDggQEAg ZmhhbmRsZXJfcGlwZTo6Y2xvc2UgKCkKICAgICAgIFJlbGVhc2VTZW1hcGhvcmUgKHNlbGVjdF9z ZW0sIGdldF9vYmpfaGFuZGxlX2NvdW50IChzZWxlY3Rfc2VtKSwgTlVMTCk7CiAgICAgICBDbG9z ZUhhbmRsZSAoc2VsZWN0X3NlbSk7CiAgICAgfQorICBpZiAocXVlcnlfaGRsKQorICAgIENsb3Nl SGFuZGxlIChxdWVyeV9oZGwpOwogICByZXR1cm4gZmhhbmRsZXJfYmFzZTo6Y2xvc2UgKCk7CiB9 CiAKQEAgLTc5MSw2ICs4MDUsMjMgQEAgZmhhbmRsZXJfcGlwZTo6Y3JlYXRlIChmaGFuZGxlcl9w aXBlICpmaHNbMl0sIHVuc2lnbmVkIHBzaXplLCBpbnQgbW9kZSkKIAlEdXBsaWNhdGVIYW5kbGUg KEdldEN1cnJlbnRQcm9jZXNzICgpLCBmaHNbMF0tPnNlbGVjdF9zZW0sCiAJCQkgR2V0Q3VycmVu dFByb2Nlc3MgKCksICZmaHNbMV0tPnNlbGVjdF9zZW0sCiAJCQkgMCwgMSwgRFVQTElDQVRFX1NB TUVfQUNDRVNTKTsKKyAgICAgIGlmICghRHVwbGljYXRlSGFuZGxlIChHZXRDdXJyZW50UHJvY2Vz cyAoKSwgciwKKwkJCSAgICBHZXRDdXJyZW50UHJvY2VzcyAoKSwgJmZoc1sxXS0+cXVlcnlfaGRs LAorCQkJICAgIEdFTkVSSUNfUkVBRCwgIShtb2RlICYgT19DTE9FWEVDKSwgMCkpCisJeworCSAg Q2xvc2VIYW5kbGUgKGZoc1swXS0+c2VsZWN0X3NlbSk7CisJICBkZWxldGUgZmhzWzBdOworCSAg Q2xvc2VIYW5kbGUgKHIpOworCSAgQ2xvc2VIYW5kbGUgKGZoc1sxXS0+c2VsZWN0X3NlbSk7CisJ ICBkZWxldGUgZmhzWzFdOworCSAgQ2xvc2VIYW5kbGUgKHcpOworCX0KKyAgICAgIGVsc2UKKwl7 CisJICAvKiBDYWxsIHNldF9waXBlX25vbl9ibG9ja2luZygpIGFnYWluIGFmdGVyIGNyZWF0aW5n IHF1ZXJ5X2hkbC4gKi8KKwkgIGZoc1sxXS0+c2V0X3BpcGVfbm9uX2Jsb2NraW5nIChmaHNbMV0t PmlzX25vbmJsb2NraW5nICgpKTsKKwkgIHJlcyA9IDA7CisJfQogICAgIH0KIAogICBkZWJ1Z19w cmludGYgKCIlUiA9IHBpcGUoWyVwLCAlcF0sICVkLCAleSkiLCByZXMsIGZoc1swXSwgZmhzWzFd LCBwc2l6ZSwgbW9kZSk7CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL3NlbGVjdC5jYyBiL3dp bnN1cC9jeWd3aW4vc2VsZWN0LmNjCmluZGV4IDVlNTgzNDM0Yy4uYzU2OWEwNTljIDEwMDY0NAot LS0gYS93aW5zdXAvY3lnd2luL3NlbGVjdC5jYworKysgYi93aW5zdXAvY3lnd2luL3NlbGVjdC5j YwpAQCAtNjA4LDEyICs2MDgsNDMgQEAgcGlwZV9kYXRhX2F2YWlsYWJsZSAoaW50IGZkLCBmaGFu ZGxlcl9iYXNlICpmaCwgSEFORExFIGgsIGJvb2wgd3JpdGluZykKICAgICB9CiAgIGlmICh3cml0 aW5nKQogICAgIHsKLSAgICAgIC8qIFdyaXRlUXVvdGFBdmFpbGFibGUgaXMgZGVjcmVtZW50ZWQg YnkgdGhlIG51bWJlciBvZiBieXRlcyByZXF1ZXN0ZWQKLQkgYnkgYSBibG9ja2luZyByZWFkZXIg b24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIHBpcGUuICBDeWd3aW4gcmVhZGVycwotCSBhcmUgc2Vy aWFsaXplZCBhbmQgbmV2ZXIgcmVxdWVzdCBhIG51bWJlciBvZiBieXRlcyBlcXVpdmFsZW50IHRv IHRoZQotCSBmdWxsIGJ1ZmZlciBzaXplLiAgU28gV3JpdGVRdW90YUF2YWlsYWJsZSBpcyAwIG9u bHkgaWYgZWl0aGVyIHRoZQotCSByZWFkIGJ1ZmZlciBvbiB0aGUgb3RoZXIgc2lkZSBpcyByZWFs bHkgZnVsbCwgb3IgaWYgd2UgaGF2ZSBub24tQ3lnd2luCi0JIHJlYWRlcnMuICovCisgICAgICAv KiBJZiB0aGVyZSBpcyBhbnl0aGluZyBhdmFpbGFibGUgaW4gdGhlIHBpcGUgYnVmZmVyIHRoZW4g c2lnbmFsCisgICAgICAgIHRoYXQuICBUaGlzIG1lYW5zIHRoYXQgYSBwaXBlIGNvdWxkIHN0aWxs IGJsb2NrIHNpbmNlIHlvdSBjb3VsZAorICAgICAgICBiZSB0cnlpbmcgdG8gd3JpdGUgbW9yZSB0 byB0aGUgcGlwZSB0aGFuIGlzIGF2YWlsYWJsZSBpbiB0aGUKKyAgICAgICAgYnVmZmVyIGJ1dCB0 aGF0IGlzIHRoZSBoYXphcmQgb2Ygc2VsZWN0KCkuCisKKyAgICAgICAgTm90ZSB0aGF0IFdyaXRl UXVvdGFBdmFpbGFibGUgaXMgdW5yZWxpYWJsZS4KKworICAgICAgICBVc3VhbGx5IFdyaXRlUXVv dGFBdmFpbGFibGUgb24gdGhlIHdyaXRlIHNpZGUgcmVmbGVjdHMgdGhlIHNwYWNlCisgICAgICAg IGF2YWlsYWJsZSBpbiB0aGUgaW5ib3VuZCBidWZmZXIgb24gdGhlIHJlYWQgc2lkZS4gIEhvd2V2 ZXIsIGlmIGEKKyAgICAgICAgcGlwZSByZWFkIGlzIGN1cnJlbnRseSBwZW5kaW5nLCBXcml0ZVF1 b3RhQXZhaWxhYmxlIG9uIHRoZSB3cml0ZSBzaWRlCisgICAgICAgIGlzIGRlY3JlbWVudGVkIGJ5 IHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhlIHJlYWQgc2lkZSBpcyByZXF1ZXN0aW5nLgorICAgICAg ICBTbyBpdCdzIHBvc3NpYmxlIChldmVuIGxpa2VseSkgdGhhdCBXcml0ZVF1b3RhQXZhaWxhYmxl IGlzIDAsIGV2ZW4KKyAgICAgICAgaWYgdGhlIGluYm91bmQgYnVmZmVyIG9uIHRoZSByZWFkIHNp ZGUgaXMgbm90IGZ1bGwuICBUaGlzIGNhbiBsZWFkIHRvCisgICAgICAgIGEgZGVhZGxvY2sgc2l0 dWF0aW9uOiBUaGUgcmVhZGVyIGlzIHdhaXRpbmcgZm9yIGRhdGEsIGJ1dCBzZWxlY3QKKyAgICAg ICAgb24gdGhlIHdyaXRlciBzaWRlIGFzc3VtZXMgdGhhdCBubyBzcGFjZSBpcyBhdmFpbGFibGUg aW4gdGhlIHJlYWQKKyAgICAgICAgc2lkZSBpbmJvdW5kIGJ1ZmZlci4KKworICAgICAgICBDb25z ZXF1ZW50aWFsbHksIHRoZSBvbmx5IHJlbGlhYmxlIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBv biB0aGUKKyAgICAgICAgcmVhZCBzaWRlLCBzbyBmZXRjaCBpbmZvIGZyb20gdGhlIHJlYWQgc2lk ZSB2aWEgdGhlIHBpcGUtc3BlY2lmaWMKKyAgICAgICAgcXVlcnkgaGFuZGxlLiAgVXNlIGZwbGku V3JpdGVRdW90YUF2YWlsYWJsZSBhcyBzdG9yYWdlIGZvciB0aGUgYWN0dWFsCisgICAgICAgIGlu dGVyZXN0aW5nIHZhbHVlLCB3aGljaCBpcyB0aGUgT3V0Ym91bmRRdW90ZSBvbiB0aGUgd3JpdGUg c2lkZSwKKyAgICAgICAgZGVjcmVtZW50ZWQgYnkgdGhlIG51bWJlciBvZiBieXRlcyBvZiBkYXRh IGluIHRoYXQgYnVmZmVyLiAqLworICAgICAgLyogTm90ZTogRG8gbm90IHVzZSBOdFF1ZXJ5SW5m b3JtYXRpb25GaWxlKCkgZm9yIHF1ZXJ5X2hkbCBiZWNhdXNlCisJIE50UXVlcnlJbmZvcm1hdGlv bkZpbGUoKSBzZWVtcyB0byBpbnRlcmZlcmUgd2l0aCByZWFkaW5nIHBpcGVzCisJIGluIG5vbi1j eWd3aW4gYXBwcy4gSW5zdGVhZCwgdXNlIFBlZWtOYW1lZFBpcGUoKSBoZXJlLiAqLworICAgICAg aWYgKGZoLT5nZXRfZGV2aWNlICgpID09IEZIX1BJUEVXKQorCXsKKwkgIEhBTkRMRSBxdWVyeV9o ZGwgPSAoKGZoYW5kbGVyX3BpcGUgKikgZmgpLT5nZXRfcXVlcnlfaGFuZGxlICgpOworCSAgaWYg KHF1ZXJ5X2hkbCkKKwkgICAgeworCSAgICAgIERXT1JEIG5ieXRlc19pbl9waXBlOworCSAgICAg IFBlZWtOYW1lZFBpcGUgKHF1ZXJ5X2hkbCwgTlVMTCwgMCwgTlVMTCwgJm5ieXRlc19pbl9waXBl LCBOVUxMKTsKKwkgICAgICBmcGxpLldyaXRlUXVvdGFBdmFpbGFibGUgPSBmcGxpLk91dGJvdW5k UXVvdGEgLSBuYnl0ZXNfaW5fcGlwZTsKKwkgICAgfQorCSAgZWxzZQorCSAgICByZXR1cm4gMTsK Kwl9CiAgICAgICBpZiAoZnBsaS5Xcml0ZVF1b3RhQXZhaWxhYmxlID4gMCkKIAl7CiAJICBwYXJh bm9pZF9wcmludGYgKCJmZCAlZCwgJXMsIHdyaXRlOiBzaXplICV1LCBhdmFpbCAldSIsIGZkLApA QCAtNzEyLDYgKzc0MywxMyBAQCBvdXQ6CiAgIGggPSBmaC0+Z2V0X291dHB1dF9oYW5kbGUgKCk7 CiAgIGlmIChzLT53cml0ZV9zZWxlY3RlZCAmJiBkZXYgIT0gRkhfUElQRVIpCiAgICAgeworICAg ICAgaWYgKGRldiA9PSBGSF9QSVBFVyAmJiAoKGZoYW5kbGVyX3BpcGUgKikgZmgpLT5yZWFkZXJf Y2xvc2VkICgpKQorCXsKKwkgIGdvdG9uZSArPSBzLT53cml0ZV9yZWFkeSA9IHRydWU7CisJICBp ZiAocy0+ZXhjZXB0X3NlbGVjdGVkKQorCSAgICBnb3RvbmUgKz0gcy0+ZXhjZXB0X3JlYWR5ID0g dHJ1ZTsKKwkgIHJldHVybiBnb3RvbmU7CisJfQogICAgICAgZ290b25lICs9IHMtPndyaXRlX3Jl YWR5ID0gIHBpcGVfZGF0YV9hdmFpbGFibGUgKHMtPmZkLCBmaCwgaCwgdHJ1ZSk7CiAgICAgICBz ZWxlY3RfcHJpbnRmICgid3JpdGU6ICVzLCBnb3RvbmUgJWQiLCBmaC0+Z2V0X25hbWUgKCksIGdv dG9uZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9zcGF3bi5jYyBiL3dpbnN1 cC9jeWd3aW4vc3Bhd24uY2MKaW5kZXggMGJkZTBiMDRkLi5lOTAyYjUwODAgMTAwNjQ0Ci0tLSBh L3dpbnN1cC9jeWd3aW4vc3Bhd24uY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9zcGF3bi5jYwpAQCAt NjU3LDYgKzY1Nyw4IEBAIGNoaWxkX2luZm9fc3Bhd246OndvcmtlciAoY29uc3QgY2hhciAqcHJv Z19hcmcsIGNvbnN0IGNoYXIgKmNvbnN0ICphcmd2LAogCQlwdHlzLT5jcmVhdGVfaW52aXNpYmxl X2NvbnNvbGUgKCk7CiAJCXB0eXMtPnNldHVwX2xvY2FsZSAoKTsKIAkgICAgICB9CisJICAgIGVs c2UgaWYgKGNmZC0+Z2V0X2RldiAoKSA9PSBGSF9QSVBFVykKKwkgICAgICAoKGZoYW5kbGVyX3Bp cGUgKikoZmhhbmRsZXJfYmFzZSAqKSBjZmQpLT5jbG9zZV9xdWVyeV9oYW5kbGUgKCk7CiAJfQog CiAgICAgICBib29sIGVuYWJsZV9wY29uID0gZmFsc2U7Ci0tIAoyLjMzLjAKCg== --Multipart=_Sun__12_Sep_2021_17_48_49_+0900_XXFFp20IojAFW3sy--