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 1sI5Fb-00CtAF-LX for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Jun 2024 11:37:48 +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 1sI5FZ-00HUcH-1c for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Jun 2024 11:37:45 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sI5FY-00HUc9-CR for pgsql-hackers@lists.postgresql.org; Fri, 14 Jun 2024 11:37:45 +0000 Received: from lahtoruutu.iki.fi ([2a0b:5c81:1c1::37]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sI5FU-001H0l-W2 for pgsql-hackers@postgresql.org; Fri, 14 Jun 2024 11:37:44 +0000 Received: from [192.168.1.118] (dsl-hkibng22-54f8db-125.dhcp.inet.fi [84.248.219.125]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4W0y1r1c32z49Pyv for ; Fri, 14 Jun 2024 14:37:35 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1718365056; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=I39ZL+42g2QnuPHc3zmZDuhO6OzarYdMCm118KtEZww=; b=oeLwH21S5da/RpK5tqcKQ6K6wPHWUoX7shqKZbggCi9jPn3bjbuS+82gp9aqXQy0DqHR5r V2s6E2t/QU4P9EhGK27u60d7H1bYKAe4bGBIN4vs9gRwdLEm8Q/o7P8xPwpD8QueTvccbt 1OAolpyjqS/kx2rcf3ibKaPo/jh0Xgom/rSrOCT0tWMDOyauQn25j5HEVCj5WYLatja2Xz Jmr2TmRd3S1UyqdR9B0FE5RS8iYSsn0hbfdEk80j4Qv53EiOQFGu1Hx/Keov9XsgjgYJvt JGajLLig6bXzLxzY/51yPOfvhkHRC6iPTRdgjDxr+TVB5zVrqsBFxD0e02nKiA== ARC-Seal: i=1; s=lahtoruutu; d=iki.fi; t=1718365056; a=rsa-sha256; cv=none; b=kBlXbr4BfMi235FzHjkyRuMpw3mT3wL21bVz/TGezrmK0PShIprIbrBRqsIp9kTT2VZkfm Qg862Q+LI94DAKSMf1dK4Eibjyth4+P9QtCI7eQiKhNP+79lTR3iqMTBTZIOGTbmiqIJDn r80+b6FPLkTymlPm9BIk5j9Epo3sbqCdUd+ikoWxAlmV/0p6y8c+6dJdfHwL9qxIFWkLT/ wt3sYLqKX/vwU7q7acheohcxZ5rda1ypDvRqmKCy/x6kE1gaMbCd6XnbEJ8rCNDaA1foMU 4NIx8uM9gXqAhpns/VmM1ch1v+qInVdHoOVfzv8Xt9XTqFOS2n4c33wOdnHAEQ== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1718365056; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=I39ZL+42g2QnuPHc3zmZDuhO6OzarYdMCm118KtEZww=; b=OibaQGWp9+i1p2T56lhGX2BKS1Hf1QAyFWrT8Ya8ArAVo1SW6LDCnA8KUAHe4tSvWQAXaM 96WxNO0Vpu+Alp33gvBhjHNF1wbPGJAMiICpjNEaTnwfZ1x+/QrADk66p18HApq4J3oldA 68XuO/no0WICWdSjE9EzBYXL6E6zRVn/gb9SSLmWPF5Q9At5LVGH5sWmIWp2w2cqRylHCd AWHUNDAvFpeFhqUZxKbfTm3zFxTJEG2+/+zTYg8nMkwKbEHARUisWcMs3uGqaYmfhQyEVb LuJoSwfW7aSaINH3tUt9GoM5ciPN3L2FFRR0aYTS45LVFSTPhy0PudztdRtiPQ== Content-Type: multipart/mixed; boundary="------------9Bq0iJouChp3EfM6mJPu18cx" Message-ID: Date: Fri, 14 Jun 2024 14:37:35 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Heikki Linnakangas Subject: TruncateMultiXact() bugs Content-Language: en-US To: pgsql-hackers List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------9Bq0iJouChp3EfM6mJPu18cx Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit I was performing tests around multixid wraparound, when I ran into this assertion: > TRAP: failed Assert("CritSectionCount == 0 || (context)->allowInCritSection"), File: "../src/backend/utils/mmgr/mcxt.c", Line: 1353, PID: 920981 > postgres: autovacuum worker template0(ExceptionalCondition+0x6e)[0x560a501e866e] > postgres: autovacuum worker template0(+0x5dce3d)[0x560a50217e3d] > postgres: autovacuum worker template0(ForwardSyncRequest+0x8e)[0x560a4ffec95e] > postgres: autovacuum worker template0(RegisterSyncRequest+0x2b)[0x560a50091eeb] > postgres: autovacuum worker template0(+0x187b0a)[0x560a4fdc2b0a] > postgres: autovacuum worker template0(SlruDeleteSegment+0x101)[0x560a4fdc2ab1] > postgres: autovacuum worker template0(TruncateMultiXact+0x2fb)[0x560a4fdbde1b] > postgres: autovacuum worker template0(vac_update_datfrozenxid+0x4b3)[0x560a4febd2f3] > postgres: autovacuum worker template0(+0x3adf66)[0x560a4ffe8f66] > postgres: autovacuum worker template0(AutoVacWorkerMain+0x3ed)[0x560a4ffe7c2d] > postgres: autovacuum worker template0(+0x3b1ead)[0x560a4ffecead] > postgres: autovacuum worker template0(+0x3b620e)[0x560a4fff120e] > postgres: autovacuum worker template0(+0x3b3fbb)[0x560a4ffeefbb] > postgres: autovacuum worker template0(+0x2f724e)[0x560a4ff3224e] > /lib/x86_64-linux-gnu/libc.so.6(+0x27c8a)[0x7f62cc642c8a] > /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x85)[0x7f62cc642d45] > postgres: autovacuum worker template0(_start+0x21)[0x560a4fd16f31] > 2024-06-14 13:11:02.025 EEST [920971] LOG: server process (PID 920981) was terminated by signal 6: Aborted > 2024-06-14 13:11:02.025 EEST [920971] DETAIL: Failed process was running: autovacuum: VACUUM pg_toast.pg_toast_13407 (to prevent wraparound) The attached python script reproduces this pretty reliably. It's a reduced version of a larger test script I was working on, it probably could be simplified further for this particular issue. Looking at the code, it's pretty clear how it happens: 1. TruncateMultiXact does START_CRIT_SECTION(); 2. In the critical section, it calls PerformMembersTruncation() -> SlruDeleteSegment() -> SlruInternalDeleteSegment() -> RegisterSyncRequest() -> ForwardSyncRequest() 3. If the fsync request queue is full, it calls CompactCheckpointerRequestQueue(), which calls palloc0. Pallocs are not allowed in a critical section. A straightforward fix is to add a check to CompactCheckpointerRequestQueue() to bail out without compacting, if it's called in a critical section. That would cover any other cases like this, where RegisterSyncRequest() is called in a critical section. I haven't tried searching if any more cases like this exist. But wait there is more! After applying that fix in CompactCheckpointerRequestQueue(), the test script often gets stuck. There's a deadlock between the checkpointer, and the autovacuum backend trimming the SLRUs: 1. TruncateMultiXact does this: MyProc->delayChkptFlags |= DELAY_CHKPT_START; 2. It then makes that call to PerformMembersTruncation() and RegisterSyncRequest(). If it cannot queue the request, it sleeps a little and retries. But the checkpointer is stuck waiting for the autovacuum backend, because of delayChkptFlags, and will never clear the queue. To fix, I propose to add AbsorbSyncRequests() calls to the wait-loops in CreateCheckPoint(). Attached patch fixes both of those issues. I can't help thinking that TruncateMultiXact() should perhaps not have such a long critical section. TruncateCLOG() doesn't do that. But it was added for good reasons in commit 4f627f897367, and this fix seems appropriate for the stable branches anyway, even if we come up with something better for master. -- Heikki Linnakangas Neon (https://neon.tech) --------------9Bq0iJouChp3EfM6mJPu18cx Content-Type: text/x-python; charset=UTF-8; name="repro-multixid-trim-assertion.py" Content-Disposition: attachment; filename="repro-multixid-trim-assertion.py" Content-Transfer-Encoding: base64 aW1wb3J0IHRpbWUKaW1wb3J0IGxvZ2dpbmcKaW1wb3J0IHBzeWNvcGcyCmZyb20gdHlwaW5n IGltcG9ydCBBbnksIENhbGxhYmxlLCBEaWN0LCBJdGVyYXRvciwgTGlzdCwgT3B0aW9uYWws IFR1cGxlLCBUeXBlLCBVbmlvbiwgY2FzdAppbXBvcnQgc3VicHJvY2VzcwoKUEdEQVRBID0g InBnZGF0YS1tdWx0aXhpZC1yZXBybyIKCmxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFt ZV9fKQoKZGVmIGNvbm5lY3QoKToKICAgIHJldHVybiBwc3ljb3BnMi5jb25uZWN0KAogICAg ICAgIGRhdGFiYXNlPSJwb3N0Z3JlcyIsCiAgICAgICAgdXNlcj0icG9zdGdyZXMiLAogICAg ICAgIGhvc3Q9Ii90bXAvIiwKICAgICkKCiMgQ29uc3RhbnRzIGFuZCBtYWNyb3MgY29waWVk IGZyb20gUG9zdGdyZVNRTCBtdWx0aXhhY3QuYyBhbmQgaGVhZGVycy4gVGhlc2UgYXJlIG5l ZWRlZCB0bwojIGNhbGN1bGF0ZSB0aGUgU0xSVSBzZWdtZW50cyB0aGF0IGEgcGFydGljdWxh ciBtdWx0aXhpZCBvciBtdWx0aXhpZC1vZmZzZXRzIGZhbGxzIGludG8uCkJMQ0tTWiA9IDgx OTIKTVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0UgPSBpbnQoQkxDS1NaIC8gNCkKU0xSVV9Q QUdFU19QRVJfU0VHTUVOVCA9IGludCgzMikKTVhBQ1RfTUVNQkVSX0JJVFNfUEVSX1hBQ1Qg PSA4Ck1YQUNUX01FTUJFUl9GTEFHU19QRVJfQllURSA9IDEKTVVMVElYQUNUX0ZMQUdCWVRF U19QRVJfR1JPVVAgPSA0Ck1VTFRJWEFDVF9NRU1CRVJTX1BFUl9NRU1CRVJHUk9VUCA9IE1V TFRJWEFDVF9GTEFHQllURVNfUEVSX0dST1VQICogTVhBQ1RfTUVNQkVSX0ZMQUdTX1BFUl9C WVRFCk1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFID0gNCAqIE1VTFRJWEFDVF9NRU1CRVJT X1BFUl9NRU1CRVJHUk9VUCArIE1VTFRJWEFDVF9GTEFHQllURVNfUEVSX0dST1VQCk1VTFRJ WEFDVF9NRU1CRVJHUk9VUFNfUEVSX1BBR0UgPSBpbnQoQkxDS1NaIC8gTVVMVElYQUNUX01F TUJFUkdST1VQX1NJWkUpCk1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFID0gTVVMVElYQUNU X01FTUJFUkdST1VQU19QRVJfUEFHRSAqIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9NRU1CRVJH Uk9VUAoKZGVmIE11bHRpWGFjdElkVG9PZmZzZXRTZWdtZW50KHhpZDogaW50KToKICAgIHJl dHVybiBpbnQoeGlkIC8gKFNMUlVfUEFHRVNfUEVSX1NFR01FTlQgKiBNVUxUSVhBQ1RfT0ZG U0VUU19QRVJfUEFHRSkpCgoKZGVmIE1YT2Zmc2V0VG9NZW1iZXJTZWdtZW50KG9mZjogaW50 KToKICAgIHJldHVybiBpbnQob2ZmIC8gKFNMUlVfUEFHRVNfUEVSX1NFR01FTlQgKiBNVUxU SVhBQ1RfTUVNQkVSU19QRVJfUEFHRSkpCgpkZWYgYWR2YW5jZV9tdWx0aXhpZF90byhuZXh0 X211bHRpX3hpZDogaW50LCBuZXh0X211bHRpX29mZnNldDogaW50Cik6CiAgICAiIiIKICAg IFVzZSBwZ19yZXNldHdhbCB0byBhZHZhbmNlIHRoZSBuZXh0TXVsdGkgYW5kIG5leHRNdWx0 aU9mZnNldCB2YWx1ZXMgaW4gYSBzdGFuZC1hbG9uZQogICAgUG9zdGdyZXMgY2x1c3Rlci4g VGhpcyBpcyB1c2VmdWwgdG8gZ2V0IGNsb3NlIHRvIHdyYXBhcm91bmQgb3Igc29tZSBvdGhl ciBpbnRlcmVzdGluZwogICAgdmFsdWUsIHdpdGhvdXQgaGF2aW5nIHRvIGJ1cm4gYSBsb3Qg b2YgdGltZSBjb25zdW1pbmcgdGhlIChtdWx0aS0pWElEcyBvbmUgYnkgb25lLgoKICAgIFRo ZSBuZXcgdmFsdWVzIHNob3VsZCBiZSBoaWdoZXIgdGhhbiB0aGUgb2xkIG9uZXMsIGluIGEg d3JhcGFyb3VuZC1hd2FyZSBzZW5zZS4KCiAgICBPbiBlbnRyeSwgdGhlIHNlcnZlciBzaG91 bGQgYmUgcnVubmluZy4gSXQgd2lsbCBiZSBzaHV0IGRvd24gYW5kIHJlc3RhcnRlZC4KICAg ICIiIgoKICAgICMgUmVhZCBvbGQgdmFsdWVzIGZyb20gdGhlIGxhc3QgY2hlY2twb2ludC4g V2Ugd2lsbCBwYXNzIHRoZSBvbGQgb2xkZXN0TXVsdGlYaWQgdmFsdWUKICAgICMgYmFjayB0 byBwZ19yZXNldHdhbCwgdGhlcmUncyBubyBvcHRpb24gdG8gbGVhdmUgaXQgYWxvbmUuCiAg ICB3aXRoIGNvbm5lY3QoKSBhcyBjb25uOgogICAgICAgIHdpdGggY29ubi5jdXJzb3IoKSBh cyBjdXI6CiAgICAgICAgICAgICMgTWFrZSBzdXJlIHRoZSBvbGRlc3QtbXVsdGkteGlkIHZh bHVlIGluIHRoZSBjb250cm9sIGZpbGUgaXMgdXAtdG8tZGF0ZQogICAgICAgICAgICBjdXIu ZXhlY3V0ZSgiY2hlY2twb2ludCIpCiAgICAgICAgICAgIGN1ci5leGVjdXRlKCJzZWxlY3Qg b2xkZXN0X211bHRpX3hpZCwgbmV4dF9tdWx0aXhhY3RfaWQgZnJvbSBwZ19jb250cm9sX2No ZWNrcG9pbnQoKSIpCiAgICAgICAgICAgIChja3B0X29sZGVzdF9tdWx0aV94aWQsIGNrcHRf bmV4dF9tdWx0aV94aWQpID0gY3VyLmZldGNob25lKCkKICAgIGxvZy5pbmZvKGYib2xkZXN0 TXVsdGlYaWQgd2FzIHtja3B0X29sZGVzdF9tdWx0aV94aWR9LCBuZXh0TXVsdGlYaWQgd2Fz IHtja3B0X25leHRfbXVsdGlfeGlkfSIpCiAgICBsb2cuaW5mbyhmIlJlc2V0dGluZyB0byB7 bmV4dF9tdWx0aV94aWR9IikKCiAgICAjIFVzZSBwZ19yZXNldHdhbCB0byByZXNldCB0aGUg bmV4dCBtdWx0aVhpZCBhbmQgbXVsdGlPZmZzZXQgdG8gZ2l2ZW4gdmFsdWVzLgogICAgc3Vi cHJvY2Vzcy5jaGVja19jYWxsKFsicGdfY3RsIiwgIi1EIiwgUEdEQVRBLCAic3RvcCJdKQog ICAgY21kID0gWwogICAgICAgICJwZ19yZXNldHdhbCIsCiAgICAgICAgZiItLW11bHRpeGFj dC1pZHM9e25leHRfbXVsdGlfeGlkfSx7Y2twdF9vbGRlc3RfbXVsdGlfeGlkfSIsCiAgICAg ICAgZiItLW11bHRpeGFjdC1vZmZzZXQ9e25leHRfbXVsdGlfb2Zmc2V0fSIsCiAgICAgICAg Ii1EIiwKICAgICAgICBQR0RBVEEsCiAgICBdCiAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwo Y21kKQoKICAgICMgQmVjYXVzZSB3ZSBza2lwIG92ZXIgYSBsb3Qgb2YgdmFsdWVzLCBQb3N0 Z3JlcyBoYXNuJ3QgY3JlYXRlZCB0aGUgU0xSVSBzZWdtZW50cyBmb3IKICAgICMgdGhlIG5l dyB2YWx1ZXMgeWV0LiBDcmVhdGUgdGhlbSBtYW51YWxseSwgdG8gYWxsb3cgUG9zdGdyZXMg dG8gc3RhcnQgdXAuCiAgICAjCiAgICAjIFRoaXMgbGVhdmVzICJnYXBzIiBpbiB0aGUgU0xS VSB3aGVyZSBzZWdtZW50cyBiZXR3ZWVuIG9sZCB2YWx1ZSBhbmQgbmV3IHZhbHVlIGFyZQog ICAgIyBtaXNzaW5nLiBUaGF0J3MgT0sgZm9yIG91ciBwdXJwb3Nlcy4gQXV0b3ZhY3V1bSB3 aWxsIHByaW50IHNvbWUgd2FybmluZ3MgYWJvdXQgdGhlCiAgICAjIG1pc3Npbmcgc2VnbWVu dHMsIGJ1dCB3aWxsIGNsZWFuIGl0IHVwIGJ5IHRydW5jYXRpbmcgdGhlIFNMUlVzIHVwIHRv IHRoZSBuZXcgdmFsdWUsCiAgICAjIGNsb3NpbmcgdGhlIGdhcC4KICAgIHNlZ25hbWUgPSAi JTA0WCIgJSBNdWx0aVhhY3RJZFRvT2Zmc2V0U2VnbWVudChuZXh0X211bHRpX3hpZCkKICAg IGxvZy5pbmZvKGYiQ3JlYXRpbmcgZHVtbXkgc2VnbWVudCBwZ19tdWx0aXhhY3Qvb2Zmc2V0 cy97c2VnbmFtZX0iKQogICAgd2l0aCBvcGVuKGYie1BHREFUQX0vcGdfbXVsdGl4YWN0L29m ZnNldHMve3NlZ25hbWV9IiwgInciKSBhcyBvZjoKICAgICAgICBvZi53cml0ZSgiXDAiICog U0xSVV9QQUdFU19QRVJfU0VHTUVOVCAqIEJMQ0tTWikKICAgICAgICBvZi5mbHVzaCgpCgog ICAgc2VnbmFtZSA9ICIlMDRYIiAlIE1YT2Zmc2V0VG9NZW1iZXJTZWdtZW50KG5leHRfbXVs dGlfb2Zmc2V0KQogICAgbG9nLmluZm8oZiJDcmVhdGluZyBkdW1teSBzZWdtZW50IHBnX211 bHRpeGFjdC9tZW1iZXJzL3tzZWduYW1lfSIpCiAgICB3aXRoIG9wZW4oZiJ7UEdEQVRBfS9w Z19tdWx0aXhhY3QvbWVtYmVycy97c2VnbmFtZX0iLCAidyIpIGFzIG9mOgogICAgICAgIG9m LndyaXRlKCJcMCIgKiBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UICogQkxDS1NaKQogICAgICAg IG9mLmZsdXNoKCkKCiAgICAjIFN0YXJ0IFBvc3RncmVzIGFnYWluIGFuZCB3YWl0IHVudGls IGF1dG92YWN1dW0gaGFzIHByb2Nlc3NlZCBhbGwgdGhlIGRhdGFiYXNlcwogICAgIwogICAg IyBUaGlzIGFsbG93cyB0cnVuY2F0aW5nIHRoZSBTTFJVcywgZml4aW5nIHRoZSBnYXBzIHdp dGggbWlzc2luZyBzZWdtZW50cy4KICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbInBnX2N0 bCIsICItRCIsIFBHREFUQSwgInN0YXJ0Il0pCiAgICB3aXRoIGNvbm5lY3QoKS5jdXJzb3Io KSBhcyBjdXI6CiAgICAgICAgZm9yIF8gaW4gcmFuZ2UoMTAwMCk6CiAgICAgICAgICAgIGN1 ci5leGVjdXRlKCJzZWxlY3QgbWluKGRhdG1pbm14aWQ6OnRleHQ6OmludDgpIGZyb20gcGdf ZGF0YWJhc2UiKQogICAgICAgICAgICBkYXRtaW5teGlkID0gaW50KGN1ci5mZXRjaGFsbCgp WzBdWzBdKQogICAgICAgICAgICBsb2cuaW5mbyhmImRhdG1pbm14aWQge2RhdG1pbm14aWR9 IikKICAgICAgICAgICAgaWYgbmV4dF9tdWx0aV94aWQgLSBkYXRtaW5teGlkIDwgMV8wMDBf MDAwOiAgIyBub3Qgd3JhcGFyb3VuZC1hd2FyZSEKICAgICAgICAgICAgICAgIGJyZWFrCiAg ICAgICAgICAgIHRpbWUuc2xlZXAoMC41KQoKCmRlZiBtYWluKCk6CiAgICAjIEluIG9yZGVy IHRvIHRvIHRlc3QgbXVsdGl4aWQgd3JhcGFyb3VuZCwgd2UgbmVlZCB0byBmaXJzdCBhZHZh bmNlIHRoZSBjb3VudGVyIHRvCiAgICAjIHdpdGhpbiBzcGl0dGluZyBkaXN0YW5jZSBvZiB0 aGUgd3JhcGFyb3VuZCwgdGhhdCBpcyAyXjMyIG11bHRpLVhJRHMuIFdlIGNvdWxkIHNpbXBs eQogICAgIyBydW4gYSB3b3JrbG9hZCB0aGF0IGNvbnN1bWVzIGEgbG90IG9mIG11bHRpLVhJ RHMgdW50aWwgd2UgYXBwcm9hY2ggdGhhdCwgYnV0IHRoYXQKICAgICMgdGFrZXMgYSB2ZXJ5 IGxvbmcgdGltZS4gU28gd2UgY2hlYXQuCiAgICAjCiAgICAjIE91ciBzdHJhdGVneSBpcyB0 byBjcmVhdGUgYSBQb3N0Z3JlcyBjbHVzdGVyLCBhbmQgdXNlIHBnX3Jlc2V0d2FsIHRvCiAg ICAjIHNldCB0aGUgbXVsdGkteGlkIGNvdW50ZXIgYSBoaWdoZXIgdmFsdWUuIEhvd2V2ZXIs IHdlIGNhbm5vdCBkaXJlY3RseSBzZXQKICAgICMgaXQgdG8ganVzdCBiZWZvcmUgMl4zMiAo fiA0IGJpbGxpb24pLCBiZWNhdXNlIHRoYXQgd291bGQgbWFrZSB0aGUgZXhpc2l0bmcKICAg ICMgJ3JlbG1pbm14aWQnIHZhbHVlcyB0byBsb29rIGxpa2UgdGhleSdyZSBpbiB0aGUgZnV0 dXJlLiBJdCdzIG5vdCBjbGVhciBob3cgdGhlCiAgICAjIHN5c3RlbSB3b3VsZCBiZWhhdmUg aW4gdGhhdCBzaXR1YXRpb24uIFNvIGluc3RlYWQsIHdlIGJ1bXAgaXQgdXAgfiAxIGJpbGxp b24KICAgICMgbXVsdGktWElEcyBhdCBhIHRpbWUsIGFuZCBsZXQgYXV0b3ZhY3V1bSB0byBw cm9jZXNzIGFsbCB0aGUgcmVsYXRpb25zIGFuZCB1cGRhdGUKICAgICMgJ3JlbG1pbm14aWQn IGJldHdlZW4gZWFjaCBydW4uCiAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWyJpbml0ZGIi LCAiLUQiLCBQR0RBVEEsICItVSIsICJwb3N0Z3JlcyJdKQogICAgd2l0aCBvcGVuKGYie1BH REFUQX0vcG9zdGdyZXNxbC5jb25mIiwgImEiKSBhcyBmaWxlMToKICAgICAgICBmaWxlMS53 cml0ZWxpbmVzKFsKICAgICAgICAgICAgImxvZ19hdXRvdmFjdXVtX21pbl9kdXJhdGlvbiA9 IDBcbiIsCiAgICAgICAgICAgICMgUGVyZm9ybSBhbnRpLXdyYXBhcm91bmQgdmFjdXVtaW5n IGFnZ3Jlc3NpdmVseQogICAgICAgICAgICAiYXV0b3ZhY3V1bV9uYXB0aW1lPScxIHMnXG4i LAogICAgICAgICAgICAiYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSA9IDEwMDAwMDBcbiIs CiAgICAgICAgICAgICJhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSA9IDEw MDAwMDBcbiIsCiAgICAgICAgICAgICJzaGFyZWRfYnVmZmVycz0nMSBNQiciLAogICAgICAg IF0pCgogICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFsicGdfY3RsIiwgIi1EIiwgUEdEQVRB LCAic3RhcnQiXSkKICAgIGFkdmFuY2VfbXVsdGl4aWRfdG8oMHg0MDAwMDAwMCwgMHgxMDAw MDAwMCkKICAgIGFkdmFuY2VfbXVsdGl4aWRfdG8oMHg4MDAwMDAwMCwgMHgyMDAwMDAwMCkK ICAgIGFkdmFuY2VfbXVsdGl4aWRfdG8oMHhDMDAwMDAwMCwgMHgzMDAwMDAwMCkKICAgIGFk dmFuY2VfbXVsdGl4aWRfdG8oMHhGRkZGRkYwMCwgMHhGRkZGRkYwMCkKCmlmIF9fbmFtZV9f ID09ICJfX21haW5fXyI6CiAgICBtYWluKCkK --------------9Bq0iJouChp3EfM6mJPu18cx Content-Type: text/x-patch; charset=UTF-8; name="0001-Fix-bugs-in-MultiXact-truncation.patch" Content-Disposition: attachment; filename="0001-Fix-bugs-in-MultiXact-truncation.patch" Content-Transfer-Encoding: base64 RnJvbSBhYmUwOTZmYjk2MDEwNjQxMGJhYWE4NGRjNGJhOTZiYTViMzdjNmQwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgMTQgSnVuIDIwMjQgMTQ6MjA6NTggKzAzMDAK U3ViamVjdDogW1BBVENIIDEvMV0gRml4IGJ1Z3MgaW4gTXVsdGlYYWN0IHRydW5jYXRpb24K CjEuIFRydW5jYXRlTXVsdGlYYWN0KCkgcGVyZm9ybXMgdGhlIFNMUlUgdHJ1bmNhdGlvbnMg aW4gYSBjcml0aWNhbApzZWN0aW9uLiBEZWxldGluZyB0aGUgU0xSVSBzZWdtZW50cyBjYWxs cyBGb3J3YXJkU3luY1JlcXVlc3QoKSwgd2hpY2gKd2lsbCB0cnkgdG8gY29tcGFjdCB0aGUg cmVxdWVzdCBxdWV1ZSBpZiBpdCdzIGZ1bGwKKENvbXBhY3RDaGVja3BvaW50ZXJSZXF1ZXN0 UXVldWUoKSkuIFRoYXQgaW4gdHVybiBhbGxvY2F0ZXMgbWVtb3J5LAp3aGljaCBpcyBub3Qg YWxsb3dlZCBpbiBhIGNyaXRpY2FsIHNlY3Rpb24uIEJhY2t0cmFjZToKCiAgICBUUkFQOiBm YWlsZWQgQXNzZXJ0KCJDcml0U2VjdGlvbkNvdW50ID09IDAgfHwgKGNvbnRleHQpLT5hbGxv d0luQ3JpdFNlY3Rpb24iKSwgRmlsZTogIi4uL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4 dC5jIiwgTGluZTogMTM1MywgUElEOiA5MjA5ODEKICAgIHBvc3RncmVzOiBhdXRvdmFjdXVt IHdvcmtlciB0ZW1wbGF0ZTAoRXhjZXB0aW9uYWxDb25kaXRpb24rMHg2ZSlbMHg1NjBhNTAx ZTg2NmVdCiAgICBwb3N0Z3JlczogYXV0b3ZhY3V1bSB3b3JrZXIgdGVtcGxhdGUwKCsweDVk Y2UzZClbMHg1NjBhNTAyMTdlM2RdCiAgICBwb3N0Z3JlczogYXV0b3ZhY3V1bSB3b3JrZXIg dGVtcGxhdGUwKEZvcndhcmRTeW5jUmVxdWVzdCsweDhlKVsweDU2MGE0ZmZlYzk1ZV0KICAg IHBvc3RncmVzOiBhdXRvdmFjdXVtIHdvcmtlciB0ZW1wbGF0ZTAoUmVnaXN0ZXJTeW5jUmVx dWVzdCsweDJiKVsweDU2MGE1MDA5MWVlYl0KICAgIHBvc3RncmVzOiBhdXRvdmFjdXVtIHdv cmtlciB0ZW1wbGF0ZTAoKzB4MTg3YjBhKVsweDU2MGE0ZmRjMmIwYV0KICAgIHBvc3RncmVz OiBhdXRvdmFjdXVtIHdvcmtlciB0ZW1wbGF0ZTAoU2xydURlbGV0ZVNlZ21lbnQrMHgxMDEp WzB4NTYwYTRmZGMyYWIxXQogICAgcG9zdGdyZXM6IGF1dG92YWN1dW0gd29ya2VyIHRlbXBs YXRlMChUcnVuY2F0ZU11bHRpWGFjdCsweDJmYilbMHg1NjBhNGZkYmRlMWJdCiAgICBwb3N0 Z3JlczogYXV0b3ZhY3V1bSB3b3JrZXIgdGVtcGxhdGUwKHZhY191cGRhdGVfZGF0ZnJvemVu eGlkKzB4NGIzKVsweDU2MGE0ZmViZDJmM10KICAgIHBvc3RncmVzOiBhdXRvdmFjdXVtIHdv cmtlciB0ZW1wbGF0ZTAoKzB4M2FkZjY2KVsweDU2MGE0ZmZlOGY2Nl0KICAgIHBvc3RncmVz OiBhdXRvdmFjdXVtIHdvcmtlciB0ZW1wbGF0ZTAoQXV0b1ZhY1dvcmtlck1haW4rMHgzZWQp WzB4NTYwYTRmZmU3YzJkXQogICAgcG9zdGdyZXM6IGF1dG92YWN1dW0gd29ya2VyIHRlbXBs YXRlMCgrMHgzYjFlYWQpWzB4NTYwYTRmZmVjZWFkXQogICAgcG9zdGdyZXM6IGF1dG92YWN1 dW0gd29ya2VyIHRlbXBsYXRlMCgrMHgzYjYyMGUpWzB4NTYwYTRmZmYxMjBlXQogICAgcG9z dGdyZXM6IGF1dG92YWN1dW0gd29ya2VyIHRlbXBsYXRlMCgrMHgzYjNmYmIpWzB4NTYwYTRm ZmVlZmJiXQogICAgcG9zdGdyZXM6IGF1dG92YWN1dW0gd29ya2VyIHRlbXBsYXRlMCgrMHgy ZjcyNGUpWzB4NTYwYTRmZjMyMjRlXQogICAgL2xpYi94ODZfNjQtbGludXgtZ251L2xpYmMu c28uNigrMHgyN2M4YSlbMHg3ZjYyY2M2NDJjOGFdCiAgICAvbGliL3g4Nl82NC1saW51eC1n bnUvbGliYy5zby42KF9fbGliY19zdGFydF9tYWluKzB4ODUpWzB4N2Y2MmNjNjQyZDQ1XQog ICAgcG9zdGdyZXM6IGF1dG92YWN1dW0gd29ya2VyIHRlbXBsYXRlMChfc3RhcnQrMHgyMSlb MHg1NjBhNGZkMTZmMzFdCgpUbyBmaXgsIGJhaWwgb3V0IGluIENvbXBhY3RDaGVja3BvaW50 ZXJSZXF1ZXN0UXVldWUoKSB3aXRob3V0IGRvaW5nCmFueXRoaW5nLCBpZiBpdCdzIGNhbGxl ZCBpbiBhIGNyaXRpY2FsIHNlY3Rpb24uIFRoYXQgY292ZXJzIHRoZSBhYm92ZQpjYWxsIHBh dGgsIGFzIHdlbGwgYXMgYW55IG90aGVyIHNpbWlsYXIgY2FzZXMgd2hlcmUKUmVnaXN0ZXJT eW5jUmVxdWVzdCBtaWdodCBiZSBjYWxsZWQgaW4gYSBjcml0aWNhbCBzZWN0aW9uLgoKMi4g QWZ0ZXIgZml4aW5nIHRoYXQsIGFub3RoZXIgcHJvYmxlbSBiZWNhbWUgYXBwYXJlbnQ6IEF1 dG92YWN1dW0KcHJvY2VzcyBkb2luZyB0aGF0IHRydW5jYXRpb24gY2FuIGRlYWRsb2NrIHdp dGggdGhlIGNoZWNrcG9pbnRlcgpwcm9jZXNzLiBUcnVuY2F0ZU11bHRpWGFjdCgpIHNldHMg Ik15UHJvYy0+ZGVsYXlDaGtwdEZsYWdzIHw9CkRFTEFZX0NIS1BUX1NUQVJUIi4gSWYgdGhl IHN5bmMgcmVxdWVzdCBxdWV1ZSBpcyBmdWxsIGFuZCBjYW5ub3QgYmUKY29tcGFjdGVkLCB0 aGUgcHJvY2VzcyB3aWxsIHJlcGVhdGVkbHkgc2xlZXAgYW5kIHJldHJ5LCB1bnRpbCB0aGVy ZSBpcwpyb29tIGluIHRoZSBxdWV1ZS4gSG93ZXZlciwgaWYgdGhlIGNoZWNrcG9pbnRlciBp cyB0cnlpbmcgdG8gc3RhcnQgYQpjaGVja3BvaW50IGF0IHRoZSBzYW1lIHRpbWUsIGFuZCBp cyB3YWl0aW5nIGZvciB0aGUgREVMQVlfQ0hLUFRfU1RBUlQKcHJvY2Vzc2VzIHRvIGZpbmlz aCwgdGhlIHF1ZXVlIHdpbGwgbmV2ZXIgc2hyaW5rLgoKTW9yZSBjb25jcmV0ZWx5LCB0aGUg YXV0b3ZhY3V1bSBwcm9jZXNzIGlzIHN0dWNrIGhlcmU6CgogICAgIzAgIDB4MDAwMDdmYzkz NDkyNmRjMyBpbiBlcG9sbF93YWl0ICgpIGZyb20gL2xpYi94ODZfNjQtbGludXgtZ251L2xp YmMuc28uNgogICAgIzEgIDB4MDAwMDU2MjIwYjI0MzQ4YiBpbiBXYWl0RXZlbnRTZXRXYWl0 QmxvY2sgKHNldD0weDU2MjIwYzJlNGI1MCwgb2NjdXJyZWRfZXZlbnRzPTB4N2ZmZTc4NTZk MDQwLCBuZXZlbnRzPTEsIGN1cl90aW1lb3V0PTxvcHRpbWl6ZWQgb3V0PikgYXQgLi4vc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYzoxNTcwCiAgICAjMiAgV2FpdEV2ZW50U2V0 V2FpdCAoc2V0PTB4NTYyMjBjMmU0YjUwLCB0aW1lb3V0PXRpbWVvdXRAZW50cnk9MTAsIG9j Y3VycmVkX2V2ZW50cz08b3B0aW1pemVkIG91dD4sIG9jY3VycmVkX2V2ZW50c0BlbnRyeT0w eDdmZmU3ODU2ZDA0MCwgbmV2ZW50cz1uZXZlbnRzQGVudHJ5PTEsCiAgICAgICAgd2FpdF9l dmVudF9pbmZvPXdhaXRfZXZlbnRfaW5mb0BlbnRyeT0xNTA5OTQ5NDkpIGF0IC4uL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmM6MTUxNgogICAgIzMgIDB4MDAwMDU2MjIwYjI0 MzIyNCBpbiBXYWl0TGF0Y2ggKGxhdGNoPTxvcHRpbWl6ZWQgb3V0PiwgbGF0Y2hAZW50cnk9 MHgwLCB3YWtlRXZlbnRzPXdha2VFdmVudHNAZW50cnk9NDAsIHRpbWVvdXQ9dGltZW91dEBl bnRyeT0xMCwgd2FpdF9ldmVudF9pbmZvPXdhaXRfZXZlbnRfaW5mb0BlbnRyeT0xNTA5OTQ5 NDkpCiAgICAgICAgYXQgLi4vc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYzo1MzgK ICAgICM0ICAweDAwMDA1NjIyMGIyNmNmNDYgaW4gUmVnaXN0ZXJTeW5jUmVxdWVzdCAoZnRh Zz1mdGFnQGVudHJ5PTB4N2ZmZTc4NTZkMGEwLCB0eXBlPXR5cGVAZW50cnk9U1lOQ19GT1JH RVRfUkVRVUVTVCwgcmV0cnlPbkVycm9yPXRydWUpIGF0IC4uL3NyYy9iYWNrZW5kL3N0b3Jh Z2Uvc3luYy9zeW5jLmM6NjE0CiAgICAjNSAgMHgwMDAwNTYyMjBhZjlkYjBhIGluIFNscnVJ bnRlcm5hbERlbGV0ZVNlZ21lbnQgKGN0bD1jdGxAZW50cnk9MHg1NjIyMGI3YmViNjAgPE11 bHRpWGFjdE1lbWJlckN0bERhdGE+LCBzZWdubz1zZWdub0BlbnRyeT0xMTM1MCkgYXQgLi4v c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc2xydS5jOjE0OTUKICAgICM2ICAweDAwMDA1 NjIyMGFmOWRhYjEgaW4gU2xydURlbGV0ZVNlZ21lbnQgKGN0bD1jdGxAZW50cnk9MHg1NjIy MGI3YmViNjAgPE11bHRpWGFjdE1lbWJlckN0bERhdGE+LCBzZWdubz1zZWdub0BlbnRyeT0x MTM1MCkgYXQgLi4vc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc2xydS5jOjE1NjYKICAg ICM3ICAweDAwMDA1NjIyMGFmOThlMWIgaW4gUGVyZm9ybU1lbWJlcnNUcnVuY2F0aW9uIChv bGRlc3RPZmZzZXQ9PG9wdGltaXplZCBvdXQ+LCBuZXdPbGRlc3RPZmZzZXQ9PG9wdGltaXpl ZCBvdXQ+KSBhdCAuLi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYzoz MDA2CiAgICAjOCAgVHJ1bmNhdGVNdWx0aVhhY3QgKG5ld09sZGVzdE11bHRpPW5ld09sZGVz dE11bHRpQGVudHJ5PTMyMjEyMjU0NzIsIG5ld09sZGVzdE11bHRpREI9bmV3T2xkZXN0TXVs dGlEQkBlbnRyeT00KSBhdCAuLi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhh Y3QuYzozMjAxCiAgICAjOSAgMHgwMDAwNTYyMjBiMDk4MzAzIGluIHZhY190cnVuY2F0ZV9j bG9nIChmcm96ZW5YSUQ9NzQ5LCBtaW5NdWx0aT08b3B0aW1pemVkIG91dD4sIGxhc3RTYW5l RnJvemVuWGlkPTc0OSwgbGFzdFNhbmVNaW5NdWx0aT0zMjIxMjI1NDcyKSBhdCAuLi9zcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW0uYzoxOTE3CiAgICAjMTAgdmFjX3VwZGF0ZV9kYXRm cm96ZW54aWQgKCkgYXQgLi4vc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmM6MTc2MAog ICAgIzExIDB4MDAwMDU2MjIwYjFjM2Y3NiBpbiBkb19hdXRvdmFjdXVtICgpIGF0IC4uL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jOjI1NTAKICAgICMxMiAweDAwMDA1 NjIyMGIxYzJjM2QgaW4gQXV0b1ZhY1dvcmtlck1haW4gKHN0YXJ0dXBfZGF0YT08b3B0aW1p emVkIG91dD4sIHN0YXJ0dXBfZGF0YV9sZW49PG9wdGltaXplZCBvdXQ+KSBhdCAuLi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYzoxNTY5CgphbmQgdGhlIGNoZWNrcG9p bnRlciBpcyBzdHVjayBoZXJlOgoKICAgICMwICAweDAwMDA3ZmM5MzQ4ZWJmOTMgaW4gY2xv Y2tfbmFub3NsZWVwICgpIGZyb20gL2xpYi94ODZfNjQtbGludXgtZ251L2xpYmMuc28uNgog ICAgIzEgIDB4MDAwMDdmYzkzNDhmZTM1MyBpbiBuYW5vc2xlZXAgKCkgZnJvbSAvbGliL3g4 Nl82NC1saW51eC1nbnUvbGliYy5zby42CiAgICAjMiAgMHgwMDAwNTYyMjBiNDBlY2I0IGlu IHBnX3VzbGVlcCAobWljcm9zZWM9bWljcm9zZWNAZW50cnk9MTAwMDApIGF0IC4uL3NyYy9w b3J0L3Bnc2xlZXAuYzo1MAogICAgIzMgIDB4MDAwMDU2MjIwYWZiNDNjMyBpbiBDcmVhdGVD aGVja1BvaW50IChmbGFncz1mbGFnc0BlbnRyeT0xMDgpIGF0IC4uL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYzo3MDk4CiAgICAjNCAgMHgwMDAwNTYyMjBiMWM2ZTg2IGlu IENoZWNrcG9pbnRlck1haW4gKHN0YXJ0dXBfZGF0YT08b3B0aW1pemVkIG91dD4sIHN0YXJ0 dXBfZGF0YV9sZW49PG9wdGltaXplZCBvdXQ+KSBhdCAuLi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2NoZWNrcG9pbnRlci5jOjQ2NAoKVG8gZml4LCBhZGQgQWJzb3JiU3luY1JlcXVlc3Rz KCkgdG8gdGhlIGxvb3BzIHdoZXJlIHRoZSBjaGVja3BvaW50ZXIKd2FpdHMgZm9yIERFTEFZ X0NIS1BUX1NUQVJUIG9yIERFTEFZX0NIS1BUX0NPTVBMRVRFIG9wZXJhdGlvbnMgdG8KZmlu aXNoLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgfCA5ICsr KysrKysrKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyB8IDQgKysr KwogMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZy5jCmluZGV4IDMzMGUwNThjNWYuLjhkY2RmNWE3NjQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTcwOTQsNiArNzA5NCwxMyBAQCBDcmVhdGVDaGVj a1BvaW50KGludCBmbGFncykKIAl7CiAJCWRvCiAJCXsKKwkJCS8qCisJCQkgKiBLZWVwIGFi c29yYmluZyBmc3luYyByZXF1ZXN0cyB3aGlsZSB3ZSB3YWl0LiBUaGVyZSBjb3VsZCBldmVu CisJCQkgKiBiZSBhIGRlYWRsb2NrIGlmIHdlIGRvbid0LCBpZiB0aGUgcHJvY2VzcyB0aGF0 IHByZXZlbnRzIHRoZQorCQkJICogY2hlY2twb2ludCBpcyB0cnlpbmcgdG8gYWRkIGEgcmVx dWVzdCB0byB0aGUgcXVldWUuCisJCQkgKi8KKwkJCUFic29yYlN5bmNSZXF1ZXN0cygpOwor CiAJCQlwZ3N0YXRfcmVwb3J0X3dhaXRfc3RhcnQoV0FJVF9FVkVOVF9DSEVDS1BPSU5UX0RF TEFZX1NUQVJUKTsKIAkJCXBnX3VzbGVlcCgxMDAwMEwpOwkvKiB3YWl0IGZvciAxMCBtc2Vj ICovCiAJCQlwZ3N0YXRfcmVwb3J0X3dhaXRfZW5kKCk7CkBAIC03MTA5LDYgKzcxMTYsOCBA QCBDcmVhdGVDaGVja1BvaW50KGludCBmbGFncykKIAl7CiAJCWRvCiAJCXsKKwkJCUFic29y YlN5bmNSZXF1ZXN0cygpOworCiAJCQlwZ3N0YXRfcmVwb3J0X3dhaXRfc3RhcnQoV0FJVF9F VkVOVF9DSEVDS1BPSU5UX0RFTEFZX0NPTVBMRVRFKTsKIAkJCXBnX3VzbGVlcCgxMDAwMEwp OwkvKiB3YWl0IGZvciAxMCBtc2VjICovCiAJCQlwZ3N0YXRfcmVwb3J0X3dhaXRfZW5kKCk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jIGIv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYwppbmRleCAzYzY4YTk5MDRk Li4xOTlmMDA4YmNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNr cG9pbnRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMK QEAgLTExNjksNiArMTE2OSwxMCBAQCBDb21wYWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1ZXVl KHZvaWQpCiAJLyogbXVzdCBob2xkIENoZWNrcG9pbnRlckNvbW1Mb2NrIGluIGV4Y2x1c2l2 ZSBtb2RlICovCiAJQXNzZXJ0KExXTG9ja0hlbGRCeU1lKENoZWNrcG9pbnRlckNvbW1Mb2Nr KSk7CiAKKwkvKiBBdm9pZCBtZW1vcnkgYWxsb2NhdGlvbnMgaW4gYSBjcml0aWNhbCBzZWN0 aW9uLiAqLworCWlmIChDcml0U2VjdGlvbkNvdW50ID4gMCkKKwkJcmV0dXJuIGZhbHNlOwor CiAJLyogSW5pdGlhbGl6ZSBza2lwX3Nsb3QgYXJyYXkgKi8KIAlza2lwX3Nsb3QgPSBwYWxs b2MwKHNpemVvZihib29sKSAqIENoZWNrcG9pbnRlclNobWVtLT5udW1fcmVxdWVzdHMpOwog Ci0tIAoyLjM5LjIKCg== --------------9Bq0iJouChp3EfM6mJPu18cx--