Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nKcR4-0003bq-Lo for pgsql-hackers@arkaria.postgresql.org; Thu, 17 Feb 2022 08:46:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nKcR3-0001Ps-Ac for pgsql-hackers@arkaria.postgresql.org; Thu, 17 Feb 2022 08:46:45 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nKcR2-0001Pj-St for pgsql-hackers@lists.postgresql.org; Thu, 17 Feb 2022 08:46:45 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nKcR1-0000j5-B5 for pgsql-hackers@postgresql.org; Thu, 17 Feb 2022 08:46:44 +0000 Received: from [192.168.28.96] (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 0207621C3586 for ; Thu, 17 Feb 2022 11:46:41 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1645087602; bh=sw38MWKwnRCpM0lYCyjIsoIFcQHcI6HSESgQxBg5d7c=; h=Date:From:Subject:To; b=LRRioFq8GUscQ/3hyZE4zzTOf9OZGsuI9i3t4VhQy/K++TZoQauNNrEqAUaXMjxWQ tlj+wj27ed2mk7JbvJiP25hATdil8Z1vG5PQMBUMLCNVnitBgUD1GQ/+px/1/1QTlt T30VznUxdth5qLtsF1GDzHyXP6SznFqvBykoJ9IM= Content-Type: multipart/mixed; boundary="------------OInyrjVcgxU8Cu717xRL0Nvn" Message-ID: <561e187b-3549-c8d5-03f5-525c14e65bd0@postgrespro.ru> Date: Thu, 17 Feb 2022 13:46:40 +0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Content-Language: en-US From: Daria Lepikhova Subject: Assert in pageinspect with NULL pages To: pgsql-hackers@postgresql.org 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. --------------OInyrjVcgxU8Cu717xRL0Nvn Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, hackers! If we trying to call pageinspect functions for pages which are filled with nulls, we will get core dump. It happens with null pages for all indexes in pageinspect and for page_checksum. This problem was founded firstly by Anastasia Lubennikova, and now I continue this task. For example, next script leads to fail. CREATE TABLE test1 (     x bigserial,     y bigint DEFAULT 0 ); INSERT INTO test1(y) SELECT 0 FROM generate_series(1,1E6) AS x; SELECT page_checksum(repeat(E'\\000', 8192)::bytea, 1); server closed the connection unexpectedly     This probably means the server terminated abnormally     before or while processing the request. fatal: connection to server was lost LOG:  server process (PID 16465) was terminated by signal 6 DETAIL:  Failed process was running: select page_checksum(repeat(E'\\000', 8192)::bytea, 1); LOG:  terminating any other active server processes LOG:  all server processes terminated; reinitializing LOG:  database system was interrupted; last known up at 2022-02-16 14:03:16 +05 LOG:  database system was not properly shut down; automatic recovery in progress LOG:  redo starts at 0/14F1B20 LOG:  invalid record length at 0/5D40CD8: wanted 24, got 0 LOG:  redo done at 0/5D40BC0 system usage: CPU: user: 0.98 s, system: 0.02 s, elapsed: 1.01 s LOG:  checkpoint starting: end-of-recovery immediate wait LOG:  checkpoint complete: wrote 5500 buffers (33.6%); 0 WAL file(s) added, 0 removed, 4 recycled; write=0.064 s, sync=0.007 s, total=0.080 s; sync files=45, longest=0.004 s, average=0.001 s; distance=74044 kB, estimate=74044 kB LOG:  database system is ready to accept connections Also it is possible to use     select brin_metapage_info(repeat(E'\\000', 8192)::bytea); or     select bt_page_items(repeat(E'\\000', 8192)::bytea); for getting fail. I tried to make some additional checks for null pages into pageinspect' functions. The attached patch also contains tests for this case. What do you think? -- Daria Lepikhova Postgres Professional --------------OInyrjVcgxU8Cu717xRL0Nvn Content-Type: text/x-patch; charset=UTF-8; name="0001-Add-checks-for-null-pages-to-pageinspect-functions.patch" Content-Disposition: attachment; filename*0="0001-Add-checks-for-null-pages-to-pageinspect-functions.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSA5MmQ3MWQ5YjVjNTgzZjVmMjczMzY0NmE0MmMzNmU3ZTQzN2VkMGExIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiZC5sZXBpa2hvdmEiIDxkLmxlcGlraG92YUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogVHVlLCAxNSBGZWIgMjAyMiAxNDoxMzowNSArMDUwMApTdWJq ZWN0OiBbUEFUQ0hdIEFkZCBjaGVja3MgZm9yIG51bGwgcGFnZXMgdG8gcGFnZWluc3BlY3Qg ZnVuY3Rpb25zCgotLS0KIGNvbnRyaWIvcGFnZWluc3BlY3QvYnJpbmZ1bmNzLmMgICAgICAg ICAgIHwgMTIgKysrKysrKysrKysrCiBjb250cmliL3BhZ2VpbnNwZWN0L2J0cmVlZnVuY3Mu YyAgICAgICAgICB8IDEyICsrKysrKysrKysrKwogY29udHJpYi9wYWdlaW5zcGVjdC9leHBl Y3RlZC9icmluLm91dCAgICAgfCAgOSArKysrKysrKysKIGNvbnRyaWIvcGFnZWluc3BlY3Qv ZXhwZWN0ZWQvYnRyZWUub3V0ICAgIHwgIDMgKysrCiBjb250cmliL3BhZ2VpbnNwZWN0L2V4 cGVjdGVkL2NoZWNrc3VtLm91dCB8ICAzICsrKwogY29udHJpYi9wYWdlaW5zcGVjdC9leHBl Y3RlZC9naW4ub3V0ICAgICAgfCAgNyArKysrKysrCiBjb250cmliL3BhZ2VpbnNwZWN0L2V4 cGVjdGVkL2hhc2gub3V0ICAgICB8ICA5ICsrKysrKysrKwogY29udHJpYi9wYWdlaW5zcGVj dC9yYXdwYWdlLmMgICAgICAgICAgICAgfCAxMiArKysrKysrKysrKysKIGNvbnRyaWIvcGFn ZWluc3BlY3Qvc3FsL2JyaW4uc3FsICAgICAgICAgIHwgIDYgKysrKysrCiBjb250cmliL3Bh Z2VpbnNwZWN0L3NxbC9idHJlZS5zcWwgICAgICAgICB8ICAzICsrKwogY29udHJpYi9wYWdl aW5zcGVjdC9zcWwvY2hlY2tzdW0uc3FsICAgICAgfCAgNCArKysrCiBjb250cmliL3BhZ2Vp bnNwZWN0L3NxbC9naW4uc3FsICAgICAgICAgICB8ICA1ICsrKysrCiBjb250cmliL3BhZ2Vp bnNwZWN0L3NxbC9oYXNoLnNxbCAgICAgICAgICB8ICA2ICsrKysrKwogMTMgZmlsZXMgY2hh bmdlZCwgOTEgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3Bl Y3QvYnJpbmZ1bmNzLmMgYi9jb250cmliL3BhZ2VpbnNwZWN0L2JyaW5mdW5jcy5jCmluZGV4 IGYxZTY0YTM5ZWYyLi41NjEyOWE0MGFiYiAxMDA2NDQKLS0tIGEvY29udHJpYi9wYWdlaW5z cGVjdC9icmluZnVuY3MuYworKysgYi9jb250cmliL3BhZ2VpbnNwZWN0L2JyaW5mdW5jcy5j CkBAIC02Myw2ICs2MywxMiBAQCBicmluX3BhZ2VfdHlwZShQR19GVU5DVElPTl9BUkdTKQog CQkJCSBlcnJkZXRhaWwoIkV4cGVjdGVkIHNpemUgJWQsIGdvdCAlZCIsCiAJCQkJCQkgICBC TENLU1osIHJhd19wYWdlX3NpemUpKSk7CiAKKwkvKiBjaGVjayB0aGF0IHRoZSBwYWdlIGlz IGluaXRpYWxpemVkIGJlZm9yZSBhY2Nlc3NpbmcgYW55IGZpZWxkcyAqLworCWlmIChQYWdl SXNOZXcocGFnZSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiaW5wdXQgcGFnZSBpcyBl bXB0eSIpKSk7CisKIAlzd2l0Y2ggKEJyaW5QYWdlVHlwZShwYWdlKSkKIAl7CiAJCWNhc2Ug QlJJTl9QQUdFVFlQRV9NRVRBOgpAQCAtMTAzLDYgKzEwOSwxMiBAQCB2ZXJpZnlfYnJpbl9w YWdlKGJ5dGVhICpyYXdfcGFnZSwgdWludDE2IHR5cGUsIGNvbnN0IGNoYXIgKnN0cnR5cGUp CiAKIAlwYWdlID0gVkFSREFUQShyYXdfcGFnZSk7CiAKKwkvKiBjaGVjayB0aGF0IHRoZSBw YWdlIGlzIGluaXRpYWxpemVkIGJlZm9yZSBhY2Nlc3NpbmcgYW55IGZpZWxkcyAqLworCWlm IChQYWdlSXNOZXcocGFnZSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiaW5wdXQgcGFn ZSBpcyBlbXB0eSIpKSk7CisKIAkvKiB2ZXJpZnkgdGhlIHNwZWNpYWwgc3BhY2Ugc2F5cyB0 aGlzIHBhZ2UgaXMgd2hhdCB3ZSB3YW50ICovCiAJaWYgKEJyaW5QYWdlVHlwZShwYWdlKSAh PSB0eXBlKQogCQllcmVwb3J0KEVSUk9SLApkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5z cGVjdC9idHJlZWZ1bmNzLmMgYi9jb250cmliL3BhZ2VpbnNwZWN0L2J0cmVlZnVuY3MuYwpp bmRleCAwM2RlYmUzMzZiYS4uN2FmMzVkYTE5ZjMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFn ZWluc3BlY3QvYnRyZWVmdW5jcy5jCisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvYnRyZWVm dW5jcy5jCkBAIC01MTksNiArNTE5LDEyIEBAIGJ0X3BhZ2VfaXRlbXNfaW50ZXJuYWwoUEdf RlVOQ1RJT05fQVJHUywgZW51bSBwYWdlaW5zcGVjdF92ZXJzaW9uIGV4dF92ZXJzaW9uKQog CQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CiAJCXJlbGF0aW9uX2Nsb3NlKHJlbCwg QWNjZXNzU2hhcmVMb2NrKTsKIAorCQkvKiBjaGVjayB0aGF0IHRoZSBwYWdlIGlzIGluaXRp YWxpemVkIGJlZm9yZSBhY2Nlc3NpbmcgYW55IGZpZWxkcyAqLworCQlpZiAoUGFnZUlzTmV3 KHVhcmdzLT5wYWdlKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQllcnJtc2coImlucHV0IHBhZ2Ug aXMgZW1wdHkiKSkpOworCiAJCXVhcmdzLT5vZmZzZXQgPSBGaXJzdE9mZnNldE51bWJlcjsK IAogCQlvcGFxdWUgPSAoQlRQYWdlT3BhcXVlKSBQYWdlR2V0U3BlY2lhbFBvaW50ZXIodWFy Z3MtPnBhZ2UpOwpAQCAtNjE1LDYgKzYyMSwxMiBAQCBidF9wYWdlX2l0ZW1zX2J5dGVhKFBH X0ZVTkNUSU9OX0FSR1MpCiAKIAkJdWFyZ3MtPnBhZ2UgPSBWQVJEQVRBKHJhd19wYWdlKTsK IAorCQkvKiBjaGVjayB0aGF0IHRoZSBwYWdlIGlzIGluaXRpYWxpemVkIGJlZm9yZSBhY2Nl c3NpbmcgYW55IGZpZWxkcyAqLworCQlpZiAoUGFnZUlzTmV3KHVhcmdzLT5wYWdlKSkKKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCQllcnJtc2coImlucHV0IHBhZ2UgaXMgZW1wdHkiKSkpOworCiAJ CXVhcmdzLT5vZmZzZXQgPSBGaXJzdE9mZnNldE51bWJlcjsKIAogCQlvcGFxdWUgPSAoQlRQ YWdlT3BhcXVlKSBQYWdlR2V0U3BlY2lhbFBvaW50ZXIodWFyZ3MtPnBhZ2UpOwpkaWZmIC0t Z2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9leHBlY3RlZC9icmluLm91dCBiL2NvbnRyaWIv cGFnZWluc3BlY3QvZXhwZWN0ZWQvYnJpbi5vdXQKaW5kZXggNzFlYjE5MDM4MGMuLjhlMzA5 YTJhNWQxIDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2VpbnNwZWN0L2V4cGVjdGVkL2JyaW4u b3V0CisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQvYnJpbi5vdXQKQEAgLTQ4 LDQgKzQ4LDEzIEBAIFNFTEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFn ZSgndGVzdDFfYV9pZHgnLCAyKSwgJ3Rlc3QxX2FfaWR4JykKICAgICAgICAgICAxIHwgICAg ICAwIHwgICAgICAxIHwgZiAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgIHwgezEg Li4gMX0KICgxIHJvdykKIAorLS0gQ2hlY2sgdGhhdCBhbGwgZnVuY3Rpb25zIGZhaWwgZ3Jh Y2VmdWxseSB3aXRoIGFuIGVtcHR5IHBhZ2UgaW1wdXQKK3NlbGVjdCBicmluX3BhZ2VfdHlw ZShyZXBlYXQoRSdcXDAwMCcsIDgxOTIpOjpieXRlYSk7CitFUlJPUjogIGlucHV0IHBhZ2Ug aXMgZW1wdHkKK3NlbGVjdCBicmluX21ldGFwYWdlX2luZm8ocmVwZWF0KEUnXFwwMDAnLCA4 MTkyKTo6Ynl0ZWEpOworRVJST1I6ICBpbnB1dCBwYWdlIGlzIGVtcHR5CitzZWxlY3QgYnJp bl9yZXZtYXBfZGF0YShyZXBlYXQoRSdcXDAwMCcsIDgxOTIpOjpieXRlYSk7CitFUlJPUjog IGlucHV0IHBhZ2UgaXMgZW1wdHkKK3NlbGVjdCBicmluX3BhZ2VfaXRlbXMocmVwZWF0KEUn XFwwMDAnLCA4MTkyKTo6Ynl0ZWEsICd0ZXN0MV9hX2lkeCcpOworRVJST1I6ICBpbnB1dCBw YWdlIGlzIGVtcHR5CiBEUk9QIFRBQkxFIHRlc3QxOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9w YWdlaW5zcGVjdC9leHBlY3RlZC9idHJlZS5vdXQgYi9jb250cmliL3BhZ2VpbnNwZWN0L2V4 cGVjdGVkL2J0cmVlLm91dAppbmRleCBjNjBiYzg4NTYwYy4uY2M2YzQxODFjODUgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQvYnRyZWUub3V0CisrKyBiL2Nv bnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQvYnRyZWUub3V0CkBAIC03MCw0ICs3MCw3IEBA IHRpZHMgICAgICAgfAogCiBTRUxFQ1QgKiBGUk9NIGJ0X3BhZ2VfaXRlbXMoZ2V0X3Jhd19w YWdlKCd0ZXN0MV9hX2lkeCcsIDIpKTsKIEVSUk9SOiAgYmxvY2sgbnVtYmVyIDIgaXMgb3V0 IG9mIHJhbmdlIGZvciByZWxhdGlvbiAidGVzdDFfYV9pZHgiCistLSBDaGVjayB0aGF0IGJ0 X3BhZ2VfaXRlbXMoKSBmYWlscyBncmFjZWZ1bGx5IHdpdGggYW4gZW1wdHkgcGFnZSBpbnB1 dAorc2VsZWN0IGJ0X3BhZ2VfaXRlbXMocmVwZWF0KEUnXFwwMDAnLCA4MTkyKTo6Ynl0ZWEp OworRVJST1I6ICBpbnB1dCBwYWdlIGlzIGVtcHR5CiBEUk9QIFRBQkxFIHRlc3QxOwpkaWZm IC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9leHBlY3RlZC9jaGVja3N1bS5vdXQgYi9j b250cmliL3BhZ2VpbnNwZWN0L2V4cGVjdGVkL2NoZWNrc3VtLm91dAppbmRleCBhODUzODhl MTU4ZS4uZmYwN2E4NzkyMTYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvZXhw ZWN0ZWQvY2hlY2tzdW0ub3V0CisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQv Y2hlY2tzdW0ub3V0CkBAIC0zOCwzICszOCw2IEBAIFNFTEVDVCBibGtubywKICAgIDEwMCB8 ICAgICAgICAxMTM5IHwgICAgICAgMjg0MzggfCAgICAgICAgMzY0OCB8ICAgICAgICAtMzA4 ODEgfCAgICAgICAgLTE2MzA1IHwgICAgICAgIC0yNzM0OQogKDMgcm93cykKIAorIC0tQ2hl Y2sgdGhhdCBwYWdlX2NoZWNrc3VtKCkgd2l0aCBhbiBlbXB0eSBwYWdlIGZhaWxzIGdyYWNl ZnVsbHkKKyBzZWxlY3QgcGFnZV9jaGVja3N1bShyZXBlYXQoRSdcXDAwMCcsIDgxOTIpOjpi eXRlYSwgMSk7CitFUlJPUjogIGlucHV0IHBhZ2UgaXMgZW1wdHkKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQvZ2luLm91dCBiL2NvbnRyaWIvcGFnZWluc3Bl Y3QvZXhwZWN0ZWQvZ2luLm91dAppbmRleCBlZjc1NzBiOTcyMy4uZWYwZmRiNTk1NjUgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQvZ2luLm91dAorKysgYi9j b250cmliL3BhZ2VpbnNwZWN0L2V4cGVjdGVkL2dpbi5vdXQKQEAgLTM1LDQgKzM1LDExIEBA IEZST00gZ2luX2xlYWZwYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndGVzdDFfeV9pZHgnLAog LVsgUkVDT1JEIDEgXQogP2NvbHVtbj8gfCB0CiAKKy0tIENoZWNrIHRoYXQgYWxsIGZ1bmN0 aW9ucyBmYWlsIGdyYWNlZnVsbHkgd2l0aCBhbiBlbXB0eSBwYWdlIGltcHV0CitzZWxlY3Qg Z2luX21ldGFwYWdlX2luZm8ocmVwZWF0KEUnXFwwMDAnLCA4MTkyKTo6Ynl0ZWEpOworRVJS T1I6ICBpbnB1dCBwYWdlIGlzIGVtcHR5CitzZWxlY3QgZ2luX3BhZ2Vfb3BhcXVlX2luZm8o cmVwZWF0KEUnXFwwMDAnLCA4MTkyKTo6Ynl0ZWEpOworRVJST1I6ICBpbnB1dCBwYWdlIGlz IGVtcHR5CitzZWxlY3QgZ2luX2xlYWZwYWdlX2l0ZW1zKHJlcGVhdChFJ1xcMDAwJywgODE5 Mik6OmJ5dGVhKTsKK0VSUk9SOiAgaW5wdXQgcGFnZSBpcyBlbXB0eQogRFJPUCBUQUJMRSB0 ZXN0MTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQvaGFzaC5v dXQgYi9jb250cmliL3BhZ2VpbnNwZWN0L2V4cGVjdGVkL2hhc2gub3V0CmluZGV4IGJkMDYy OGQwMTM2Li4yNzFmMzNiYjQ4MSAxMDA2NDQKLS0tIGEvY29udHJpYi9wYWdlaW5zcGVjdC9l eHBlY3RlZC9oYXNoLm91dAorKysgYi9jb250cmliL3BhZ2VpbnNwZWN0L2V4cGVjdGVkL2hh c2gub3V0CkBAIC0xNjMsNCArMTYzLDEzIEBAIFNFTEVDVCAqIEZST00gaGFzaF9wYWdlX2l0 ZW1zKGdldF9yYXdfcGFnZSgndGVzdF9oYXNoX2FfaWR4JywgNCkpOwogCiBTRUxFQ1QgKiBG Uk9NIGhhc2hfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3Rlc3RfaGFzaF9hX2lkeCcsIDUp KTsKIEVSUk9SOiAgcGFnZSBpcyBub3QgYSBoYXNoIGJ1Y2tldCBvciBvdmVyZmxvdyBwYWdl CistLSBDaGVjayB0aGF0IGFsbCBmdW5jdGlvbnMgZmFpbCBncmFjZWZ1bGx5IHdpdGggYW4g ZW1wdHkgcGFnZSBpbXB1dAorc2VsZWN0IGhhc2hfcGFnZV90eXBlKHJlcGVhdChFJ1xcMDAw JywgODE5Mik6OmJ5dGVhKTsKK0VSUk9SOiAgaW5wdXQgcGFnZSBpcyBlbXB0eQorc2VsZWN0 IGhhc2hfbWV0YXBhZ2VfaW5mbyhyZXBlYXQoRSdcXDAwMCcsIDgxOTIpOjpieXRlYSk7CitF UlJPUjogIGlucHV0IHBhZ2UgaXMgZW1wdHkKK3NlbGVjdCBoYXNoX3BhZ2Vfc3RhdHMocmVw ZWF0KEUnXFwwMDAnLCA4MTkyKTo6Ynl0ZWEpOworRVJST1I6ICBpbnB1dCBwYWdlIGlzIGVt cHR5CitzZWxlY3QgaGFzaF9wYWdlX2l0ZW1zKHJlcGVhdChFJ1xcMDAwJywgODE5Mik6OmJ5 dGVhKTsKK0VSUk9SOiAgaW5wdXQgcGFnZSBpcyBlbXB0eQogRFJPUCBUQUJMRSB0ZXN0X2hh c2g7CmRpZmYgLS1naXQgYS9jb250cmliL3BhZ2VpbnNwZWN0L3Jhd3BhZ2UuYyBiL2NvbnRy aWIvcGFnZWluc3BlY3QvcmF3cGFnZS5jCmluZGV4IDdlNDFhZjA0NWYzLi44YTdiZmNjZmNj MyAxMDA2NDQKLS0tIGEvY29udHJpYi9wYWdlaW5zcGVjdC9yYXdwYWdlLmMKKysrIGIvY29u dHJpYi9wYWdlaW5zcGVjdC9yYXdwYWdlLmMKQEAgLTIzMCw2ICsyMzAsMTIgQEAgZ2V0X3Bh Z2VfZnJvbV9yYXcoYnl0ZWEgKnJhd19wYWdlKQogCiAJbWVtY3B5KHBhZ2UsIFZBUkRBVEFf QU5ZKHJhd19wYWdlKSwgcmF3X3BhZ2Vfc2l6ZSk7CiAKKwkvKiBjaGVjayB0aGF0IHRoZSBw YWdlIGlzIGluaXRpYWxpemVkICovCisJaWYgKFBhZ2VJc05ldygoUGFnZSkgcGFnZSkpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRF Ul9WQUxVRSksCisJCQkJZXJybXNnKCJpbnB1dCBwYWdlIGlzIGVtcHR5IikpKTsKKwogCXJl dHVybiBwYWdlOwogfQogCkBAIC0zNzUsNiArMzgxLDEyIEBAIHBhZ2VfY2hlY2tzdW1faW50 ZXJuYWwoUEdfRlVOQ1RJT05fQVJHUywgZW51bSBwYWdlaW5zcGVjdF92ZXJzaW9uIGV4dF92 ZXJzaW9uKQogCiAJcGFnZSA9IChQYWdlSGVhZGVyKSBWQVJEQVRBKHJhd19wYWdlKTsKIAor CS8qIGNoZWNrIHRoYXQgdGhlIHBhZ2UgaXMgaW5pdGlhbGl6ZWQgKi8KKwlpZiAoUGFnZUlz TmV3KChQYWdlKSBwYWdlKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coImlucHV0IHBhZ2Ug aXMgZW1wdHkiKSkpOworCiAJUEdfUkVUVVJOX0lOVDE2KHBnX2NoZWNrc3VtX3BhZ2UoKGNo YXIgKikgcGFnZSwgYmxrbm8pKTsKIH0KIApkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5z cGVjdC9zcWwvYnJpbi5zcWwgYi9jb250cmliL3BhZ2VpbnNwZWN0L3NxbC9icmluLnNxbApp bmRleCA3MzViYzNiNjczMy4uZGE4MTBhZGY2MmIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFn ZWluc3BlY3Qvc3FsL2JyaW4uc3FsCisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3Qvc3FsL2Jy aW4uc3FsCkBAIC0xNSw0ICsxNSwxMCBAQCBTRUxFQ1QgKiBGUk9NIGJyaW5fcmV2bWFwX2Rh dGEoZ2V0X3Jhd19wYWdlKCd0ZXN0MV9hX2lkeCcsIDEpKSBMSU1JVCA1OwogU0VMRUNUICog RlJPTSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0ZXN0MV9hX2lkeCcsIDIpLCAn dGVzdDFfYV9pZHgnKQogICAgIE9SREVSIEJZIGJsa251bSwgYXR0bnVtIExJTUlUIDU7CiAK Ky0tIENoZWNrIHRoYXQgYWxsIGZ1bmN0aW9ucyBmYWlsIGdyYWNlZnVsbHkgd2l0aCBhbiBl bXB0eSBwYWdlIGltcHV0CitzZWxlY3QgYnJpbl9wYWdlX3R5cGUocmVwZWF0KEUnXFwwMDAn LCA4MTkyKTo6Ynl0ZWEpOworc2VsZWN0IGJyaW5fbWV0YXBhZ2VfaW5mbyhyZXBlYXQoRSdc XDAwMCcsIDgxOTIpOjpieXRlYSk7CitzZWxlY3QgYnJpbl9yZXZtYXBfZGF0YShyZXBlYXQo RSdcXDAwMCcsIDgxOTIpOjpieXRlYSk7CitzZWxlY3QgYnJpbl9wYWdlX2l0ZW1zKHJlcGVh dChFJ1xcMDAwJywgODE5Mik6OmJ5dGVhLCAndGVzdDFfYV9pZHgnKTsKKwogRFJPUCBUQUJM RSB0ZXN0MTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3BlY3Qvc3FsL2J0cmVlLnNx bCBiL2NvbnRyaWIvcGFnZWluc3BlY3Qvc3FsL2J0cmVlLnNxbAppbmRleCA5NjM1OTE3OTU5 Ny4uZDJkOTkxOTYwNzcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3Qvc3FsL2J0 cmVlLnNxbAorKysgYi9jb250cmliL3BhZ2VpbnNwZWN0L3NxbC9idHJlZS5zcWwKQEAgLTIx LDQgKzIxLDcgQEAgU0VMRUNUICogRlJPTSBidF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgn dGVzdDFfYV9pZHgnLCAwKSk7CiBTRUxFQ1QgKiBGUk9NIGJ0X3BhZ2VfaXRlbXMoZ2V0X3Jh d19wYWdlKCd0ZXN0MV9hX2lkeCcsIDEpKTsKIFNFTEVDVCAqIEZST00gYnRfcGFnZV9pdGVt cyhnZXRfcmF3X3BhZ2UoJ3Rlc3QxX2FfaWR4JywgMikpOwogCistLSBDaGVjayB0aGF0IGJ0 X3BhZ2VfaXRlbXMoKSBmYWlscyBncmFjZWZ1bGx5IHdpdGggYW4gZW1wdHkgcGFnZSBpbnB1 dAorc2VsZWN0IGJ0X3BhZ2VfaXRlbXMocmVwZWF0KEUnXFwwMDAnLCA4MTkyKTo6Ynl0ZWEp OworCiBEUk9QIFRBQkxFIHRlc3QxOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVj dC9zcWwvY2hlY2tzdW0uc3FsIGIvY29udHJpYi9wYWdlaW5zcGVjdC9zcWwvY2hlY2tzdW0u c3FsCmluZGV4IGI4NzdkYjA2MTFmLi41NmM0ZjZiNTJlZCAxMDA2NDQKLS0tIGEvY29udHJp Yi9wYWdlaW5zcGVjdC9zcWwvY2hlY2tzdW0uc3FsCisrKyBiL2NvbnRyaWIvcGFnZWluc3Bl Y3Qvc3FsL2NoZWNrc3VtLnNxbApAQCAtMjksMyArMjksNyBAQCBTRUxFQ1QgYmxrbm8sCiAg ICAgcGFnZV9jaGVja3N1bShkZWNvZGUocmVwZWF0KCdlNmQ2JywgOmJsb2NrX3NpemUgLyAy KSwgJ2hleCcpLCBibGtubykgQVMgY2hlY2tzdW1fZTZkNiwKICAgICBwYWdlX2NoZWNrc3Vt KGRlY29kZShyZXBlYXQoJzRhNWUnLCA6YmxvY2tfc2l6ZSAvIDIpLCAnaGV4JyksIGJsa25v KSBBUyBjaGVja3N1bV80YTVlCiAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDAsIDEwMCwgNTAp IEFTIGEgKGJsa25vKTsKKworIC0tQ2hlY2sgdGhhdCBwYWdlX2NoZWNrc3VtKCkgd2l0aCBh biBlbXB0eSBwYWdlIGZhaWxzIGdyYWNlZnVsbHkKKyBzZWxlY3QgcGFnZV9jaGVja3N1bShy ZXBlYXQoRSdcXDAwMCcsIDgxOTIpOjpieXRlYSwgMSk7CisKZGlmZiAtLWdpdCBhL2NvbnRy aWIvcGFnZWluc3BlY3Qvc3FsL2dpbi5zcWwgYi9jb250cmliL3BhZ2VpbnNwZWN0L3NxbC9n aW4uc3FsCmluZGV4IDQyM2Y1YzU3NDk5Li41NTljNTcwYTY0NCAxMDA2NDQKLS0tIGEvY29u dHJpYi9wYWdlaW5zcGVjdC9zcWwvZ2luLnNxbAorKysgYi9jb250cmliL3BhZ2VpbnNwZWN0 L3NxbC9naW4uc3FsCkBAIC0xOCw0ICsxOCw5IEBAIEZST00gZ2luX2xlYWZwYWdlX2l0ZW1z KGdldF9yYXdfcGFnZSgndGVzdDFfeV9pZHgnLAogICAgICAgICAgICAgICAgICAgICAgICAg KHBnX3JlbGF0aW9uX3NpemUoJ3Rlc3QxX3lfaWR4JykgLwogICAgICAgICAgICAgICAgICAg ICAgICAgIGN1cnJlbnRfc2V0dGluZygnYmxvY2tfc2l6ZScpOjpiaWdpbnQpOjppbnQgLSAx KSk7CiAKKy0tIENoZWNrIHRoYXQgYWxsIGZ1bmN0aW9ucyBmYWlsIGdyYWNlZnVsbHkgd2l0 aCBhbiBlbXB0eSBwYWdlIGltcHV0CitzZWxlY3QgZ2luX21ldGFwYWdlX2luZm8ocmVwZWF0 KEUnXFwwMDAnLCA4MTkyKTo6Ynl0ZWEpOworc2VsZWN0IGdpbl9wYWdlX29wYXF1ZV9pbmZv KHJlcGVhdChFJ1xcMDAwJywgODE5Mik6OmJ5dGVhKTsKK3NlbGVjdCBnaW5fbGVhZnBhZ2Vf aXRlbXMocmVwZWF0KEUnXFwwMDAnLCA4MTkyKTo6Ynl0ZWEpOworCiBEUk9QIFRBQkxFIHRl c3QxOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9zcWwvaGFzaC5zcWwgYi9j b250cmliL3BhZ2VpbnNwZWN0L3NxbC9oYXNoLnNxbAppbmRleCA2NGYzM2YxZDUyZi4uNGVm MjNjYjk0ZmUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3Qvc3FsL2hhc2guc3Fs CisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3Qvc3FsL2hhc2guc3FsCkBAIC03OCw1ICs3OCwx MSBAQCBTRUxFQ1QgKiBGUk9NIGhhc2hfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3Rlc3Rf aGFzaF9hX2lkeCcsIDMpKTsKIFNFTEVDVCAqIEZST00gaGFzaF9wYWdlX2l0ZW1zKGdldF9y YXdfcGFnZSgndGVzdF9oYXNoX2FfaWR4JywgNCkpOwogU0VMRUNUICogRlJPTSBoYXNoX3Bh Z2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0ZXN0X2hhc2hfYV9pZHgnLCA1KSk7CiAKKy0tIENo ZWNrIHRoYXQgYWxsIGZ1bmN0aW9ucyBmYWlsIGdyYWNlZnVsbHkgd2l0aCBhbiBlbXB0eSBw YWdlIGltcHV0CitzZWxlY3QgaGFzaF9wYWdlX3R5cGUocmVwZWF0KEUnXFwwMDAnLCA4MTky KTo6Ynl0ZWEpOworc2VsZWN0IGhhc2hfbWV0YXBhZ2VfaW5mbyhyZXBlYXQoRSdcXDAwMCcs IDgxOTIpOjpieXRlYSk7CitzZWxlY3QgaGFzaF9wYWdlX3N0YXRzKHJlcGVhdChFJ1xcMDAw JywgODE5Mik6OmJ5dGVhKTsKK3NlbGVjdCBoYXNoX3BhZ2VfaXRlbXMocmVwZWF0KEUnXFww MDAnLCA4MTkyKTo6Ynl0ZWEpOworCiAKIERST1AgVEFCTEUgdGVzdF9oYXNoOwotLSAKMi4y NS4xCgo= --------------OInyrjVcgxU8Cu717xRL0Nvn--