Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qqIrQ-0099x0-Rj for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Oct 2023 19:57:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qqIrO-009yOo-7e for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Oct 2023 19:57:43 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qqIrN-009yNR-Ok for pgsql-hackers@lists.postgresql.org; Tue, 10 Oct 2023 19:57:42 +0000 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qqIrL-001LGG-1P for pgsql-hackers@postgresql.org; Tue, 10 Oct 2023 19:57:41 +0000 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-5859d13f73dso3382402a12.1 for ; Tue, 10 Oct 2023 12:57:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1696967856; x=1697572656; darn=postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=H6J5xs6X4JThAqo0Uve/mMYm45GdrFgayJj9D/8gf3Q=; b=npjC11C90DlvzNSapA4WOzL4Mc1BofyAnpx84FPfX1OcRqfSOxOMvALxB4WHAKB1Yq VbnMWuovdoV9Up9CLJyYLRYsOaisyIe8pAc4Py0iBpzTZj/tcTL9M5Cec1UiOLDOYJKE LIS94s9BB9xHjT3wgQXjfiNLgY/tR2M/OA2IK79mU6dAF3UUkSeVj4n1bWrvmIKGQ8ET uUWJJcpX7Mhf7MtJNi90Tp/jvrS3bdQth/iWyhASkyW6emJ+VSBhJSThkcGXasEl7W/L 14MhW7o21J7Ors6H8m38OFckjYK/mFZSPpI+WStkiB2vQ3eKe5lFK5cTwGqwuv2SO2MA G24g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696967856; x=1697572656; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=H6J5xs6X4JThAqo0Uve/mMYm45GdrFgayJj9D/8gf3Q=; b=ey0dayCj9l0I9/gJ7gkOSEITx2F1fBEfFuu1H3/whiH588UOxYw6vLScaFwRt8UnAK EcB64Z0Ju7xoqbj4s+Se62pORsIO93dQRb06dyUoAAo46R5oRz+r3miBcgDYJ0wLcFr7 iscIyDk4ngACfss/of/S0r/oaL6Kcl0vdLbXkNvE0pslOe6EB3p3UM2b9hM9TeC6FAEl PCITaN/doVd4i6+YFw/8H0ODStmUeHVTq7PIWyE5kcMk6NxBSiVnjNVHjUZ3Qrl+d5NG jqB+/CtKnNu/dunf6FhCsNkca+HFsTFQVBmzJ4erwZmz8HsXTHQXCqH3ZNg4dhtfL/hr 67PQ== X-Gm-Message-State: AOJu0YwAw+oT77UgrODrMgSjAGOnv90kOtsUvkPO/kxtm49lVo+jR7p3 bTxgzCq4QWK9lucn7k1zY7LtIQ== X-Google-Smtp-Source: AGHT+IHnT+dnIbo/rrcUUxNJqrNbbFW8Sz8er5/Nz0kWFLYOrXcH1ORA4VIR3ujy2sgD//bDymCjJw== X-Received: by 2002:a05:6a20:1450:b0:16b:80f2:f30c with SMTP id a16-20020a056a20145000b0016b80f2f30cmr12212529pzi.26.1696967856569; Tue, 10 Oct 2023 12:57:36 -0700 (PDT) Received: from [172.18.10.34] ([12.126.244.130]) by smtp.gmail.com with ESMTPSA id w25-20020a639359000000b00553dcfc2179sm10681504pgm.52.2023.10.10.12.57.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Oct 2023 12:57:36 -0700 (PDT) Message-ID: <50bebdf8bbf79475e3fc0fff398d77b1577c1b97.camel@j-davis.com> Subject: Re: Is this a problem in GenericXLogFinish()? From: Jeff Davis To: Heikki Linnakangas , Robert Haas Cc: pgsql-hackers@postgresql.org Date: Tue, 10 Oct 2023 12:57:35 -0700 In-Reply-To: <57c59f08bbb92875251dc97dbc47600fa237712c.camel@j-davis.com> References: <25104133-7df8-cae3-b9a2-1c0aaa1c094a@iki.fi> <399492009193fa2c37a61b630e4449546a550039.camel@j-davis.com> <146426fc662f88604c700a72a3833b1919922f9e.camel@j-davis.com> <08b4f1f7dcf321d38373f06acc65a8d62cc2f017.camel@j-davis.com> <6d23aff2-7151-65b1-528b-2189ffa6e2df@iki.fi> <57c59f08bbb92875251dc97dbc47600fa237712c.camel@j-davis.com> Content-Type: multipart/mixed; boundary="=-axswLUOVmOCWM1hpT5TK" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-axswLUOVmOCWM1hpT5TK Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable I committed and backported 0001 (the GenericXLogFinish() fix but not the Assert). Strangely I didn't see the -committers email come through yet. If anyone notices anything wrong, please let me know before the final v11 release. On Thu, 2023-09-28 at 12:05 -0700, Jeff Davis wrote: > Also, I ran into some problems with GIN that might require a bit more > refactoring in ginPlaceToPage(). Perhaps we could consider > REGBUF_NO_CHANGE a general bypass of the Assert(BufferIsDirty()), and > use it temporarily until we have a chance to analyze/refactor each of > the callers that need it. For the Assert, I have attached a new patch for v17. I changed the name of the flag to REGBUF_CLEAN_OK, because for some of the callsites it was not clear to me whether the page is always unchanged or sometimes unchanged. In other words, REGBUF_CLEAN_OK is a way to bypass the Assert for callsites where we either know that we actually want to register an unchanged page, or for callsites where we don't know if the page is changed or not. If we commit this, ideally someone would look into the places where REGBUF_CLEAN_OK is used and make sure that it's not a bug, and perhaps refactor so that it would benefit from the Assert. But refactoring those places is outside of the scope of this patch. It sounds like we have no intention to change the hash index code, so are we OK if this flag just lasts forever? Do you still think it offers a useful check? Regards, Jeff Davis --=-axswLUOVmOCWM1hpT5TK Content-Disposition: attachment; filename*0=v3-0002-Assert-that-buffers-are-marked-dirty-before-XLogR.pat; filename*1=ch Content-Type: text/x-patch; name="v3-0002-Assert-that-buffers-are-marked-dirty-before-XLogR.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA4NTljOGY0Mjg0ZGUxMDMwYWIwNzA2MzBmYTA2YWYzYzE3MTI2NGQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU aHUsIDI4IFNlcCAyMDIzIDExOjE5OjA2IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2M10gQXNzZXJ0 IHRoYXQgYnVmZmVycyBhcmUgbWFya2VkIGRpcnR5IGJlZm9yZQogWExvZ1JlZ2lzdGVyQnVmZmVy KCkuCgpBIHBhZ2UgbXVzdCBiZSBtYXJrZWQgZGlydHkgYmVmb3JlIHdyaXRpbmcgV0FMLCBhcyBk b2N1bWVudGVkIGluCnRyYW5zYW0vUkVBRE1FLgoKRW5mb3JjZSB0aGlzIHJ1bGUgaW4gWExvZ1Jl Z2lzdGVyQnVmZmVyKCksIHRob3VnaCBpdCdzIG5vdCBhY3R1YWxseSBhCmJ1ZyBpZiAoYSkgdGhl IHBhZ2UgcmVhbGx5IGlzIGNsZWFuOyBvciAoYikgdGhlIGJ1ZmZlciBpcyBtYXJrZWQgZGlydHkK YWZ0ZXIgWExvZ1JlZ2lzdGVyQnVmZmVyKCkgYW5kIGJlZm9yZSBYTG9nSW5zZXJ0KCkuCgpVcGRh dGUgbG9nX25ld3BhZ2VfcmFuZ2UoKSwgd2hlcmUgaXQncyB0cml2aWFsIHRvIGNoYW5nZSB0aGUg b3JkZXIgc28KdGhhdCB3ZSBjYW4gY2hlY2sgaW4gWExvZ1JlZ2lzdGVyQnVmZmVyKCkuIE90aGVy IGNhbGxlcnMgYXJlIG1vcmUKY29tcGxleCwgYW5kIHVwZGF0aW5nIHRoZW0gaXMgb3V0c2lkZSB0 aGUgc2NvcGUgb2YgdGhpcyBwYXRjaCAoYW5kCnBlcmhhcHMgbm90IGRlc2lyYWJsZSksIHNvIGlu dHJvZHVjZSBhIGZsYWcgUkVHQlVGX0NMRUFOX09LIHRvIGJ5cGFzcwp0aGUgQXNzZXJ0LgoKTm90 ZSB0aGF0IHRoaXMgY29tbWl0IG1heSBoYXZlIG1pc3NlZCBzb21lIGNhbGxzaXRlcyB3aGljaCBj YW4sIGF0CmxlYXN0IGluIHNvbWUgY2FzZXMsIHJlZ2lzdGVyIGEgY2xlYW4gYnVmZmVyLiBJZiBz dWNoIGEgY2FsbHNpdGUgaXMKZm91bmQsIGl0IGNhbiBiZSB1cGRhdGVkIHRvIHVzZSBSRUdCVUZf Q0xFQU5fT0sgYXNzdW1pbmcgaXQgZG9lc24ndApyZXByZXNlbnQgYW4gYWN0dWFsIGJ1Zy4KCkRp c2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vYzg0MTE0ZjgtYzdmMS01YjU3LWY4NWEtM2Fk YzMxZTFhOTA0QGlraS5maQotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luYnRyZWUuYyAg ICAgICB8ICAzICsrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5mYXN0LmMgICAgICAgIHwg IDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyAgICAgICAgICB8IDEwICsrKysr Ky0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaG92ZmwuYyAgICAgIHwgIDkgKysrKyst LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dpbnNlcnQuYyB8ICAzICsrLQogc3Jj L2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgICAgIHwgMzAgKysrKysrKysrKysrKysr KysrKysrKysrKwogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dpbnNlcnQuaCAgICAgICAgIHwgIDIg KysKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmggICAgICAgICAgICB8ICAxICsKIDggZmls ZXMgY2hhbmdlZCwgNTEgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmJ0cmVlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2luL2dpbmJ0cmVlLmMKaW5kZXggMDZlOTdhN2ZiYi4uYzk4MTc2YWY3NyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5idHJlZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luYnRyZWUuYwpAQCAtMzg5LDcgKzM4OSw4IEBAIGdpblBsYWNlVG9QYWdlKEdpbkJ0 cmVlIGJ0cmVlLCBHaW5CdHJlZVN0YWNrICpzdGFjaywKIAkJaWYgKFJlbGF0aW9uTmVlZHNXQUwo YnRyZWUtPmluZGV4KSAmJiAhYnRyZWUtPmlzQnVpbGQpCiAJCXsKIAkJCVhMb2dCZWdpbkluc2Vy dCgpOwotCQkJWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIHN0YWNrLT5idWZmZXIsIFJFR0JVRl9TVEFO REFSRCk7CisJCQlYTG9nUmVnaXN0ZXJCdWZmZXIoMCwgc3RhY2stPmJ1ZmZlciwKKwkJCQkJCQkg ICBSRUdCVUZfU1RBTkRBUkQgfCBSRUdCVUZfQ0xFQU5fT0spOwogCQkJaWYgKEJ1ZmZlcklzVmFs aWQoY2hpbGRidWYpKQogCQkJCVhMb2dSZWdpc3RlckJ1ZmZlcigxLCBjaGlsZGJ1ZiwgUkVHQlVG X1NUQU5EQVJEKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5m YXN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmZhc3QuYwppbmRleCBlYjZjNTU0ODMx Li5lNDZlMTFkZjA3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmZhc3Qu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmZhc3QuYwpAQCAtMzk5LDcgKzM5OSw3 IEBAIGdpbkhlYXBUdXBsZUZhc3RJbnNlcnQoR2luU3RhdGUgKmdpbnN0YXRlLCBHaW5UdXBsZUNv bGxlY3RvciAqY29sbGVjdG9yKQogCQlBc3NlcnQoKHB0ciAtIGNvbGxlY3RvcmRhdGEpIDw9IGNv bGxlY3Rvci0+c3Vtc2l6ZSk7CiAJCWlmIChuZWVkV2FsKQogCQl7Ci0JCQlYTG9nUmVnaXN0ZXJC dWZmZXIoMSwgYnVmZmVyLCBSRUdCVUZfU1RBTkRBUkQpOworCQkJWExvZ1JlZ2lzdGVyQnVmZmVy KDEsIGJ1ZmZlciwgUkVHQlVGX1NUQU5EQVJEIHwgUkVHQlVGX0NMRUFOX09LKTsKIAkJCVhMb2dS ZWdpc3RlckJ1ZkRhdGEoMSwgY29sbGVjdG9yZGF0YSwgY29sbGVjdG9yLT5zdW1zaXplKTsKIAkJ fQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKaW5kZXggZmM1ZDk3ZjYwNi4uN2E2MjEwMGM4OSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oYXNoL2hhc2guYwpAQCAtODI0LDExICs4MjQsMTUgQEAgaGFzaGJ1Y2tldGNsZWFu dXAoUmVsYXRpb24gcmVsLCBCdWNrZXQgY3VyX2J1Y2tldCwgQnVmZmVyIGJ1Y2tldF9idWYsCiAJ CQkJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAqKSAmeGxyZWMsIFNpemVPZkhhc2hEZWxldGUpOwog CiAJCQkJLyoKLQkJCQkgKiBidWNrZXQgYnVmZmVyIG5lZWRzIHRvIGJlIHJlZ2lzdGVyZWQgdG8g ZW5zdXJlIHRoYXQgd2UgY2FuCi0JCQkJICogYWNxdWlyZSBhIGNsZWFudXAgbG9jayBvbiBpdCBk dXJpbmcgcmVwbGF5LgorCQkJCSAqIGJ1Y2tldCBidWZmZXIgd2FzIG5vdCBjaGFuZ2VkLCBidXQg c3RpbGwgbmVlZHMgdG8gYmUKKwkJCQkgKiByZWdpc3RlcmVkIHRvIGVuc3VyZSB0aGF0IHdlIGNh biBhY3F1aXJlIGEgY2xlYW51cCBsb2NrIG9uCisJCQkJICogaXQgZHVyaW5nIHJlcGxheS4KIAkJ CQkgKi8KIAkJCQlpZiAoIXhscmVjLmlzX3ByaW1hcnlfYnVja2V0X3BhZ2UpCi0JCQkJCVhMb2dS ZWdpc3RlckJ1ZmZlcigwLCBidWNrZXRfYnVmLCBSRUdCVUZfU1RBTkRBUkQgfCBSRUdCVUZfTk9f SU1BR0UpOworCQkJCXsKKwkJCQkJdWludDggZmxhZ3MgPSBSRUdCVUZfU1RBTkRBUkQgfCBSRUdC VUZfTk9fSU1BR0UgfCBSRUdCVUZfQ0xFQU5fT0s7CisJCQkJCVhMb2dSZWdpc3RlckJ1ZmZlcigw LCBidWNrZXRfYnVmLCBmbGFncyk7CisJCQkJfQogCiAJCQkJWExvZ1JlZ2lzdGVyQnVmZmVyKDEs IGJ1ZiwgUkVHQlVGX1NUQU5EQVJEKTsKIAkJCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDEsIChjaGFy ICopIGRlbGV0YWJsZSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hv dmZsLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNob3ZmbC5jCmluZGV4IDM5YmIyY2I5 ZjYuLjU3Njg4ZTI2YjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hv dmZsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaG92ZmwuYwpAQCAtNjU4LDEx ICs2NTgsMTQgQEAgX2hhc2hfZnJlZW92ZmxwYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Y2tl dGJ1ZiwgQnVmZmVyIG92ZmxidWYsCiAJCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgJnhscmVj LCBTaXplT2ZIYXNoU3F1ZWV6ZVBhZ2UpOwogCiAJCS8qCi0JCSAqIGJ1Y2tldCBidWZmZXIgbmVl ZHMgdG8gYmUgcmVnaXN0ZXJlZCB0byBlbnN1cmUgdGhhdCB3ZSBjYW4gYWNxdWlyZQotCQkgKiBh IGNsZWFudXAgbG9jayBvbiBpdCBkdXJpbmcgcmVwbGF5LgorCQkgKiBidWNrZXQgYnVmZmVyIHdh cyBub3QgY2hhbmdlZCwgYnV0IHN0aWxsIG5lZWRzIHRvIGJlIHJlZ2lzdGVyZWQgdG8KKwkJICog ZW5zdXJlIHRoYXQgd2UgY2FuIGFjcXVpcmUgYSBjbGVhbnVwIGxvY2sgb24gaXQgZHVyaW5nIHJl cGxheS4KIAkJICovCiAJCWlmICgheGxyZWMuaXNfcHJpbV9idWNrZXRfc2FtZV93cnQpCi0JCQlY TG9nUmVnaXN0ZXJCdWZmZXIoMCwgYnVja2V0YnVmLCBSRUdCVUZfU1RBTkRBUkQgfCBSRUdCVUZf Tk9fSU1BR0UpOworCQl7CisJCQl1aW50OCBmbGFncyA9IFJFR0JVRl9TVEFOREFSRCB8IFJFR0JV Rl9OT19JTUFHRSB8IFJFR0JVRl9DTEVBTl9PSzsKKwkJCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCBi dWNrZXRidWYsIGZsYWdzKTsKKwkJfQogCiAJCVhMb2dSZWdpc3RlckJ1ZmZlcigxLCB3YnVmLCBS RUdCVUZfU1RBTkRBUkQpOwogCQlpZiAoeGxyZWMubnR1cHMgPiAwKQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2luc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZ2luc2VydC5jCmluZGV4IDU4ODYyNjQyNGUuLjgwZGY3MzU4OTcgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dpbnNlcnQuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9naW5zZXJ0LmMKQEAgLTI0Niw2ICsyNDYsNyBAQCBY TG9nUmVnaXN0ZXJCdWZmZXIodWludDggYmxvY2tfaWQsIEJ1ZmZlciBidWZmZXIsIHVpbnQ4IGZs YWdzKQogCiAJLyogTk9fSU1BR0UgZG9lc24ndCBtYWtlIHNlbnNlIHdpdGggRk9SQ0VfSU1BR0Ug Ki8KIAlBc3NlcnQoISgoZmxhZ3MgJiBSRUdCVUZfRk9SQ0VfSU1BR0UpICYmIChmbGFncyAmIChS RUdCVUZfTk9fSU1BR0UpKSkpOworCUFzc2VydCgoZmxhZ3MgJiBSRUdCVUZfQ0xFQU5fT0spIHx8 IEJ1ZmZlcklzRGlydHkoYnVmZmVyKSk7CiAJQXNzZXJ0KGJlZ2luaW5zZXJ0X2NhbGxlZCk7CiAK IAlpZiAoYmxvY2tfaWQgPj0gbWF4X3JlZ2lzdGVyZWRfYmxvY2tfaWQpCkBAIC0xMzEzLDggKzEz MTQsOCBAQCBsb2dfbmV3cGFnZV9yYW5nZShSZWxhdGlvbiByZWwsIEZvcmtOdW1iZXIgZm9ya251 bSwKIAkJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CiAJCWZvciAoaSA9IDA7IGkgPCBuYnVmczsgaSsr KQogCQl7Ci0JCQlYTG9nUmVnaXN0ZXJCdWZmZXIoaSwgYnVmcGFja1tpXSwgZmxhZ3MpOwogCQkJ TWFya0J1ZmZlckRpcnR5KGJ1ZnBhY2tbaV0pOworCQkJWExvZ1JlZ2lzdGVyQnVmZmVyKGksIGJ1 ZnBhY2tbaV0sIGZsYWdzKTsKIAkJfQogCiAJCXJlY3B0ciA9IFhMb2dJbnNlcnQoUk1fWExPR19J RCwgWExPR19GUEkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVm bWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwppbmRleCA4Yjk2NzU5 Yjg0Li4yM2I4MDMyMmE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9i dWZtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwpAQCAtMjA5 OCw2ICsyMDk4LDM2IEBAIEV4dGVuZEJ1ZmZlcmVkUmVsU2hhcmVkKEJ1ZmZlck1hbmFnZXJSZWxh dGlvbiBibXIsCiAJcmV0dXJuIGZpcnN0X2Jsb2NrOwogfQogCisvKgorICogQnVmZmVySXNEaXJ0 eQorICoKKyAqCQlDaGVja3MgaWYgYnVmZmVyIGlzIGFscmVhZHkgZGlydHkuCisgKgorICogQnVm ZmVyIG11c3QgYmUgcGlubmVkIGFuZCBleGNsdXNpdmUtbG9ja2VkLiAgKElmIGNhbGxlciBkb2Vz IG5vdCBob2xkCisgKiBleGNsdXNpdmUgbG9jaywgdGhlbiB0aGUgcmVzdWx0IG1heSBiZSBzdGFs ZSBiZWZvcmUgaXQncyByZXR1cm5lZC4pCisgKi8KK2Jvb2wKK0J1ZmZlcklzRGlydHkoQnVmZmVy IGJ1ZmZlcikKK3sKKwlCdWZmZXJEZXNjICpidWZIZHI7CisKKwlpZiAoQnVmZmVySXNMb2NhbChi dWZmZXIpKQorCXsKKwkJaW50IGJ1ZmlkID0gLWJ1ZmZlciAtIDE7CisJCWJ1ZkhkciA9IEdldExv Y2FsQnVmZmVyRGVzY3JpcHRvcihidWZpZCk7CisJfQorCWVsc2UKKwl7CisJCWJ1ZkhkciA9IEdl dEJ1ZmZlckRlc2NyaXB0b3IoYnVmZmVyIC0gMSk7CisJfQorCisJQXNzZXJ0KEJ1ZmZlcklzUGlu bmVkKGJ1ZmZlcikpOworCUFzc2VydChMV0xvY2tIZWxkQnlNZUluTW9kZShCdWZmZXJEZXNjcmlw dG9yR2V0Q29udGVudExvY2soYnVmSGRyKSwKKwkJCQkJCQkJTFdfRVhDTFVTSVZFKSk7CisKKwly ZXR1cm4gcGdfYXRvbWljX3JlYWRfdTMyKCZidWZIZHItPnN0YXRlKSAmIEJNX0RJUlRZOworfQor CiAvKgogICogTWFya0J1ZmZlckRpcnR5CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL3hsb2dpbnNlcnQuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9naW5zZXJ0LmgKaW5kZXgg MzE3ODVkYzU3OC4uMzQ2OTg5MGNmMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hs b2dpbnNlcnQuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ2luc2VydC5oCkBAIC0zNyw2 ICszNyw4IEBACiAJCQkJCQkJCQkgKiB3aWxsIGJlIHNraXBwZWQpICovCiAjZGVmaW5lIFJFR0JV Rl9LRUVQX0RBVEEJMHgxMAkvKiBpbmNsdWRlIGRhdGEgZXZlbiBpZiBhIGZ1bGwtcGFnZSBpbWFn ZQogCQkJCQkJCQkJICogaXMgdGFrZW4gKi8KKyNkZWZpbmUgUkVHQlVGX0NMRUFOX09LCQkweDIw CS8qIGludGVudGlvbmFsbHkgcmVnaXN0ZXIgYnVmZmVyIHRoYXQgbWF5CisJCQkJCQkJCQkgKiBi ZSBjbGVhbiAqLwogCiAvKiBwcm90b3R5cGVzIGZvciBwdWJsaWMgZnVuY3Rpb25zIGluIHhsb2dp bnNlcnQuYzogKi8KIGV4dGVybiB2b2lkIFhMb2dCZWdpbkluc2VydCh2b2lkKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1 Zm1nci5oCmluZGV4IGQ4OTAyMWY5MTguLjgxMDMxMTNmMDkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3N0b3JhZ2UvYnVmbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZtZ3IuaApA QCAtMTc5LDYgKzE3OSw3IEBAIGV4dGVybiBCdWZmZXIgUmVhZEJ1ZmZlcldpdGhvdXRSZWxjYWNo ZShSZWxGaWxlTG9jYXRvciBybG9jYXRvciwKIAkJCQkJCQkJCQlib29sIHBlcm1hbmVudCk7CiBl eHRlcm4gdm9pZCBSZWxlYXNlQnVmZmVyKEJ1ZmZlciBidWZmZXIpOwogZXh0ZXJuIHZvaWQgVW5s b2NrUmVsZWFzZUJ1ZmZlcihCdWZmZXIgYnVmZmVyKTsKK2V4dGVybiBib29sIEJ1ZmZlcklzRGly dHkoQnVmZmVyIGJ1ZmZlcik7CiBleHRlcm4gdm9pZCBNYXJrQnVmZmVyRGlydHkoQnVmZmVyIGJ1 ZmZlcik7CiBleHRlcm4gdm9pZCBJbmNyQnVmZmVyUmVmQ291bnQoQnVmZmVyIGJ1ZmZlcik7CiBl eHRlcm4gdm9pZCBDaGVja0J1ZmZlcklzUGlubmVkT25jZShCdWZmZXIgYnVmZmVyKTsKLS0gCjIu MzQuMQoK --=-axswLUOVmOCWM1hpT5TK--