From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.bugs Subject: bug#66020: [PATCH] Reduce GC churn in read_process_output Date: Sat, 16 Sep 2023 04:26:11 +0300 Message-ID: <3a6287c3-8458-663e-ffce-8f48b30bf73d@gutov.dev> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------ujujwY71SxzZu4tHORIFXUna" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="9048"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 To: 66020@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Sep 16 03:27:17 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qhK5c-00027b-HS for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 16 Sep 2023 03:27:17 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qhK5J-0002AQ-94; Fri, 15 Sep 2023 21:26:57 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qhK5I-0002AC-44 for bug-gnu-emacs@gnu.org; Fri, 15 Sep 2023 21:26:56 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qhK5H-0003u1-SC for bug-gnu-emacs@gnu.org; Fri, 15 Sep 2023 21:26:55 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qhK5O-0000ay-H9 for bug-gnu-emacs@gnu.org; Fri, 15 Sep 2023 21:27:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 16 Sep 2023 01:27:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 66020 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.16948275952238 (code B ref -1); Sat, 16 Sep 2023 01:27:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 16 Sep 2023 01:26:35 +0000 Original-Received: from localhost ([127.0.0.1]:45112 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qhK4w-0000a1-UD for submit@debbugs.gnu.org; Fri, 15 Sep 2023 21:26:35 -0400 Original-Received: from lists.gnu.org ([2001:470:142::17]:56812) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qhK4u-0000Zi-N9 for submit@debbugs.gnu.org; Fri, 15 Sep 2023 21:26:33 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qhK4i-00021c-GV for bug-gnu-emacs@gnu.org; Fri, 15 Sep 2023 21:26:20 -0400 Original-Received: from wout5-smtp.messagingengine.com ([64.147.123.21]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qhK4f-0003bU-VL for bug-gnu-emacs@gnu.org; Fri, 15 Sep 2023 21:26:20 -0400 Original-Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.west.internal (Postfix) with ESMTP id 8492D320091A for ; Fri, 15 Sep 2023 21:26:14 -0400 (EDT) Original-Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Fri, 15 Sep 2023 21:26:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :content-type:content-type:date:date:from:from:in-reply-to :message-id:mime-version:reply-to:sender:subject:subject:to:to; s=fm3; t=1694827573; x=1694913973; bh=SdGI/sXivr/Bm6TEtmwbQHn/9 D9AGPCQdOVUfR48L78=; b=bJhrmA6/9vzWz0up4od2li6f1mpcaj8V0IKIl5t89 oDXcG06Su9fW7E5B8aF8b1dYzYfxQb68/KHlzTyr6VkDvVBjsnSvA0rlIYjf1WoQ 1F7wGrM5XrSu0M+Qg07iwoLop0EZk5tF/pzjvyvOmOYtLxEVExa0VIiPva/5VOEO QGBTISbAxyFTCKAAY+9k8j2cSyYHdu19ssS2uoOrjhMvhI0IZ/qQrbJjXj2Ms8b/ iWTx6bsJO3X+qk/quZmHGBRDX0qaUttFBUIhreovWacvQlOy1b4n8kvYHboHgww+ 0JZD53je2Si4gf4Bttj+qlHOXL+RWtkXqLRKmFgqI/ZwQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:message-id :mime-version:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1694827573; x=1694913973; bh=SdGI/sXivr/Bm6TEtmwbQHn/9D9AGPCQdOV UfR48L78=; b=GgZaUFFbGkGiH4pVQnQCkhwr7PgUCyxTV4cB9mN9baFxB8lPPfH MSqBBgvkpRKPc/9KVfLTrt9y5jBHcO13+ZoCxkqHLg8Um+7rawJELtkZVKy2F7IJ ilJMFWcqNhibiDoYfdLRZA0hJdTDZp4qxZfDJqoTiMCRn+g9YxdSZsieQ+o+D8nq sEzfppXXtkT6DSph2u0s2b/7wog3oPBPbd28LR+7j5rvF9ErmkqtI8nA/xk8rz8m GStzbX9WEQwW4JNIlzinjddpDwiKe8OOpMFAKxNm8Q7zFsiu0YwiN3dI2XTCeKM+ DHKjyxsQkdFCgFpDMdrMFiRb2k/Xpghobcg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedviedrudejfedggeeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpegtkfffgggfvffhufesmhdtreertd efjeenucfhrhhomhepffhmihhtrhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhv rdguvghvqeenucggtffrrghtthgvrhhnpeduteeijeeiveehveehtdehjefhtdevuedtie efffeivdeijeejvdevveegvdevvdenucffohhmrghinhepghhnuhdrohhrghenucevlhhu shhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhithhrhiesgh huthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Original-Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Fri, 15 Sep 2023 21:26:13 -0400 (EDT) Content-Language: en-US Received-SPF: pass client-ip=64.147.123.21; envelope-from=dmitry@gutov.dev; helo=wout5-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:270569 Archived-At: This is a multi-part message in MIME format. --------------ujujwY71SxzZu4tHORIFXUna Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit As suggested, I'm filing this in a new bug report for wider review. The updated patch attached. The previous discussion was in bug#64735, and the benchmarks (which more or less hold for the new patch as well) can be viewed here (last table): https://debbugs.gnu.org/cgi/bugreport.cgi?bug=64735#506. Except the new version somehow performs a little better at read-process-output-max=4096 as well, despite seemingly doing more. Let me know if I DRYed this too much, or if there are better names for the extracted common routines, or etc. Or for the new variable (read-process-output-fast). --------------ujujwY71SxzZu4tHORIFXUna Content-Type: text/x-patch; charset=UTF-8; name="read_and_insert_process_output_v2.diff" Content-Disposition: attachment; filename="read_and_insert_process_output_v2.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9wcm9jZXNzLmMgYi9zcmMvcHJvY2Vzcy5jCmluZGV4IDA4Y2I4 MTBlYzEzLi44ZWFkNTA4YjcyNiAxMDA2NDQKLS0tIGEvc3JjL3Byb2Nlc3MuYworKysgYi9z cmMvcHJvY2Vzcy5jCkBAIC02MTEyLDYgKzYxMTIsMTEgQEAgcmVhZF9hbmRfZGlzcG9zZV9v Zl9wcm9jZXNzX291dHB1dCAoc3RydWN0IExpc3BfUHJvY2VzcyAqcCwgY2hhciAqY2hhcnMs CiAJCQkJICAgIHNzaXplX3QgbmJ5dGVzLAogCQkJCSAgICBzdHJ1Y3QgY29kaW5nX3N5c3Rl bSAqY29kaW5nKTsKIAorc3RhdGljIHZvaWQKK3JlYWRfYW5kX2luc2VydF9wcm9jZXNzX291 dHB1dCAoc3RydWN0IExpc3BfUHJvY2VzcyAqcCwgY2hhciAqYnVmLAorCQkJCSAgICBzc2l6 ZV90IG5yZWFkLAorCQkJCXN0cnVjdCBjb2Rpbmdfc3lzdGVtICpwcm9jZXNzX2NvZGluZyk7 CisKIC8qIFJlYWQgcGVuZGluZyBvdXRwdXQgZnJvbSB0aGUgcHJvY2VzcyBjaGFubmVsLAog ICAgc3RhcnRpbmcgd2l0aCBvdXIgYnVmZmVyZWQtYWhlYWQgY2hhcmFjdGVyIGlmIHdlIGhh dmUgb25lLgogICAgWWllbGQgbnVtYmVyIG9mIGRlY29kZWQgY2hhcmFjdGVycyByZWFkLApA QCAtNjIyNyw3ICs2MjMyLDExIEBAIHJlYWRfcHJvY2Vzc19vdXRwdXQgKExpc3BfT2JqZWN0 IHByb2MsIGludCBjaGFubmVsKQogICAgICBmcmllbmRzIGRvbid0IGV4cGVjdCBjdXJyZW50 LWJ1ZmZlciB0byBiZSBjaGFuZ2VkIGZyb20gdW5kZXIgdGhlbS4gICovCiAgIHJlY29yZF91 bndpbmRfY3VycmVudF9idWZmZXIgKCk7CiAKLSAgcmVhZF9hbmRfZGlzcG9zZV9vZl9wcm9j ZXNzX291dHB1dCAocCwgY2hhcnMsIG5ieXRlcywgY29kaW5nKTsKKyAgaWYgKHJlYWRfcHJv Y2Vzc19vdXRwdXRfZmFzdCAmJgorICAgICAgRVEgKHAtPmZpbHRlciwgUWludGVybmFsX2Rl ZmF1bHRfcHJvY2Vzc19maWx0ZXIpKQorICAgIHJlYWRfYW5kX2luc2VydF9wcm9jZXNzX291 dHB1dCAocCwgY2hhcnMsIG5ieXRlcywgY29kaW5nKTsKKyAgZWxzZQorICAgIHJlYWRfYW5k X2Rpc3Bvc2Vfb2ZfcHJvY2Vzc19vdXRwdXQgKHAsIGNoYXJzLCBuYnl0ZXMsIGNvZGluZyk7 CiAKICAgLyogSGFuZGxpbmcgdGhlIHByb2Nlc3Mgb3V0cHV0IHNob3VsZCBub3QgZGVhY3Rp dmF0ZSB0aGUgbWFyay4gICovCiAgIFZkZWFjdGl2YXRlX21hcmsgPSBvZGVhY3RpdmF0ZTsK QEAgLTYyMzYsNiArNjI0NSwxMjggQEAgcmVhZF9wcm9jZXNzX291dHB1dCAoTGlzcF9PYmpl Y3QgcHJvYywgaW50IGNoYW5uZWwpCiAgIHJldHVybiBuYnl0ZXM7CiB9CiAKK3N0YXRpYyB2 b2lkCityZWFkX3Byb2Nlc3Nfb3V0cHV0X2JlZm9yZV9pbnNlcnQgKHN0cnVjdCBMaXNwX1By b2Nlc3MgKnAsIExpc3BfT2JqZWN0ICpvbGRfcmVhZF9vbmx5LAorCQkJCSAgIHB0cmRpZmZf dCAqb2xkX2JlZ3YsIHB0cmRpZmZfdCAqb2xkX3p2LAorCQkJCSAgIHB0cmRpZmZfdCAqYmVm b3JlLCBwdHJkaWZmX3QgKmJlZm9yZV9ieXRlLAorCQkJCSAgIHB0cmRpZmZfdCAqb3BvaW50 LCBwdHJkaWZmX3QgKm9wb2ludF9ieXRlKQoreworICBGc2V0X2J1ZmZlciAocC0+YnVmZmVy KTsKKyAgKm9wb2ludCA9IFBUOworICAqb3BvaW50X2J5dGUgPSBQVF9CWVRFOworICAqb2xk X3JlYWRfb25seSA9IEJWQVIgKGN1cnJlbnRfYnVmZmVyLCByZWFkX29ubHkpOworICAqb2xk X2JlZ3YgPSBCRUdWOworICAqb2xkX3p2ID0gWlY7CisKKyAgYnNldF9yZWFkX29ubHkgKGN1 cnJlbnRfYnVmZmVyLCBRbmlsKTsKKworICAvKiBJbnNlcnQgbmV3IG91dHB1dCBpbnRvIGJ1 ZmZlciBhdCB0aGUgY3VycmVudCBlbmQtb2Ytb3V0cHV0CisgICAgIG1hcmtlciwgdGh1cyBw cmVzZXJ2aW5nIGxvZ2ljYWwgb3JkZXJpbmcgb2YgaW5wdXQgYW5kIG91dHB1dC4gICovCisg IGlmIChYTUFSS0VSIChwLT5tYXJrKS0+YnVmZmVyKQorICAgIHNldF9wb2ludF9mcm9tX21h cmtlciAocC0+bWFyayk7CisgIGVsc2UKKyAgICBTRVRfUFRfQk9USCAoWlYsIFpWX0JZVEUp OworICAqYmVmb3JlID0gUFQ7CisgICpiZWZvcmVfYnl0ZSA9IFBUX0JZVEU7CisKKyAgLyog SWYgdGhlIG91dHB1dCBtYXJrZXIgaXMgb3V0c2lkZSBvZiB0aGUgdmlzaWJsZSByZWdpb24s IHNhdmUKKyAgICAgdGhlIHJlc3RyaWN0aW9uIGFuZCB3aWRlbi4gICovCisgIGlmICghIChC RUdWIDw9IFBUICYmIFBUIDw9IFpWKSkKKyAgICBGd2lkZW4gKCk7Cit9CisKK3N0YXRpYyB2 b2lkCityZWFkX3Byb2Nlc3Nfb3V0cHV0X2FmdGVyX2luc2VydCAoc3RydWN0IExpc3BfUHJv Y2VzcyAqcCwgTGlzcF9PYmplY3QgKm9sZF9yZWFkX29ubHksCisJCQkJICBwdHJkaWZmX3Qg b2xkX2JlZ3YsIHB0cmRpZmZfdCBvbGRfenYsCisJCQkJICBwdHJkaWZmX3QgYmVmb3JlLCBw dHJkaWZmX3QgYmVmb3JlX2J5dGUsCisJCQkJICBwdHJkaWZmX3Qgb3BvaW50LCBwdHJkaWZm X3Qgb3BvaW50X2J5dGUpCit7CisgIHN0cnVjdCBidWZmZXIgKmI7CisKKyAgLyogTWFrZSBz dXJlIHRoZSBwcm9jZXNzIG1hcmtlcidzIHBvc2l0aW9uIGlzIHZhbGlkIHdoZW4gdGhlCisg ICAgIHByb2Nlc3MgYnVmZmVyIGlzIGNoYW5nZWQgaW4gdGhlIHNpZ25hbF9hZnRlcl9jaGFu Z2UgYWJvdmUuCisgICAgIFczIGlzIGtub3duIHRvIGRvIHRoYXQuICAqLworICBpZiAoQlVG RkVSUCAocC0+YnVmZmVyKQorICAgICAgJiYgKGIgPSBYQlVGRkVSIChwLT5idWZmZXIpLCBi ICE9IGN1cnJlbnRfYnVmZmVyKSkKKyAgICBzZXRfbWFya2VyX2JvdGggKHAtPm1hcmssIHAt PmJ1ZmZlciwgQlVGX1BUIChiKSwgQlVGX1BUX0JZVEUgKGIpKTsKKyAgZWxzZQorICAgIHNl dF9tYXJrZXJfYm90aCAocC0+bWFyaywgcC0+YnVmZmVyLCBQVCwgUFRfQllURSk7CisKKyAg dXBkYXRlX21vZGVfbGluZXMgPSAyMzsKKworICAvKiBNYWtlIHN1cmUgb3BvaW50IGFuZCB0 aGUgb2xkIHJlc3RyaWN0aW9ucworICAgICBmbG9hdCBhaGVhZCBvZiBhbnkgbmV3IHRleHQg anVzdCBhcyBwb2ludCB3b3VsZC4gICovCisgIGlmIChvcG9pbnQgPj0gYmVmb3JlKQorICAg IHsKKyAgICAgIG9wb2ludCArPSBQVCAtIGJlZm9yZTsKKyAgICAgIG9wb2ludF9ieXRlICs9 IFBUX0JZVEUgLSBiZWZvcmVfYnl0ZTsKKyAgICB9CisgIGlmIChvbGRfYmVndiA+IGJlZm9y ZSkKKyAgICBvbGRfYmVndiArPSBQVCAtIGJlZm9yZTsKKyAgaWYgKG9sZF96diA+PSBiZWZv cmUpCisgICAgb2xkX3p2ICs9IFBUIC0gYmVmb3JlOworCisgIC8qIElmIHRoZSByZXN0cmlj dGlvbiBpc24ndCB3aGF0IGl0IHNob3VsZCBiZSwgc2V0IGl0LiAgKi8KKyAgaWYgKG9sZF9i ZWd2ICE9IEJFR1YgfHwgb2xkX3p2ICE9IFpWKQorICAgIEZuYXJyb3dfdG9fcmVnaW9uICht YWtlX2ZpeG51bSAob2xkX2JlZ3YpLCBtYWtlX2ZpeG51bSAob2xkX3p2KSk7CisKKyAgYnNl dF9yZWFkX29ubHkgKGN1cnJlbnRfYnVmZmVyLCAqb2xkX3JlYWRfb25seSk7CisgIFNFVF9Q VF9CT1RIIChvcG9pbnQsIG9wb2ludF9ieXRlKTsKK30KKworc3RhdGljIHZvaWQgcmVhZF9h bmRfaW5zZXJ0X3Byb2Nlc3Nfb3V0cHV0IChzdHJ1Y3QgTGlzcF9Qcm9jZXNzICpwLCBjaGFy ICpidWYsCisJCQkJICAgIHNzaXplX3QgbnJlYWQsCisJCQkJICAgIHN0cnVjdCBjb2Rpbmdf c3lzdGVtICpwcm9jZXNzX2NvZGluZykKK3sKKyAgaWYgKCFucmVhZCB8fCBOSUxQIChwLT5i dWZmZXIpIHx8ICFCVUZGRVJfTElWRV9QIChYQlVGRkVSIChwLT5idWZmZXIpKSkKKyAgICBy ZXR1cm47CisKKyAgTGlzcF9PYmplY3Qgb2xkX3JlYWRfb25seTsKKyAgcHRyZGlmZl90IG9s ZF9iZWd2LCBvbGRfenY7CisgIHB0cmRpZmZfdCBiZWZvcmUsIGJlZm9yZV9ieXRlOworICBw dHJkaWZmX3Qgb3BvaW50LCBvcG9pbnRfYnl0ZTsKKworICByZWFkX3Byb2Nlc3Nfb3V0cHV0 X2JlZm9yZV9pbnNlcnQgKHAsICZvbGRfcmVhZF9vbmx5LCAmb2xkX2JlZ3YsICZvbGRfenYs CisJCQkJICAgICAmYmVmb3JlLCAmYmVmb3JlX2J5dGUsICZvcG9pbnQsICZvcG9pbnRfYnl0 ZSk7CisKKyAgLyogQWRhcHRlZCBmcm9tIGNhbGxfcHJvY2Vzcy4gICovCisgIGlmIChOSUxQ IChCVkFSIChYQlVGRkVSKHAtPmJ1ZmZlciksIGVuYWJsZV9tdWx0aWJ5dGVfY2hhcmFjdGVy cykpCisJICAgJiYgISBDT0RJTkdfTUFZX1JFUVVJUkVfREVDT0RJTkcgKHByb2Nlc3NfY29k aW5nKSkKKyAgICB7CisgICAgICBpbnNlcnRfMV9ib3RoIChidWYsIG5yZWFkLCBucmVhZCwg MCwgMCwgMCk7CisgICAgICBzaWduYWxfYWZ0ZXJfY2hhbmdlIChQVCAtIG5yZWFkLCAwLCBu cmVhZCk7CisgICAgfQorICBlbHNlCisgICAgewkJCS8qIFdlIGhhdmUgdG8gZGVjb2RlIHRo ZSBpbnB1dC4gICovCisgICAgICBMaXNwX09iamVjdCBjdXJidWY7CisgICAgICBpbnQgY2Fy cnlvdmVyID0gMDsKKyAgICAgIHNwZWNwZGxfcmVmIGNvdW50MSA9IFNQRUNQRExfSU5ERVgg KCk7CisKKyAgICAgIFhTRVRCVUZGRVIgKGN1cmJ1ZiwgY3VycmVudF9idWZmZXIpOworICAg ICAgLyogV2UgY2Fubm90IGFsbG93IGFmdGVyLWNoYW5nZS1mdW5jdGlvbnMgYmUgcnVuCisJ IGR1cmluZyBkZWNvZGluZywgYmVjYXVzZSB0aGF0IG1pZ2h0IG1vZGlmeSB0aGUKKwkgYnVm ZmVyLCB3aGlsZSB3ZSByZWx5IG9uIHByb2Nlc3NfY29kaW5nLnByb2R1Y2VkIHRvCisJIGZh aXRoZnVsbHkgcmVmbGVjdCBpbnNlcnRlZCB0ZXh0IHVudGlsIHdlCisJIFRFTVBfU0VUX1BU X0JPVEggYmVsb3cuICAqLworICAgICAgc3BlY2JpbmQgKFFpbmhpYml0X21vZGlmaWNhdGlv bl9ob29rcywgUXQpOworICAgICAgZGVjb2RlX2NvZGluZ19jX3N0cmluZyAocHJvY2Vzc19j b2RpbmcsCisJCQkgICAgICAodW5zaWduZWQgY2hhciAqKSBidWYsIG5yZWFkLCBjdXJidWYp OworICAgICAgdW5iaW5kX3RvIChjb3VudDEsIFFuaWwpOworCisgICAgICBURU1QX1NFVF9Q VF9CT1RIIChQVCArIHByb2Nlc3NfY29kaW5nLT5wcm9kdWNlZF9jaGFyLAorCQkJUFRfQllU RSArIHByb2Nlc3NfY29kaW5nLT5wcm9kdWNlZCk7CisgICAgICBzaWduYWxfYWZ0ZXJfY2hh bmdlIChQVCAtIHByb2Nlc3NfY29kaW5nLT5wcm9kdWNlZF9jaGFyLAorCQkJICAgMCwgcHJv Y2Vzc19jb2RpbmctPnByb2R1Y2VkX2NoYXIpOworICAgICAgY2FycnlvdmVyID0gcHJvY2Vz c19jb2RpbmctPmNhcnJ5b3Zlcl9ieXRlczsKKyAgICAgIGlmIChjYXJyeW92ZXIgPiAwKQor CW1lbWNweSAoYnVmLCBwcm9jZXNzX2NvZGluZy0+Y2FycnlvdmVyLAorCQlwcm9jZXNzX2Nv ZGluZy0+Y2FycnlvdmVyX2J5dGVzKTsKKyAgICB9CisKKyAgcmVhZF9wcm9jZXNzX291dHB1 dF9hZnRlcl9pbnNlcnQgKHAsICZvbGRfcmVhZF9vbmx5LCBvbGRfYmVndiwgb2xkX3p2LAor CQkJCSAgICBiZWZvcmUsIGJlZm9yZV9ieXRlLCBvcG9pbnQsIG9wb2ludF9ieXRlKTsKK30K Kwogc3RhdGljIHZvaWQKIHJlYWRfYW5kX2Rpc3Bvc2Vfb2ZfcHJvY2Vzc19vdXRwdXQgKHN0 cnVjdCBMaXNwX1Byb2Nlc3MgKnAsIGNoYXIgKmNoYXJzLAogCQkJCSAgICBzc2l6ZV90IG5i eXRlcywKQEAgLTYzMzksNyArNjQ3MCw2IEBAIERFRlVOICgiaW50ZXJuYWwtZGVmYXVsdC1w cm9jZXNzLWZpbHRlciIsIEZpbnRlcm5hbF9kZWZhdWx0X3Byb2Nlc3NfZmlsdGVyLAogICAo TGlzcF9PYmplY3QgcHJvYywgTGlzcF9PYmplY3QgdGV4dCkKIHsKICAgc3RydWN0IExpc3Bf UHJvY2VzcyAqcDsKLSAgcHRyZGlmZl90IG9wb2ludDsKIAogICBDSEVDS19QUk9DRVNTIChw cm9jKTsKICAgcCA9IFhQUk9DRVNTIChwcm9jKTsKQEAgLTYzNTAsMzEgKzY0ODAsMTAgQEAg REVGVU4gKCJpbnRlcm5hbC1kZWZhdWx0LXByb2Nlc3MtZmlsdGVyIiwgRmludGVybmFsX2Rl ZmF1bHRfcHJvY2Vzc19maWx0ZXIsCiAgICAgICBMaXNwX09iamVjdCBvbGRfcmVhZF9vbmx5 OwogICAgICAgcHRyZGlmZl90IG9sZF9iZWd2LCBvbGRfenY7CiAgICAgICBwdHJkaWZmX3Qg YmVmb3JlLCBiZWZvcmVfYnl0ZTsKLSAgICAgIHB0cmRpZmZfdCBvcG9pbnRfYnl0ZTsKLSAg ICAgIHN0cnVjdCBidWZmZXIgKmI7Ci0KLSAgICAgIEZzZXRfYnVmZmVyIChwLT5idWZmZXIp OwotICAgICAgb3BvaW50ID0gUFQ7Ci0gICAgICBvcG9pbnRfYnl0ZSA9IFBUX0JZVEU7Ci0g ICAgICBvbGRfcmVhZF9vbmx5ID0gQlZBUiAoY3VycmVudF9idWZmZXIsIHJlYWRfb25seSk7 Ci0gICAgICBvbGRfYmVndiA9IEJFR1Y7Ci0gICAgICBvbGRfenYgPSBaVjsKLQotICAgICAg YnNldF9yZWFkX29ubHkgKGN1cnJlbnRfYnVmZmVyLCBRbmlsKTsKLQotICAgICAgLyogSW5z ZXJ0IG5ldyBvdXRwdXQgaW50byBidWZmZXIgYXQgdGhlIGN1cnJlbnQgZW5kLW9mLW91dHB1 dAotCSBtYXJrZXIsIHRodXMgcHJlc2VydmluZyBsb2dpY2FsIG9yZGVyaW5nIG9mIGlucHV0 IGFuZCBvdXRwdXQuICAqLwotICAgICAgaWYgKFhNQVJLRVIgKHAtPm1hcmspLT5idWZmZXIp Ci0Jc2V0X3BvaW50X2Zyb21fbWFya2VyIChwLT5tYXJrKTsKLSAgICAgIGVsc2UKLQlTRVRf UFRfQk9USCAoWlYsIFpWX0JZVEUpOwotICAgICAgYmVmb3JlID0gUFQ7Ci0gICAgICBiZWZv cmVfYnl0ZSA9IFBUX0JZVEU7CisgICAgICBwdHJkaWZmX3Qgb3BvaW50LCBvcG9pbnRfYnl0 ZTsKIAotICAgICAgLyogSWYgdGhlIG91dHB1dCBtYXJrZXIgaXMgb3V0c2lkZSBvZiB0aGUg dmlzaWJsZSByZWdpb24sIHNhdmUKLQkgdGhlIHJlc3RyaWN0aW9uIGFuZCB3aWRlbi4gICov Ci0gICAgICBpZiAoISAoQkVHViA8PSBQVCAmJiBQVCA8PSBaVikpCi0JRndpZGVuICgpOwor ICAgICAgcmVhZF9wcm9jZXNzX291dHB1dF9iZWZvcmVfaW5zZXJ0IChwLCAmb2xkX3JlYWRf b25seSwgJm9sZF9iZWd2LCAmb2xkX3p2LAorCQkJCQkgJmJlZm9yZSwgJmJlZm9yZV9ieXRl LCAmb3BvaW50LCAmb3BvaW50X2J5dGUpOwogCiAgICAgICAvKiBBZGp1c3QgdGhlIG11bHRp Ynl0ZW5lc3Mgb2YgVEVYVCB0byB0aGF0IG9mIHRoZSBidWZmZXIuICAqLwogICAgICAgaWYg KE5JTFAgKEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBlbmFibGVfbXVsdGlieXRlX2NoYXJhY3Rl cnMpKQpAQCAtNjM4NywzNSArNjQ5Niw4IEBAIERFRlVOICgiaW50ZXJuYWwtZGVmYXVsdC1w cm9jZXNzLWZpbHRlciIsIEZpbnRlcm5hbF9kZWZhdWx0X3Byb2Nlc3NfZmlsdGVyLAogICAg ICAgaW5zZXJ0X2Zyb21fc3RyaW5nX2JlZm9yZV9tYXJrZXJzICh0ZXh0LCAwLCAwLAogCQkJ CQkgU0NIQVJTICh0ZXh0KSwgU0JZVEVTICh0ZXh0KSwgMCk7CiAKLSAgICAgIC8qIE1ha2Ug c3VyZSB0aGUgcHJvY2VzcyBtYXJrZXIncyBwb3NpdGlvbiBpcyB2YWxpZCB3aGVuIHRoZQot CSBwcm9jZXNzIGJ1ZmZlciBpcyBjaGFuZ2VkIGluIHRoZSBzaWduYWxfYWZ0ZXJfY2hhbmdl IGFib3ZlLgotCSBXMyBpcyBrbm93biB0byBkbyB0aGF0LiAgKi8KLSAgICAgIGlmIChCVUZG RVJQIChwLT5idWZmZXIpCi0JICAmJiAoYiA9IFhCVUZGRVIgKHAtPmJ1ZmZlciksIGIgIT0g Y3VycmVudF9idWZmZXIpKQotCXNldF9tYXJrZXJfYm90aCAocC0+bWFyaywgcC0+YnVmZmVy LCBCVUZfUFQgKGIpLCBCVUZfUFRfQllURSAoYikpOwotICAgICAgZWxzZQotCXNldF9tYXJr ZXJfYm90aCAocC0+bWFyaywgcC0+YnVmZmVyLCBQVCwgUFRfQllURSk7Ci0KLSAgICAgIHVw ZGF0ZV9tb2RlX2xpbmVzID0gMjM7Ci0KLSAgICAgIC8qIE1ha2Ugc3VyZSBvcG9pbnQgYW5k IHRoZSBvbGQgcmVzdHJpY3Rpb25zCi0JIGZsb2F0IGFoZWFkIG9mIGFueSBuZXcgdGV4dCBq dXN0IGFzIHBvaW50IHdvdWxkLiAgKi8KLSAgICAgIGlmIChvcG9pbnQgPj0gYmVmb3JlKQot CXsKLQkgIG9wb2ludCArPSBQVCAtIGJlZm9yZTsKLQkgIG9wb2ludF9ieXRlICs9IFBUX0JZ VEUgLSBiZWZvcmVfYnl0ZTsKLQl9Ci0gICAgICBpZiAob2xkX2JlZ3YgPiBiZWZvcmUpCi0J b2xkX2JlZ3YgKz0gUFQgLSBiZWZvcmU7Ci0gICAgICBpZiAob2xkX3p2ID49IGJlZm9yZSkK LQlvbGRfenYgKz0gUFQgLSBiZWZvcmU7Ci0KLSAgICAgIC8qIElmIHRoZSByZXN0cmljdGlv biBpc24ndCB3aGF0IGl0IHNob3VsZCBiZSwgc2V0IGl0LiAgKi8KLSAgICAgIGlmIChvbGRf YmVndiAhPSBCRUdWIHx8IG9sZF96diAhPSBaVikKLQlGbmFycm93X3RvX3JlZ2lvbiAobWFr ZV9maXhudW0gKG9sZF9iZWd2KSwgbWFrZV9maXhudW0gKG9sZF96dikpOwotCi0gICAgICBi c2V0X3JlYWRfb25seSAoY3VycmVudF9idWZmZXIsIG9sZF9yZWFkX29ubHkpOwotICAgICAg U0VUX1BUX0JPVEggKG9wb2ludCwgb3BvaW50X2J5dGUpOworICAgICAgcmVhZF9wcm9jZXNz X291dHB1dF9hZnRlcl9pbnNlcnQgKHAsICZvbGRfcmVhZF9vbmx5LCBvbGRfYmVndiwgb2xk X3p2LAorCQkJCQliZWZvcmUsIGJlZm9yZV9ieXRlLCBvcG9pbnQsIG9wb2ludF9ieXRlKTsK ICAgICB9CiAgIHJldHVybiBRbmlsOwogfQpAQCAtODc0MCw2ICs4ODIyLDEzIEBAIHN5bXNf b2ZfcHJvY2VzcyAodm9pZCkKIC9wcm9jL3N5cy9mcy9waXBlLW1heC1zaXplLiAgU2VlIHBp cGUoNykgbWFucGFnZSBmb3IgZGV0YWlscy4gICovKTsKICAgcmVhZF9wcm9jZXNzX291dHB1 dF9tYXggPSA0MDk2OwogCisgIERFRlZBUl9CT09MICgicmVhZC1wcm9jZXNzLW91dHB1dC1m YXN0IiwgcmVhZF9wcm9jZXNzX291dHB1dF9mYXN0LAorCSAgICAgICBkb2M6IC8qIE5vbi1u aWwgdG8gb3B0aW1pemUgdGhlIGluc2VydGlvbiBvZiBwcm9jZXNzIG91dHB1dC4KK1dlIHNr aXAgY2FsbGluZyBgaW50ZXJuYWwtZGVmYXVsdC1wcm9jZXNzLWZpbHRlcicgYW5kIGRvbid0 IGFsbG9jYXRlCit0aGUgTGlzcCBzdHJpbmcgdGhhdCB3b3VsZCBiZSB1c2VkIGFzIGl0cyBh cmd1bWVudC4gIE9ubHkgYWZmZWN0cyB0aGUKK2Nhc2Ugb2YgYXN5bmNocm9ub3VzIHByb2Nl c3Mgd2l0aCB0aGUgZGVmYXVsdCBmaWx0ZXIuICAqLyk7CisgIHJlYWRfcHJvY2Vzc19vdXRw dXRfZmFzdCA9IFF0OworCiAgIERFRlZBUl9JTlQgKCJwcm9jZXNzLWVycm9yLXBhdXNlLXRp bWUiLCBwcm9jZXNzX2Vycm9yX3BhdXNlX3RpbWUsCiAJICAgICAgZG9jOiAvKiBUaGUgbnVt YmVyIG9mIHNlY29uZHMgdG8gcGF1c2UgYWZ0ZXIgaGFuZGxpbmcgcHJvY2VzcyBlcnJvcnMu CiBUaGlzIGlzbid0IHVzZWQgZm9yIGFsbCBwcm9jZXNzLXJlbGF0ZWQgZXJyb3JzLCBidXQg aXMgdXNlZCB3aGVuIGEK --------------ujujwY71SxzZu4tHORIFXUna--