From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from conssluserg-03.nifty.com (conssluserg-03.nifty.com [210.131.2.82]) by sourceware.org (Postfix) with ESMTPS id 31B093858402 for ; Tue, 14 Sep 2021 08:08:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 31B093858402 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-03.nifty.com with ESMTP id 18E88PG2003422 for ; Tue, 14 Sep 2021 17:08:25 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conssluserg-03.nifty.com 18E88PG2003422 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.ne.jp; s=dec2015msa; t=1631606905; bh=ztWL+25G2FWjncLWFLHe/wCaiauRq89CzOigdz4pkRE=; h=Date:From:To:Subject:In-Reply-To:References:From; b=sQNF90vu4D3iBTHC2MRMjKS6kH4y8P7kEQj2K/C88/EFrFvXZYs/a/U4kgbAFipVf wSC3RLfMz57bX7gkiBmkYPWg1mNBsnUL8RL1VPrS3YDcWzOr9zCppA+AwZMSd+VPMR poAJ6+YmlEuegMt/XTM01bVIexXGRAKUdzar8V/3S5xGHowb9ZQ9U+dExyj/jFjuc9 hK46jjCamcrVcqNDy+pmx1aKHp9RS/y6WYZ5qflwl1NvVbv9Q8hRwogbUFgpvH5UCY ANe4v3ZwCJi+qB8pHP5aD7w4McdOvkDTRD92vwC84WyjjLVAzR9pDDMhzvg3B6CsVi XWvXolLz8Sn4Q== X-Nifty-SrcIP: [110.4.221.123] Date: Tue, 14 Sep 2021 17:08:38 +0900 From: Takashi Yano To: cygwin-developers@cygwin.com Subject: Re: cygrunsrv + sshd + rsync = 20 times too slow -- throttled? Message-Id: <20210914170838.6393026ac3eaa4cd4e3d9618@nifty.ne.jp> In-Reply-To: <20210914043718.f420491c6723f3dc2e2d9753@nifty.ne.jp> References: <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> <20210912174849.3d38107568065a95aeb19c7c@nifty.ne.jp> <20210912200423.667e40eb1adc52461bbefa20@nifty.ne.jp> <20210914043718.f420491c6723f3dc2e2d9753@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=_Tue__14_Sep_2021_17_08_38_+0900_B+0oY4h+belJmrwi" X-Spam-Status: No, score=-11.4 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, RCVD_IN_MSPIKE_H2, 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: Tue, 14 Sep 2021 08:08:42 -0000 This is a multi-part message in MIME format. --Multipart=_Tue__14_Sep_2021_17_08_38_+0900_B+0oY4h+belJmrwi Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Tue, 14 Sep 2021 04:37:18 +0900 Takashi Yano wrote: > On Mon, 13 Sep 2021 20:32:33 +0200 > Corinna Vinschen wrote: > > On Sep 12 20:04, Takashi Yano wrote: > > > On Sun, 12 Sep 2021 17:48:49 +0900 > > > Takashi Yano wrote: > > > > 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. > > > > > > Revised a bit. > > > [...] > > > > What I miss is a bit more detailed commit message... > > I am sorry, I will add more detail commit message. Done. > > > diff --git a/winsup/cygwin/fhandler_pipe.cc b/winsup/cygwin/fhandler_pipe.cc > > > index 9b4255cfd..b051f5c03 100644 > > > --- a/winsup/cygwin/fhandler_pipe.cc > > > +++ b/winsup/cygwin/fhandler_pipe.cc > > > @@ -56,6 +56,8 @@ fhandler_pipe::set_pipe_non_blocking (bool nonblocking) > > > fpi.ReadMode = FILE_PIPE_BYTE_STREAM_MODE; > > > fpi.CompletionMode = nonblocking ? FILE_PIPE_COMPLETE_OPERATION > > > : FILE_PIPE_QUEUE_OPERATION; > > > + if (query_hdl) > > > + fpi.CompletionMode = FILE_PIPE_COMPLETE_OPERATION; > > > > This should be a single expression, i.e. > > > > fpi.CompletionMode = nonblocking || query_hdl > > ? FILE_PIPE_COMPLETE_OPERATION > > : FILE_PIPE_QUEUE_OPERATION; > > > > ideally combined with a comment. > > Thanks. I'll do that. Done. > > But then again... you're basically switching the write side of > > a pipe to nonblocking mode unconditionally. The downside is a > > busy wait: > > > > > fhandler_pipe_fifo::raw_write (const void *ptr, size_t len) > > > { > > > @@ -493,7 +490,20 @@ fhandler_pipe_fifo::raw_write (const void *ptr, size_t len) > > > get_obj_handle_count (select_sem), NULL); > > > /* 0 bytes returned? EAGAIN. See above. */ > > > if (NT_SUCCESS (status) && nbytes == 0) > > > - set_errno (EAGAIN); > > > + { > > > + if (reader_closed ()) > > > + { > > > + set_errno (EPIPE); > > > + raise (SIGPIPE); > > > + } > > > + else if (is_nonblocking ()) > > > + set_errno (EAGAIN); > > > + else > > > + { > > > + cygwait (select_sem, 10); > > > + continue; > > > > I'm a bit puzzled. The cygwait branch neglects to check if select_sem > > is NULL (the preceeding ReleaseSemaphore expression does!) > > And then it doesn't matter if the caller got blocked or not, it will > > always perform a continue. So why do it at all? Worse, if this > > expression loops, it will eat up the semaphore, because each call will > > decrement the semaphore count until it blocks. That sounds wrong to me. > > It is by design. ReleaseSemaphore() releases maximum number of semaphore > which the waiter can exists. If only one writer and one reader exist, > ReleaseSemaphore releases 2 semaphores. Then cygwait here consume semaphore > two times and return to wait state. > This wait state is released by raw_read() or close(). > > > Btw., while looking into the current pipe code, I wonder what select_sem > > is doing in the pipe code at all so far. It gets released, but it never > > gets waited on?!? Am I missing something? > > The semaphore is waited in select.cc. > But, wait. Wat happens if select() is not called? Released semaphore > can be accumulated up to INT32_MAX!!? > > Let me consider. See the second patch attached. With this patch, only minimum number of semaphores needed are released. Please apply following two patches I attached to previous mail first: 0001-Cygwin-fhandler_base-dup-Reflect-O_CLOEXEC-to-inheri.patch 0002-Cygwin-pipe-fifo-Call-set_no_inheritance-for-adjunct.patch Then, apply the patches attached this mail. 0001-Cygwin-pipe-Use-read-pipe-handle-for-select-on-write.patch 0002-Cygwin-pipe-fifo-Release-select_sem-semaphore-as-muc.patch Thanks -- Takashi Yano --Multipart=_Tue__14_Sep_2021_17_08_38_+0900_B+0oY4h+belJmrwi Content-Type: application/octet-stream; name="0001-Cygwin-pipe-Use-read-pipe-handle-for-select-on-write.patch" Content-Disposition: attachment; filename="0001-Cygwin-pipe-Use-read-pipe-handle-for-select-on-write.patch" Content-Transfer-Encoding: base64 RnJvbSA2MTFhYzVmODdkZjBiNTE1NmUzZWM4MmU5OGFmMjc4OTJhOWM4ODgyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYWthc2hpIFlhbm8gPHRha2FzaGkueWFub0BuaWZ0eS5uZS5q cD4KRGF0ZTogVHVlLCAxNCBTZXAgMjAyMSAxMjoyNzozMyArMDkwMApTdWJqZWN0OiBbUEFUQ0gg MS8yXSBDeWd3aW46IHBpcGU6IFVzZSByZWFkIHBpcGUgaGFuZGxlIGZvciBzZWxlY3QoKSBvbiB3 cml0ZQogcGlwZS4KCi0gVXN1YWxseSBXcml0ZVF1b3RhQXZhaWxhYmxlIHJldHJpZXZlZCBieSBO dFF1ZXJ5SW5mb3JtYXRpb25GaWxlKCkKICBvbiB0aGUgd3JpdGUgc2lkZSByZWZsZWN0cyB0aGUg c3BhY2UgYXZhaWxhYmxlIGluIHRoZSBpbmJvdW5kIGJ1ZmZlcgogIG9uIHRoZSByZWFkIHNpZGUu IEhvd2V2ZXIsIGlmIGEgcGlwZSByZWFkIGlzIGN1cnJlbnRseSBwZW5kaW5nLAogIFdyaXRlUXVv dGFBdmFpbGFibGUgb24gdGhlIHdyaXRlIHNpZGUgaXMgZGVjcmVtZW50ZWQgYnkgdGhlIG51bWJl cgogIG9mIGJ5dGVzIHRoZSByZWFkIHNpZGUgaXMgcmVxdWVzdGluZy4gU28gaXQncyBwb3NzaWJs ZSAoZXZlbiBsaWtlbHkpCiAgdGhhdCBXcml0ZVF1b3RhQXZhaWxhYmxlIGlzIDAsIGV2ZW4gaWYg dGhlIGluYm91bmQgYnVmZmVyIG9uIHRoZQogIHJlYWQgc2lkZSBpcyBub3QgZnVsbC4gVGhpcyBj YW4gbGVhZCB0byBhIGRlYWRsb2NrIHNpdHVhdGlvbjoKICBUaGUgcmVhZGVyIGlzIHdhaXRpbmcg Zm9yIGRhdGEsIGJ1dCBzZWxlY3Qgb24gdGhlIHdyaXRlciBzaWRlCiAgYXNzdW1lcyB0aGF0IG5v IHNwYWNlIGlzIGF2YWlsYWJsZSBpbiB0aGUgcmVhZCBzaWRlIGluYm91bmQgYnVmZmVyLgoKICBD dXJyZW50bHksIHRvIGF2b2lkIHRoaXMgc3R1YXRpb24sIHJlYWQoKSBkb2VzIG5vdCByZXF1ZXN0 IGxhcmdlcgogIGJsb2NrIHRoYW4gcGlwZSBzaXplIC0gMS4gSG93ZXZlciwgdGhpcyBtZWNoYW5p c20gZG9lcyBub3QgdGFrZQogIGVmZmVjdCBpZiB0aGUgcmVhZGVyIHNpZGUgaXMgbm9uLWN5Z3dp biBhcHAuCgogIFRoZSBvbmx5IHJlbGlhYmxlIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBvbiB0 aGUgcmVhZCBzaWRlLCBzbwogIGZldGNoIGluZm8gZnJvbSB0aGUgcmVhZCBzaWRlIHZpYSB0aGUg cGlwZS1zcGVjaWZpYyBxdWVyeSBoYW5kbGUKICAocXVlcnlfaGRsKSBpbnRyb2R1Y2VkLgotLS0K IHdpbnN1cC9jeWd3aW4vZmhhbmRsZXIuaCAgICAgICB8ICAxNCArKysrLQogd2luc3VwL2N5Z3dp bi9maGFuZGxlcl9waXBlLmNjIHwgMTA1ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LQogd2luc3VwL2N5Z3dpbi9zZWxlY3QuY2MgICAgICAgIHwgIDUyICsrKysrKysrKysrKystLS0K IHdpbnN1cC9jeWd3aW4vc3Bhd24uY2MgICAgICAgICB8ICAxMSArKysrCiA0IGZpbGVzIGNoYW5n ZWQsIDE0NCBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS93aW5z dXAvY3lnd2luL2ZoYW5kbGVyLmggYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyLmgKaW5kZXggNDYz ODFjMzk3Li5kYjIzMjUxNDQgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXIuaAor KysgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyLmgKQEAgLTExNzYsMTAgKzExNzYsMjIgQEAgY2xh c3MgZmhhbmRsZXJfcGlwZV9maWZvOiBwdWJsaWMgZmhhbmRsZXJfYmFzZQogewogIHByb3RlY3Rl ZDoKICAgc2l6ZV90IHBpcGVfYnVmX3NpemU7CisgIEhBTkRMRSBxdWVyeV9oZGw7CiAKICBwdWJs aWM6CiAgIGZoYW5kbGVyX3BpcGVfZmlmbyAoKTsKIAorICBIQU5ETEUgZ2V0X3F1ZXJ5X2hhbmRs ZSAoKSBjb25zdCB7IHJldHVybiBxdWVyeV9oZGw7IH0KKyAgdm9pZCBjbG9zZV9xdWVyeV9oYW5k bGUgKCkKKyAgeworICAgIGlmIChxdWVyeV9oZGwpCisgICAgICB7CisJQ2xvc2VIYW5kbGUgKHF1 ZXJ5X2hkbCk7CisJcXVlcnlfaGRsID0gTlVMTDsKKyAgICAgIH0KKyAgfQorICBib29sIHJlYWRl cl9jbG9zZWQgKCk7CisKICAgc3NpemVfdCBfX3JlZzMgcmF3X3dyaXRlIChjb25zdCB2b2lkICpw dHIsIHNpemVfdCBsZW4pOwogCiB9OwpAQCAtMTE4OSw3ICsxMjAxLDYgQEAgY2xhc3MgZmhhbmRs ZXJfcGlwZTogcHVibGljIGZoYW5kbGVyX3BpcGVfZmlmbwogcHJpdmF0ZToKICAgSEFORExFIHJl YWRfbXR4OwogICBwaWRfdCBwb3Blbl9waWQ7Ci0gIHZvaWQgc2V0X3BpcGVfbm9uX2Jsb2NraW5n IChib29sIG5vbmJsb2NraW5nKTsKIHB1YmxpYzoKICAgZmhhbmRsZXJfcGlwZSAoKTsKIApAQCAt MTIzNyw2ICsxMjQ4LDcgQEAgcHVibGljOgogICAgIGZoLT5jb3B5X2Zyb20gKHRoaXMpOwogICAg IHJldHVybiBmaDsKICAgfQorICB2b2lkIHNldF9waXBlX25vbl9ibG9ja2luZyAoYm9vbCBub25i bG9ja2luZyk7CiB9OwogCiAjZGVmaW5lIENZR1dJTl9GSUZPX1BJUEVfTkFNRV9MRU4gICAgIDQ3 CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3BpcGUuY2MgYi93aW5zdXAvY3ln d2luL2ZoYW5kbGVyX3BpcGUuY2MKaW5kZXggZGE0NzNhMWRjLi40ZGFiMzAxNWQgMTAwNjQ0Ci0t LSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcGlwZS5jYworKysgYi93aW5zdXAvY3lnd2luL2Zo YW5kbGVyX3BpcGUuY2MKQEAgLTU0LDggKzU0LDEyIEBAIGZoYW5kbGVyX3BpcGU6OnNldF9waXBl X25vbl9ibG9ja2luZyAoYm9vbCBub25ibG9ja2luZykKICAgRklMRV9QSVBFX0lORk9STUFUSU9O IGZwaTsKIAogICBmcGkuUmVhZE1vZGUgPSBGSUxFX1BJUEVfQllURV9TVFJFQU1fTU9ERTsKLSAg ZnBpLkNvbXBsZXRpb25Nb2RlID0gbm9uYmxvY2tpbmcgPyBGSUxFX1BJUEVfQ09NUExFVEVfT1BF UkFUSU9OCi0gICAgOiBGSUxFX1BJUEVfUVVFVUVfT1BFUkFUSU9OOworICAvKiBJZiBxdWVyeV9o ZGwgaXMgc2V0LCB3cml0ZSBwaXBlIHNob3VsZCBjaGVjayByZWFkZXJfY2xvc2VkKCkKKyAgICAg d2hpbGUgcmF3X3JlYWQoKS4gSWYgdGhlIHBpcGUgaXMgYmxvY2tpbmcsIHJhd193cml0ZSgpIHN0 b3BzCisgICAgIGF0IE50V3JpdGVGaWxlKCkgYW5kIGxvc2VzIHRoZSBjaGFuY2UgdG8gY2hlY2sg aXQuIFRoZXJlZm9yZSwKKyAgICAgYWx3YXlzIHNldCB3cml0ZSBwaXBlIHRvIG5vbi1ibG9ja2lu Zy4gKi8KKyAgZnBpLkNvbXBsZXRpb25Nb2RlID0gKG5vbmJsb2NraW5nIHx8IHF1ZXJ5X2hkbCkK KyAgICA/IEZJTEVfUElQRV9DT01QTEVURV9PUEVSQVRJT04gOiBGSUxFX1BJUEVfUVVFVUVfT1BF UkFUSU9OOwogICBzdGF0dXMgPSBOdFNldEluZm9ybWF0aW9uRmlsZSAoZ2V0X2hhbmRsZSAoKSwg JmlvLCAmZnBpLCBzaXplb2YgZnBpLAogCQkJCSBGaWxlUGlwZUluZm9ybWF0aW9uKTsKICAgaWYg KCFOVF9TVUNDRVNTIChzdGF0dXMpKQpAQCAtMjAyLDYgKzIwNiw4IEBAIGZoYW5kbGVyX3BpcGU6 Om9wZW5fc2V0dXAgKGludCBmbGFncykKICAgICAgIGlmICghcmVhZF9tdHgpCiAJZGVidWdfcHJp bnRmICgiQ3JlYXRlTXV0ZXggZmFpbGVkOiAlRSIpOwogICAgIH0KKyAgaWYgKGdldF9kZXYgKCkg PT0gRkhfUElQRVcgJiYgIXF1ZXJ5X2hkbCkKKyAgICBzZXRfcGlwZV9ub25fYmxvY2tpbmcgKGlz X25vbmJsb2NraW5nICgpKTsKIH0KIAogb2ZmX3QKQEAgLTI2OCwzOSArMjc0LDIyIEBAIGZoYW5k bGVyX3BpcGU6OnJhd19yZWFkICh2b2lkICpwdHIsIHNpemVfdCYgbGVuKQogICB3aGlsZSAobmJ5 dGVzIDwgbGVuKQogICAgIHsKICAgICAgIFVMT05HX1BUUiBuYnl0ZXNfbm93ID0gMDsKLSAgICAg IHNpemVfdCBsZWZ0ID0gbGVuIC0gbmJ5dGVzOwotICAgICAgVUxPTkcgbGVuMSA9IChVTE9ORykg bGVmdDsKKyAgICAgIFVMT05HIGxlbjEgPSAoVUxPTkcpIChsZW4gLSBuYnl0ZXMpOwogICAgICAg d2FpdHJldCA9IFdBSVRfT0JKRUNUXzA7CiAKICAgICAgIGlmIChldnQpCiAJUmVzZXRFdmVudCAo ZXZ0KTsKLSAgICAgIGlmICghaXNfbm9uYmxvY2tpbmcgKCkpCisgICAgICBGSUxFX1BJUEVfTE9D QUxfSU5GT1JNQVRJT04gZnBsaTsKKyAgICAgIHN0YXR1cyA9IE50UXVlcnlJbmZvcm1hdGlvbkZp bGUgKGdldF9oYW5kbGUgKCksICZpbywKKwkJCQkgICAgICAgJmZwbGksIHNpemVvZiAoZnBsaSks CisJCQkJICAgICAgIEZpbGVQaXBlTG9jYWxJbmZvcm1hdGlvbik7CisgICAgICBpZiAoTlRfU1VD Q0VTUyAoc3RhdHVzKSkKIAl7Ci0JICBGSUxFX1BJUEVfTE9DQUxfSU5GT1JNQVRJT04gZnBsaTsK LQotCSAgLyogSWYgdGhlIHBpcGUgaXMgZW1wdHksIGRvbid0IHJlcXVlc3QgbW9yZSBieXRlcyB0 aGFuIHBpcGUKLQkgICAgIGJ1ZmZlciBzaXplIC0gMS4gUGVuZGluZyByZWFkIGxvd2VycyBXcml0 ZVF1b3RhQXZhaWxhYmxlIG9uCi0JICAgICB0aGUgd3JpdGUgc2lkZSBhbmQgdGh1cyBhZmZlY3Rz IHNlbGVjdCdzIGFiaWxpdHkgdG8gcmV0dXJuCi0JICAgICBtb3JlIG9yIGxlc3MgcmVsaWFibGUg aW5mbyB3aGV0aGVyIGEgd3JpdGUgc3VjY2VlZHMgb3Igbm90LiAqLwotCSAgVUxPTkcgY2h1bmsg PSBwaXBlX2J1Zl9zaXplIC0gMTsKLQkgIHN0YXR1cyA9IE50UXVlcnlJbmZvcm1hdGlvbkZpbGUg KGdldF9oYW5kbGUgKCksICZpbywKLQkJCQkJICAgJmZwbGksIHNpemVvZiAoZnBsaSksCi0JCQkJ CSAgIEZpbGVQaXBlTG9jYWxJbmZvcm1hdGlvbik7Ci0JICBpZiAoTlRfU1VDQ0VTUyAoc3RhdHVz KSkKLQkgICAgewotCSAgICAgIGlmIChmcGxpLlJlYWREYXRhQXZhaWxhYmxlID4gMCkKLQkJY2h1 bmsgPSBsZWZ0OwotCSAgICAgIGVsc2UgaWYgKG5ieXRlcyAhPSAwKQotCQlicmVhazsKLQkgICAg ICBlbHNlCi0JCWNodW5rID0gZnBsaS5JbmJvdW5kUXVvdGEgLSAxOwotCSAgICB9Ci0JICBlbHNl IGlmIChuYnl0ZXMgIT0gMCkKLQkgICAgYnJlYWs7Ci0KLQkgIGlmIChsZW4xID4gY2h1bmspCi0J ICAgIGxlbjEgPSBjaHVuazsKKwlpZiAoZnBsaS5SZWFkRGF0YUF2YWlsYWJsZSA9PSAwICYmIG5i eXRlcyAhPSAwKQorCSAgYnJlYWs7CiAJfQorICAgICAgZWxzZSBpZiAobmJ5dGVzICE9IDApCisJ YnJlYWs7CiAgICAgICBzdGF0dXMgPSBOdFJlYWRGaWxlIChnZXRfaGFuZGxlICgpLCBldnQsIE5V TEwsIE5VTEwsICZpbywgcHRyLAogCQkJICAgbGVuMSwgTlVMTCwgTlVMTCk7CiAgICAgICBpZiAo ZXZ0ICYmIHN0YXR1cyA9PSBTVEFUVVNfUEVORElORykKQEAgLTM4NSw2ICszNzQsMTYgQEAgZmhh bmRsZXJfcGlwZTo6cmF3X3JlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pCiAgIGxlbiA9IG5i eXRlczsKIH0KIAorYm9vbAorZmhhbmRsZXJfcGlwZV9maWZvOjpyZWFkZXJfY2xvc2VkICgpCit7 CisgIGlmICghcXVlcnlfaGRsKQorICAgIHJldHVybiBmYWxzZTsKKyAgaW50IG5fcmVhZGVyID0g Z2V0X29ial9oYW5kbGVfY291bnQgKHF1ZXJ5X2hkbCk7CisgIGludCBuX3dyaXRlciA9IGdldF9v YmpfaGFuZGxlX2NvdW50IChnZXRfaGFuZGxlICgpKTsKKyAgcmV0dXJuIG5fcmVhZGVyID09IG5f d3JpdGVyOworfQorCiBzc2l6ZV90IF9fcmVnMwogZmhhbmRsZXJfcGlwZV9maWZvOjpyYXdfd3Jp dGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIHsKQEAgLTQ5Myw3ICs0OTIsMjAgQEAg ZmhhbmRsZXJfcGlwZV9maWZvOjpyYXdfd3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxl bikKIAkJCSAgICAgIGdldF9vYmpfaGFuZGxlX2NvdW50IChzZWxlY3Rfc2VtKSwgTlVMTCk7CiAJ ICAvKiAwIGJ5dGVzIHJldHVybmVkPyAgRUFHQUlOLiAgU2VlIGFib3ZlLiAqLwogCSAgaWYgKE5U X1NVQ0NFU1MgKHN0YXR1cykgJiYgbmJ5dGVzID09IDApCi0JICAgIHNldF9lcnJubyAoRUFHQUlO KTsKKwkgICAgeworCSAgICAgIGlmIChyZWFkZXJfY2xvc2VkICgpKQorCQl7CisJCSAgc2V0X2Vy cm5vIChFUElQRSk7CisJCSAgcmFpc2UgKFNJR1BJUEUpOworCQl9CisJICAgICAgZWxzZSBpZiAo aXNfbm9uYmxvY2tpbmcgKCkpCisJCXNldF9lcnJubyAoRUFHQUlOKTsKKwkgICAgICBlbHNlCisJ CXsKKwkJICBjeWd3YWl0IChzZWxlY3Rfc2VtLCAxMCk7CisJCSAgY29udGludWU7CisJCX0KKwkg ICAgfQogCX0KICAgICAgIGVsc2UgaWYgKFNUQVRVU19QSVBFX0lTX0NMT1NFRCAoc3RhdHVzKSkK IAl7CkBAIC01MjMsNiArNTM1LDggQEAgZmhhbmRsZXJfcGlwZTo6c2V0X2Nsb3NlX29uX2V4ZWMg KGJvb2wgdmFsKQogICAgIHNldF9ub19pbmhlcml0YW5jZSAocmVhZF9tdHgsIHZhbCk7CiAgIGlm IChzZWxlY3Rfc2VtKQogICAgIHNldF9ub19pbmhlcml0YW5jZSAoc2VsZWN0X3NlbSwgdmFsKTsK KyAgaWYgKHF1ZXJ5X2hkbCkKKyAgICBzZXRfbm9faW5oZXJpdGFuY2UgKHF1ZXJ5X2hkbCwgdmFs KTsKIH0KIAogdm9pZApAQCAtNTMyLDYgKzU0Niw5IEBAIGZoYW5kbGVyX3BpcGU6OmZpeHVwX2Fm dGVyX2ZvcmsgKEhBTkRMRSBwYXJlbnQpCiAgICAgZm9ya19maXh1cCAocGFyZW50LCByZWFkX210 eCwgInJlYWRfbXR4Iik7CiAgIGlmIChzZWxlY3Rfc2VtKQogICAgIGZvcmtfZml4dXAgKHBhcmVu dCwgc2VsZWN0X3NlbSwgInNlbGVjdF9zZW0iKTsKKyAgaWYgKHF1ZXJ5X2hkbCkKKyAgICBmb3Jr X2ZpeHVwIChwYXJlbnQsIHF1ZXJ5X2hkbCwgInF1ZXJ5X2hkbCIpOworCiAgIGZoYW5kbGVyX2Jh c2U6OmZpeHVwX2FmdGVyX2ZvcmsgKHBhcmVudCk7CiB9CiAKQEAgLTU2Miw2ICs1NzksMTUgQEAg ZmhhbmRsZXJfcGlwZTo6ZHVwIChmaGFuZGxlcl9iYXNlICpjaGlsZCwgaW50IGZsYWdzKQogICAg ICAgZnRwLT5jbG9zZSAoKTsKICAgICAgIHJlcyA9IC0xOwogICAgIH0KKyAgZWxzZSBpZiAocXVl cnlfaGRsICYmCisJICAgIUR1cGxpY2F0ZUhhbmRsZSAoR2V0Q3VycmVudFByb2Nlc3MgKCksIHF1 ZXJ5X2hkbCwKKwkJCSAgICBHZXRDdXJyZW50UHJvY2VzcyAoKSwgJmZ0cC0+cXVlcnlfaGRsLAor CQkJICAgIDAsICEoZmxhZ3MgJiBPX0NMT0VYRUMpLCBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MpKQor ICAgIHsKKyAgICAgIF9fc2V0ZXJybm8gKCk7CisgICAgICBmdHAtPmNsb3NlICgpOworICAgICAg cmVzID0gLTE7CisgICAgfQogCiAgIGRlYnVnX3ByaW50ZiAoInJlcyAlZCIsIHJlcyk7CiAgIHJl dHVybiByZXM7CkBAIC01NzcsNiArNjAzLDggQEAgZmhhbmRsZXJfcGlwZTo6Y2xvc2UgKCkKICAg ICAgIFJlbGVhc2VTZW1hcGhvcmUgKHNlbGVjdF9zZW0sIGdldF9vYmpfaGFuZGxlX2NvdW50IChz ZWxlY3Rfc2VtKSwgTlVMTCk7CiAgICAgICBDbG9zZUhhbmRsZSAoc2VsZWN0X3NlbSk7CiAgICAg fQorICBpZiAocXVlcnlfaGRsKQorICAgIENsb3NlSGFuZGxlIChxdWVyeV9oZGwpOwogICByZXR1 cm4gZmhhbmRsZXJfYmFzZTo6Y2xvc2UgKCk7CiB9CiAKQEAgLTc5Nyw2ICs4MjUsMjMgQEAgZmhh bmRsZXJfcGlwZTo6Y3JlYXRlIChmaGFuZGxlcl9waXBlICpmaHNbMl0sIHVuc2lnbmVkIHBzaXpl LCBpbnQgbW9kZSkKIAlEdXBsaWNhdGVIYW5kbGUgKEdldEN1cnJlbnRQcm9jZXNzICgpLCBmaHNb MF0tPnNlbGVjdF9zZW0sCiAJCQkgR2V0Q3VycmVudFByb2Nlc3MgKCksICZmaHNbMV0tPnNlbGVj dF9zZW0sCiAJCQkgMCwgc2EtPmJJbmhlcml0SGFuZGxlLCBEVVBMSUNBVEVfU0FNRV9BQ0NFU1Mp OworICAgICAgaWYgKCFEdXBsaWNhdGVIYW5kbGUgKEdldEN1cnJlbnRQcm9jZXNzICgpLCByLAor CQkJICAgIEdldEN1cnJlbnRQcm9jZXNzICgpLCAmZmhzWzFdLT5xdWVyeV9oZGwsCisJCQkgICAg RklMRV9SRUFEX0RBVEEsIHNhLT5iSW5oZXJpdEhhbmRsZSwgMCkpCisJeworCSAgQ2xvc2VIYW5k bGUgKGZoc1swXS0+c2VsZWN0X3NlbSk7CisJICBkZWxldGUgZmhzWzBdOworCSAgQ2xvc2VIYW5k bGUgKHIpOworCSAgQ2xvc2VIYW5kbGUgKGZoc1sxXS0+c2VsZWN0X3NlbSk7CisJICBkZWxldGUg ZmhzWzFdOworCSAgQ2xvc2VIYW5kbGUgKHcpOworCX0KKyAgICAgIGVsc2UKKwl7CisJICAvKiBD YWxsIHNldF9waXBlX25vbl9ibG9ja2luZygpIGFnYWluIGFmdGVyIGNyZWF0aW5nIHF1ZXJ5X2hk bC4gKi8KKwkgIGZoc1sxXS0+c2V0X3BpcGVfbm9uX2Jsb2NraW5nIChmaHNbMV0tPmlzX25vbmJs b2NraW5nICgpKTsKKwkgIHJlcyA9IDA7CisJfQogICAgIH0KIAogICBkZWJ1Z19wcmludGYgKCIl UiA9IHBpcGUoWyVwLCAlcF0sICVkLCAleSkiLCByZXMsIGZoc1swXSwgZmhzWzFdLCBwc2l6ZSwg bW9kZSk7CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL3NlbGVjdC5jYyBiL3dpbnN1cC9jeWd3 aW4vc2VsZWN0LmNjCmluZGV4IDVlNTgzNDM0Yy4uYWMyZjNhOWUwIDEwMDY0NAotLS0gYS93aW5z dXAvY3lnd2luL3NlbGVjdC5jYworKysgYi93aW5zdXAvY3lnd2luL3NlbGVjdC5jYwpAQCAtNjA4 LDE2ICs2MDgsNDcgQEAgcGlwZV9kYXRhX2F2YWlsYWJsZSAoaW50IGZkLCBmaGFuZGxlcl9iYXNl ICpmaCwgSEFORExFIGgsIGJvb2wgd3JpdGluZykKICAgICB9CiAgIGlmICh3cml0aW5nKQogICAg IHsKLSAgICAgIC8qIFdyaXRlUXVvdGFBdmFpbGFibGUgaXMgZGVjcmVtZW50ZWQgYnkgdGhlIG51 bWJlciBvZiBieXRlcyByZXF1ZXN0ZWQKLQkgYnkgYSBibG9ja2luZyByZWFkZXIgb24gdGhlIG90 aGVyIHNpZGUgb2YgdGhlIHBpcGUuICBDeWd3aW4gcmVhZGVycwotCSBhcmUgc2VyaWFsaXplZCBh bmQgbmV2ZXIgcmVxdWVzdCBhIG51bWJlciBvZiBieXRlcyBlcXVpdmFsZW50IHRvIHRoZQotCSBm dWxsIGJ1ZmZlciBzaXplLiAgU28gV3JpdGVRdW90YUF2YWlsYWJsZSBpcyAwIG9ubHkgaWYgZWl0 aGVyIHRoZQotCSByZWFkIGJ1ZmZlciBvbiB0aGUgb3RoZXIgc2lkZSBpcyByZWFsbHkgZnVsbCwg b3IgaWYgd2UgaGF2ZSBub24tQ3lnd2luCi0JIHJlYWRlcnMuICovCisgICAgICAvKiBJZiB0aGVy ZSBpcyBhbnl0aGluZyBhdmFpbGFibGUgaW4gdGhlIHBpcGUgYnVmZmVyIHRoZW4gc2lnbmFsCisg ICAgICAgIHRoYXQuICBUaGlzIG1lYW5zIHRoYXQgYSBwaXBlIGNvdWxkIHN0aWxsIGJsb2NrIHNp bmNlIHlvdSBjb3VsZAorICAgICAgICBiZSB0cnlpbmcgdG8gd3JpdGUgbW9yZSB0byB0aGUgcGlw ZSB0aGFuIGlzIGF2YWlsYWJsZSBpbiB0aGUKKyAgICAgICAgYnVmZmVyIGJ1dCB0aGF0IGlzIHRo ZSBoYXphcmQgb2Ygc2VsZWN0KCkuCisKKyAgICAgICAgTm90ZSB0aGF0IFdyaXRlUXVvdGFBdmFp bGFibGUgaXMgdW5yZWxpYWJsZS4KKworICAgICAgICBVc3VhbGx5IFdyaXRlUXVvdGFBdmFpbGFi bGUgb24gdGhlIHdyaXRlIHNpZGUgcmVmbGVjdHMgdGhlIHNwYWNlCisgICAgICAgIGF2YWlsYWJs ZSBpbiB0aGUgaW5ib3VuZCBidWZmZXIgb24gdGhlIHJlYWQgc2lkZS4gIEhvd2V2ZXIsIGlmIGEK KyAgICAgICAgcGlwZSByZWFkIGlzIGN1cnJlbnRseSBwZW5kaW5nLCBXcml0ZVF1b3RhQXZhaWxh YmxlIG9uIHRoZSB3cml0ZSBzaWRlCisgICAgICAgIGlzIGRlY3JlbWVudGVkIGJ5IHRoZSBudW1i ZXIgb2YgYnl0ZXMgdGhlIHJlYWQgc2lkZSBpcyByZXF1ZXN0aW5nLgorICAgICAgICBTbyBpdCdz IHBvc3NpYmxlIChldmVuIGxpa2VseSkgdGhhdCBXcml0ZVF1b3RhQXZhaWxhYmxlIGlzIDAsIGV2 ZW4KKyAgICAgICAgaWYgdGhlIGluYm91bmQgYnVmZmVyIG9uIHRoZSByZWFkIHNpZGUgaXMgbm90 IGZ1bGwuICBUaGlzIGNhbiBsZWFkIHRvCisgICAgICAgIGEgZGVhZGxvY2sgc2l0dWF0aW9uOiBU aGUgcmVhZGVyIGlzIHdhaXRpbmcgZm9yIGRhdGEsIGJ1dCBzZWxlY3QKKyAgICAgICAgb24gdGhl IHdyaXRlciBzaWRlIGFzc3VtZXMgdGhhdCBubyBzcGFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIHJl YWQKKyAgICAgICAgc2lkZSBpbmJvdW5kIGJ1ZmZlci4KKworICAgICAgICBDb25zZXF1ZW50aWFs bHksIHRoZSBvbmx5IHJlbGlhYmxlIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBvbiB0aGUKKyAg ICAgICAgcmVhZCBzaWRlLCBzbyBmZXRjaCBpbmZvIGZyb20gdGhlIHJlYWQgc2lkZSB2aWEgdGhl IHBpcGUtc3BlY2lmaWMKKyAgICAgICAgcXVlcnkgaGFuZGxlLiAgVXNlIGZwbGkuV3JpdGVRdW90 YUF2YWlsYWJsZSBhcyBzdG9yYWdlIGZvciB0aGUgYWN0dWFsCisgICAgICAgIGludGVyZXN0aW5n IHZhbHVlLCB3aGljaCBpcyB0aGUgSW5ib3VuZFF1b3RlIG9uIHRoZSB3cml0ZSBzaWRlLAorICAg ICAgICBkZWNyZW1lbnRlZCBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzIG9mIGRhdGEgaW4gdGhhdCBi dWZmZXIuICovCisgICAgICAvKiBOb3RlOiBEbyBub3QgdXNlIE50UXVlcnlJbmZvcm1hdGlvbkZp bGUoKSBmb3IgcXVlcnlfaGRsIGJlY2F1c2UKKwkgTnRRdWVyeUluZm9ybWF0aW9uRmlsZSgpIHNl ZW1zIHRvIGludGVyZmVyZSB3aXRoIHJlYWRpbmcgcGlwZXMKKwkgaW4gbm9uLWN5Z3dpbiBhcHBz LiBJbnN0ZWFkLCB1c2UgUGVla05hbWVkUGlwZSgpIGhlcmUuICovCisgICAgICBpZiAoZmgtPmdl dF9kZXZpY2UgKCkgPT0gRkhfUElQRVcpCisJeworCSAgSEFORExFIHF1ZXJ5X2hkbCA9ICgoZmhh bmRsZXJfcGlwZSAqKSBmaCktPmdldF9xdWVyeV9oYW5kbGUgKCk7CisJICBpZiAocXVlcnlfaGRs KQorCSAgICB7CisJICAgICAgRFdPUkQgbmJ5dGVzX2luX3BpcGU7CisJICAgICAgUGVla05hbWVk UGlwZSAocXVlcnlfaGRsLCBOVUxMLCAwLCBOVUxMLCAmbmJ5dGVzX2luX3BpcGUsIE5VTEwpOwor CSAgICAgIGZwbGkuV3JpdGVRdW90YUF2YWlsYWJsZSA9IGZwbGkuSW5ib3VuZFF1b3RhIC0gbmJ5 dGVzX2luX3BpcGU7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgcmV0dXJuIDE7CisJfQogICAgICAg aWYgKGZwbGkuV3JpdGVRdW90YUF2YWlsYWJsZSA+IDApCiAJewogCSAgcGFyYW5vaWRfcHJpbnRm ICgiZmQgJWQsICVzLCB3cml0ZTogc2l6ZSAldSwgYXZhaWwgJXUiLCBmZCwKLQkJCSAgIGZoLT5n ZXRfbmFtZSAoKSwgZnBsaS5PdXRib3VuZFF1b3RhLAorCQkJICAgZmgtPmdldF9uYW1lICgpLCBm cGxpLkluYm91bmRRdW90YSwKIAkJCSAgIGZwbGkuV3JpdGVRdW90YUF2YWlsYWJsZSk7CiAJICBy ZXR1cm4gMTsKIAl9CkBAIC03MTIsNiArNzQzLDEzIEBAIG91dDoKICAgaCA9IGZoLT5nZXRfb3V0 cHV0X2hhbmRsZSAoKTsKICAgaWYgKHMtPndyaXRlX3NlbGVjdGVkICYmIGRldiAhPSBGSF9QSVBF UikKICAgICB7CisgICAgICBpZiAoZGV2ID09IEZIX1BJUEVXICYmICgoZmhhbmRsZXJfcGlwZSAq KSBmaCktPnJlYWRlcl9jbG9zZWQgKCkpCisJeworCSAgZ290b25lICs9IHMtPndyaXRlX3JlYWR5 ID0gdHJ1ZTsKKwkgIGlmIChzLT5leGNlcHRfc2VsZWN0ZWQpCisJICAgIGdvdG9uZSArPSBzLT5l eGNlcHRfcmVhZHkgPSB0cnVlOworCSAgcmV0dXJuIGdvdG9uZTsKKwl9CiAgICAgICBnb3RvbmUg Kz0gcy0+d3JpdGVfcmVhZHkgPSAgcGlwZV9kYXRhX2F2YWlsYWJsZSAocy0+ZmQsIGZoLCBoLCB0 cnVlKTsKICAgICAgIHNlbGVjdF9wcmludGYgKCJ3cml0ZTogJXMsIGdvdG9uZSAlZCIsIGZoLT5n ZXRfbmFtZSAoKSwgZ290b25lKTsKICAgICB9CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL3Nw YXduLmNjIGIvd2luc3VwL2N5Z3dpbi9zcGF3bi5jYwppbmRleCAwYmRlMGIwNGQuLjZiMjAyNjc3 NiAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9zcGF3bi5jYworKysgYi93aW5zdXAvY3lnd2lu L3NwYXduLmNjCkBAIC02NTcsNiArNjU3LDE3IEBAIGNoaWxkX2luZm9fc3Bhd246OndvcmtlciAo Y29uc3QgY2hhciAqcHJvZ19hcmcsIGNvbnN0IGNoYXIgKmNvbnN0ICphcmd2LAogCQlwdHlzLT5j cmVhdGVfaW52aXNpYmxlX2NvbnNvbGUgKCk7CiAJCXB0eXMtPnNldHVwX2xvY2FsZSAoKTsKIAkg ICAgICB9CisJICAgIGVsc2UgaWYgKGNmZC0+Z2V0X2RldiAoKSA9PSBGSF9QSVBFVykKKwkgICAg ICB7CisJCWZoYW5kbGVyX3BpcGUgKnBpcGUgPSAoZmhhbmRsZXJfcGlwZSAqKShmaGFuZGxlcl9i YXNlICopIGNmZDsKKwkJcGlwZS0+Y2xvc2VfcXVlcnlfaGFuZGxlICgpOworCQlwaXBlLT5zZXRf cGlwZV9ub25fYmxvY2tpbmcgKGZhbHNlKTsKKwkgICAgICB9CisJICAgIGVsc2UgaWYgKGNmZC0+ Z2V0X2RldiAoKSA9PSBGSF9QSVBFUikKKwkgICAgICB7CisJCWZoYW5kbGVyX3BpcGUgKnBpcGUg PSAoZmhhbmRsZXJfcGlwZSAqKShmaGFuZGxlcl9iYXNlICopIGNmZDsKKwkJcGlwZS0+c2V0X3Bp cGVfbm9uX2Jsb2NraW5nIChmYWxzZSk7CisJICAgICAgfQogCX0KIAogICAgICAgYm9vbCBlbmFi bGVfcGNvbiA9IGZhbHNlOwotLSAKMi4zMy4wCgo= --Multipart=_Tue__14_Sep_2021_17_08_38_+0900_B+0oY4h+belJmrwi Content-Type: application/octet-stream; name="0002-Cygwin-pipe-fifo-Release-select_sem-semaphore-as-muc.patch" Content-Disposition: attachment; filename="0002-Cygwin-pipe-fifo-Release-select_sem-semaphore-as-muc.patch" Content-Transfer-Encoding: base64 RnJvbSBlNWM2NDk2MGZkZGQ0M2YwOGRhZTdhZmJlM2FlMWM3NWJkNDFjODFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYWthc2hpIFlhbm8gPHRha2FzaGkueWFub0BuaWZ0eS5uZS5q cD4KRGF0ZTogVHVlLCAxNCBTZXAgMjAyMSAxMzoxMDo1NCArMDkwMApTdWJqZWN0OiBbUEFUQ0gg Mi8yXSBDeWd3aW46IHBpcGUsIGZpZm86IFJlbGVhc2Ugc2VsZWN0X3NlbSBzZW1hcGhvcmUgYXMg bXVjaAogYXMgbmVlZGVkLgoKLSBDdXJyZW50bHksIHJhd19yZWFkKCksIHJhd193cml0ZSgpIGFu ZCBjbG9zZSgpIHJlbGVhc2Ugc2VsZWN0X3NlbQogIHVuY29uZGl0aW9uYWxseSBldmVuIGlmIG5v IHdhaXRlciBmb3Igc2VsZWN0X3NlbSBleGlzdHMuIFdpdGggdGhpcwogIHBhdGNoLCBvbmx5IHRo ZSBtaW5pbXVtIG51bWJlciBvZiBzZW1hcGhvcmVzIHJlcXVpcmVkIGlzIHJlbGVhc2VkLgotLS0K IHdpbnN1cC9jeWd3aW4vZmhhbmRsZXIuaCAgICAgICB8ICA0ICsrKysKIHdpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfZmlmby5jYyB8IDI4ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIHdpbnN1 cC9jeWd3aW4vZmhhbmRsZXJfcGlwZS5jYyB8IDI4ICsrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0KIDMgZmlsZXMgY2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlci5oIGIvd2luc3VwL2N5Z3dpbi9maGFu ZGxlci5oCmluZGV4IGRiMjMyNTE0NC4uOTU4MGE2OThjIDEwMDY0NAotLS0gYS93aW5zdXAvY3ln d2luL2ZoYW5kbGVyLmgKKysrIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlci5oCkBAIC0xMTc3LDYg KzExNzcsNyBAQCBjbGFzcyBmaGFuZGxlcl9waXBlX2ZpZm86IHB1YmxpYyBmaGFuZGxlcl9iYXNl CiAgcHJvdGVjdGVkOgogICBzaXplX3QgcGlwZV9idWZfc2l6ZTsKICAgSEFORExFIHF1ZXJ5X2hk bDsKKyAgdmlydHVhbCB2b2lkIHJlbGVhc2Vfc2VsZWN0X3NlbSAoY29uc3QgY2hhciAqKSB7fTsK IAogIHB1YmxpYzoKICAgZmhhbmRsZXJfcGlwZV9maWZvICgpOwpAQCAtMTIwMSw2ICsxMjAyLDcg QEAgY2xhc3MgZmhhbmRsZXJfcGlwZTogcHVibGljIGZoYW5kbGVyX3BpcGVfZmlmbwogcHJpdmF0 ZToKICAgSEFORExFIHJlYWRfbXR4OwogICBwaWRfdCBwb3Blbl9waWQ7CisgIHZvaWQgcmVsZWFz ZV9zZWxlY3Rfc2VtIChjb25zdCBjaGFyICopOwogcHVibGljOgogICBmaGFuZGxlcl9waXBlICgp OwogCkBAIC0xNDQ0LDYgKzE0NDYsOCBAQCBjbGFzcyBmaGFuZGxlcl9maWZvOiBwdWJsaWMgZmhh bmRsZXJfcGlwZV9maWZvCiAgIHZvaWQgc2hhcmVkX2ZjX2hhbmRsZXJfdXBkYXRlZCAoYm9vbCB2 YWwpCiAgIHsgc2htZW0tPnNoYXJlZF9mY19oYW5kbGVyX3VwZGF0ZWQgKHZhbCk7IH0KIAorICB2 b2lkIHJlbGVhc2Vfc2VsZWN0X3NlbSAoY29uc3QgY2hhciAqKTsKKwogcHVibGljOgogICBmaGFu ZGxlcl9maWZvICgpOwogICB+ZmhhbmRsZXJfZmlmbyAoKQpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5 Z3dpbi9maGFuZGxlcl9maWZvLmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9maWZvLmNjCmlu ZGV4IDM3NDk4ZjU0Ny4uNDg5YmE1MjhjIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2ZoYW5k bGVyX2ZpZm8uY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9maWZvLmNjCkBAIC0xMTg1 LDYgKzExODUsMjIgQEAgZmhhbmRsZXJfZmlmbzo6dGFrZV9vd25lcnNoaXAgKERXT1JEIHRpbWVv dXQpCiAgIHJldHVybiByZXQ7CiB9CiAKK3ZvaWQKK2ZoYW5kbGVyX2ZpZm86OnJlbGVhc2Vfc2Vs ZWN0X3NlbSAoY29uc3QgY2hhciAqZnJvbSkKK3sKKyAgTE9ORyBuX3JlbGVhc2U7CisgIGlmIChy ZWFkZXIpIC8qIE51bWJlciBvZiBzZWxlY3QoKSBjYWxsLiAqLworICAgIG5fcmVsZWFzZSA9IGdl dF9vYmpfaGFuZGxlX2NvdW50IChzZWxlY3Rfc2VtKQorICAgICAgLSBnZXRfb2JqX2hhbmRsZV9j b3VudCAocmVhZF9yZWFkeSk7CisgIGVsc2UgLyogTnVtYmVyIG9mIHNlbGVjdCgpIGFuZCByZWFk ZXIgKi8KKyAgICBuX3JlbGVhc2UgPSBnZXRfb2JqX2hhbmRsZV9jb3VudCAoc2VsZWN0X3NlbSkK KyAgICAgIC0gZ2V0X29ial9oYW5kbGVfY291bnQgKGdldF9oYW5kbGUgKCkpOworICBkZWJ1Z19w cmludGYoIiVzKCVzKSByZWxlYXNlICVkIiwgZnJvbSwKKwkgICAgICAgcmVhZGVyID8gInJlYWRl ciIgOiAid3JpdGVyIiwgbl9yZWxlYXNlKTsKKyAgaWYgKG5fcmVsZWFzZSkKKyAgICBSZWxlYXNl U2VtYXBob3JlIChzZWxlY3Rfc2VtLCBuX3JlbGVhc2UsIE5VTEwpOworfQorCiB2b2lkIF9fcmVn MwogZmhhbmRsZXJfZmlmbzo6cmF3X3JlYWQgKHZvaWQgKmluX3B0ciwgc2l6ZV90JiBsZW4pCiB7 CkBAIC0xMzcyLDcgKzEzODgsNyBAQCBvdXQ6CiAgIGZpZm9fY2xpZW50X3VubG9jayAoKTsKICAg cmVhZGluZ191bmxvY2sgKCk7CiAgIGlmIChzZWxlY3Rfc2VtKQotICAgIFJlbGVhc2VTZW1hcGhv cmUgKHNlbGVjdF9zZW0sIGdldF9vYmpfaGFuZGxlX2NvdW50IChzZWxlY3Rfc2VtKSwgTlVMTCk7 CisgICAgcmVsZWFzZV9zZWxlY3Rfc2VtICgicmF3X3JlYWQiKTsKIH0KIAogaW50IF9fcmVnMgpA QCAtMTQ4Myw2ICsxNDk5LDExIEBAIGZoYW5kbGVyX2ZpZm86OmNhbmNlbF9yZWFkZXJfdGhyZWFk ICgpCiBpbnQKIGZoYW5kbGVyX2ZpZm86OmNsb3NlICgpCiB7CisgIGlmIChzZWxlY3Rfc2VtKQor ICAgIHsKKyAgICAgIHJlbGVhc2Vfc2VsZWN0X3NlbSAoImNsb3NlIik7CisgICAgICBOdENsb3Nl IChzZWxlY3Rfc2VtKTsKKyAgICB9CiAgIGlmICh3cml0ZXIpCiAgICAgewogICAgICAgbndyaXRl cnNfbG9jayAoKTsKQEAgLTE1NzQsMTEgKzE1OTUsNiBAQCBmaGFuZGxlcl9maWZvOjpjbG9zZSAo KQogICAgIE50Q2xvc2UgKHdyaXRlX3JlYWR5KTsKICAgaWYgKHdyaXRlcl9vcGVuaW5nKQogICAg IE50Q2xvc2UgKHdyaXRlcl9vcGVuaW5nKTsKLSAgaWYgKHNlbGVjdF9zZW0pCi0gICAgewotICAg ICAgUmVsZWFzZVNlbWFwaG9yZSAoc2VsZWN0X3NlbSwgZ2V0X29ial9oYW5kbGVfY291bnQgKHNl bGVjdF9zZW0pLCBOVUxMKTsKLSAgICAgIE50Q2xvc2UgKHNlbGVjdF9zZW0pOwotICAgIH0KICAg aWYgKG5vaGFuZGxlICgpKQogICAgIHJldHVybiAwOwogICBlbHNlCmRpZmYgLS1naXQgYS93aW5z dXAvY3lnd2luL2ZoYW5kbGVyX3BpcGUuY2MgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3BpcGUu Y2MKaW5kZXggNGRhYjMwMTVkLi5jMDM3OWU4MWQgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfcGlwZS5jYworKysgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3BpcGUuY2MKQEAg LTIzNyw2ICsyMzcsMjIgQEAgZmhhbmRsZXJfcGlwZTo6Z2V0X3Byb2NfZmRfbmFtZSAoY2hhciAq YnVmKQogICByZXR1cm4gYnVmOwogfQogCit2b2lkCitmaGFuZGxlcl9waXBlOjpyZWxlYXNlX3Nl bGVjdF9zZW0gKGNvbnN0IGNoYXIgKmZyb20pCit7CisgIExPTkcgbl9yZWxlYXNlOworICBpZiAo Z2V0X2RldiAoKSA9PSBGSF9QSVBFUikgLyogTnVtYmVyIG9mIHNlbGVjdCgpIGFuZCB3cml0ZXIg Ki8KKyAgICBuX3JlbGVhc2UgPSBnZXRfb2JqX2hhbmRsZV9jb3VudCAoc2VsZWN0X3NlbSkKKyAg ICAgIC0gZ2V0X29ial9oYW5kbGVfY291bnQgKHJlYWRfbXR4KTsKKyAgZWxzZSAvKiBOdW1iZXIg b2Ygc2VsZWN0KCkgY2FsbCAqLworICAgIG5fcmVsZWFzZSA9IGdldF9vYmpfaGFuZGxlX2NvdW50 IChzZWxlY3Rfc2VtKQorICAgICAgLSBnZXRfb2JqX2hhbmRsZV9jb3VudCAocXVlcnlfaGRsKTsK KyAgZGVidWdfcHJpbnRmKCIlcyglcykgcmVsZWFzZSAlZCIsIGZyb20sCisJICAgICAgIGdldF9k ZXYgKCkgPT0gRkhfUElQRVIgPyAiUElQRVIiIDogIlBJUEVXIiwgbl9yZWxlYXNlKTsKKyAgaWYg KG5fcmVsZWFzZSkKKyAgICBSZWxlYXNlU2VtYXBob3JlIChzZWxlY3Rfc2VtLCBuX3JlbGVhc2Us IE5VTEwpOworfQorCiB2b2lkIF9fcmVnMwogZmhhbmRsZXJfcGlwZTo6cmF3X3JlYWQgKHZvaWQg KnB0ciwgc2l6ZV90JiBsZW4pCiB7CkBAIC0zMjgsOCArMzQ0LDcgQEAgZmhhbmRsZXJfcGlwZTo6 cmF3X3JlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pCiAJICBwdHIgPSAoKGNoYXIgKikgcHRy KSArIG5ieXRlc19ub3c7CiAJICBuYnl0ZXMgKz0gbmJ5dGVzX25vdzsKIAkgIGlmIChzZWxlY3Rf c2VtICYmIG5ieXRlc19ub3cgPiAwKQotCSAgICBSZWxlYXNlU2VtYXBob3JlIChzZWxlY3Rfc2Vt LAotCQkJICAgICAgZ2V0X29ial9oYW5kbGVfY291bnQgKHNlbGVjdF9zZW0pLCBOVUxMKTsKKwkg ICAgcmVsZWFzZV9zZWxlY3Rfc2VtICgicmF3X3JlYWQiKTsKIAl9CiAgICAgICBlbHNlCiAJewpA QCAtNDg4LDggKzUwMyw3IEBAIGZoYW5kbGVyX3BpcGVfZmlmbzo6cmF3X3dyaXRlIChjb25zdCB2 b2lkICpwdHIsIHNpemVfdCBsZW4pCiAJICBwdHIgPSAoKGNoYXIgKikgcHRyKSArIG5ieXRlc19u b3c7CiAJICBuYnl0ZXMgKz0gbmJ5dGVzX25vdzsKIAkgIGlmIChzZWxlY3Rfc2VtICYmIG5ieXRl c19ub3cgPiAwKQotCSAgICBSZWxlYXNlU2VtYXBob3JlIChzZWxlY3Rfc2VtLAotCQkJICAgICAg Z2V0X29ial9oYW5kbGVfY291bnQgKHNlbGVjdF9zZW0pLCBOVUxMKTsKKwkgICAgcmVsZWFzZV9z ZWxlY3Rfc2VtICgicmF3X3dyaXRlIik7CiAJICAvKiAwIGJ5dGVzIHJldHVybmVkPyAgRUFHQUlO LiAgU2VlIGFib3ZlLiAqLwogCSAgaWYgKE5UX1NVQ0NFU1MgKHN0YXR1cykgJiYgbmJ5dGVzID09 IDApCiAJICAgIHsKQEAgLTU5NiwxMyArNjEwLDEzIEBAIGZoYW5kbGVyX3BpcGU6OmR1cCAoZmhh bmRsZXJfYmFzZSAqY2hpbGQsIGludCBmbGFncykKIGludAogZmhhbmRsZXJfcGlwZTo6Y2xvc2Ug KCkKIHsKLSAgaWYgKHJlYWRfbXR4KQotICAgIENsb3NlSGFuZGxlIChyZWFkX210eCk7CiAgIGlm IChzZWxlY3Rfc2VtKQogICAgIHsKLSAgICAgIFJlbGVhc2VTZW1hcGhvcmUgKHNlbGVjdF9zZW0s IGdldF9vYmpfaGFuZGxlX2NvdW50IChzZWxlY3Rfc2VtKSwgTlVMTCk7CisgICAgICByZWxlYXNl X3NlbGVjdF9zZW0gKCJjbG9zZSIpOwogICAgICAgQ2xvc2VIYW5kbGUgKHNlbGVjdF9zZW0pOwog ICAgIH0KKyAgaWYgKHJlYWRfbXR4KQorICAgIENsb3NlSGFuZGxlIChyZWFkX210eCk7CiAgIGlm IChxdWVyeV9oZGwpCiAgICAgQ2xvc2VIYW5kbGUgKHF1ZXJ5X2hkbCk7CiAgIHJldHVybiBmaGFu ZGxlcl9iYXNlOjpjbG9zZSAoKTsKLS0gCjIuMzMuMAoK --Multipart=_Tue__14_Sep_2021_17_08_38_+0900_B+0oY4h+belJmrwi--