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 1r3ZVf-004ZN8-Kt for pgsql-hackers@arkaria.postgresql.org; Thu, 16 Nov 2023 10:22:08 +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 1r3ZVe-00658g-3v for pgsql-hackers@arkaria.postgresql.org; Thu, 16 Nov 2023 10:22:06 +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 1r3ZVd-00658X-Ex for pgsql-hackers@lists.postgresql.org; Thu, 16 Nov 2023 10:22:05 +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 1r3ZVZ-005qLY-FJ for pgsql-hackers@lists.postgresql.org; Thu, 16 Nov 2023 10:22:04 +0000 Received: from [172.22.0.62] (unknown [90.160.41.100]) (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 4SWGKv30R8z49Q36; Thu, 16 Nov 2023 12:21:50 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1700130115; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=f8j9PFHg2ownp/V2yq6lhPvTlANKRVBwOJNWoncyS3w=; b=b4oYkd7yV85sEMSPQXRrR6dKjNRHYfb+aD3CXC8kybcOE//SKfBiV5i2HbhzK5GlKEdRrv iTEpJcr9GcTUUbLXQLvVmGuZ8FheDenVsJd1eFLEKpMIDjI1a+KHQTrdiu6J5i5XaIkeT1 NKSpA4avBOUW50VTzfKZiUD39fZ8mH6SHE8A73eEW1i306o4CLtOL2rzJSCrd0aAk4ryny f/YwDC5waD/svYRAsBul4e5nqTME/tNu1vZQw8HvNUSXhmYXs6G6zDLWSQ3jp8nZEgLbPs +yK7U+ZYoXBuV7s9vEWhVke93qEqWSCIjW8+4oe02bgLvE8hl8Pm3N6bazLTZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1700130115; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=f8j9PFHg2ownp/V2yq6lhPvTlANKRVBwOJNWoncyS3w=; b=pl3APoVk2WB+2vu1Iqx3zcQDrzOvv9VwGj9ti4AN1Vm9lzCFr1QMBNOAdFaR4rDSzPs4Vt o84JPTqQUXLFIOXh1W6HyPbJwsYR1NemzkZy55mkdSZ8XMPN59LsN1BoVDrjhab/QEp5JU BiiHFI+ah2nIywmlT2GHubYOulSVGlmA61hv34vrx9i4lwvxirlZsrAnnveSr/8IfMqAx7 pBpwZ07IXpUdi/wZ9OekIubvMpjbjjYzIcdZ2HWCCkqAgvTsKQgOQ0mIr8ypIyD+RufdgP pEXTJy/rI0j+s9ftM1Xkd8QG4yy2M33pjutfo1kK59M4G1sYs9N6Oot3iEMltw== ARC-Seal: i=1; s=lahtoruutu; d=iki.fi; t=1700130115; a=rsa-sha256; cv=none; b=q6Q9cQbIlqV53Uc5ofOqQWGgLn2hm3LH9iG1ksiW5frYiw+v6z7vGm2ouz9qTGfPH32RV7 LRJ8lXJ9oVzhV9ljQFaitL8getf0hOUdCNUVOD6ALq/Z/i0mmsEArlPojZ0MTmyXIp1QJL BNAMCHWjaskt/9E0bZmm161eW9BBSQfxvGcnEHaIac8eVd82Eoh+UaOeSfX6x+0CBs7ELB r5kQ/zeNdbsfPvvnZZmXcvNPw7yydRDSqT4pLbE3ZiHqzqojYejoNbEjONJu3nSG9CBnl6 zkZheZ/PjSTp/oQ2ujJk10D9MJ1W3QpF+aknKZQxaP+sPfuDTc33gMTVI2wgYA== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi Content-Type: multipart/mixed; boundary="------------4TRIojqEEEKc6YL6fz7BuLnr" Message-ID: Date: Thu, 16 Nov 2023 11:21:49 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: WaitEventSet resource leakage Content-Language: en-US To: Tom Lane Cc: pgsql-hackers@lists.postgresql.org, Alexander Lakhin References: <472235.1678387869@sss.pgh.pa.us> <99040.1700089737@sss.pgh.pa.us> From: Heikki Linnakangas In-Reply-To: <99040.1700089737@sss.pgh.pa.us> 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. --------------4TRIojqEEEKc6YL6fz7BuLnr Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 16/11/2023 01:08, Tom Lane wrote: > Heikki Linnakangas writes: >> On 09/03/2023 20:51, Tom Lane wrote: >>> After further thought that seems like a pretty ad-hoc solution. >>> We probably can do no better in the back branches, but shouldn't >>> we start treating WaitEventSets as ResourceOwner-managed resources? >>> Otherwise, transient WaitEventSets are going to be a permanent >>> source of headaches. > >> Let's change it so that it's always allocated in TopMemoryContext, but >> pass a ResourceOwner instead: >> WaitEventSet * >> CreateWaitEventSet(ResourceOwner owner, int nevents) >> And use owner == NULL to mean session lifetime. > > WFM. (I didn't study your back-branch patch.) And here is a patch to implement that on master. -- Heikki Linnakangas Neon (https://neon.tech) --------------4TRIojqEEEKc6YL6fz7BuLnr Content-Type: text/x-patch; charset=UTF-8; name="v1-0001-Use-ResourceOwner-to-track-WaitEventSets.patch" Content-Disposition: attachment; filename="v1-0001-Use-ResourceOwner-to-track-WaitEventSets.patch" Content-Transfer-Encoding: base64 RnJvbSBjYzg4YWY3NTAxMTIwOGZjN2U5YTJiYmE2YjI3ZTQzN2VkZmFiOTUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFRodSwgMTYgTm92IDIwMjMgMTE6MTY6NTggKzAxMDAK U3ViamVjdDogW1BBVENIIHYxIDEvMV0gVXNlIFJlc291cmNlT3duZXIgdG8gdHJhY2sgV2Fp dEV2ZW50U2V0cy4KCkEgV2FpdEV2ZW50U2V0IGhvbGRzIGZpbGUgZGVzY3JpcHRvcnMgb3Ig ZXZlbnQgaGFuZGxlcyAob24gV2luZG93cykuCklmIEZyZWVXYWl0RXZlbnRTZXQgaXMgbm90 IGNhbGxlZCwgdGhvc2UgZmRzIG9yIGhhbmRsZXMgYXJlIGxlYWtlZC4KVXNlIFJlc291cmNl T3duZXJzIHRvIHRyYWNrIFdhaXRFdmVudFNldHMsIHRvIGNsZWFuIHRob3NlIHVwCmF1dG9t YXRpY2FsbHkgb24gZXJyb3IuCgpUaGlzIHdhcyBhIGxpdmUgYnVnIGluIGFzeW5jIEFwcGVu ZCBub2RlcywgaWYgYSBGRFcncwpGb3JlaWduQXN5bmNSZXF1ZXN0IGZ1bmN0aW9uIGZhaWxl ZC4gKEluIGJhY2sgYnJhbmNoZXMsIEkgd2lsbCBhcHBseSBhCm1vcmUgbG9jYWxpemVkIGZp eCBmb3IgdGhhdCBiYXNlZCBvbiBQR19UUlktUEdfRklOQUxMWS4pIFRoZSBhZGRlZAp0ZXN0 IGRvZXNuJ3QgY2hlY2sgZm9yIGxlYWtpbmcgcmVzb3VyY2VzLCBzbyBpdCBwYXNzZWQgZXZl biBiZWZvcmUKdGhpcyBjb21taXQuIEJ1dCBhdCBsZWFzdCBpdCBjb3ZlcnMgdGhlIGNvZGUg cGF0aC4KCkluIHRoZSBwYXNzaW5nLCBmaXggbWlzbGVhZGluZyBjb21tZW50IG9uIHdoYXQg dGhlICduZXZlbnRzJyBhcmd1bWVudAp0byBXYWl0RXZlbnRTZXRXYWl0IG1lYW5zLgoKUmVw b3J0IGJ5IEFsZXhhbmRlciBMYWtoaW4sIGFuYWx5c2lzIGFuZCBzdWdnZXN0aW9uIGZvciB0 aGUgZml4IGJ5ClRvbSBMYW5lLiBGaXhlcyBidWcgIzE3ODI4LgoKRGlzY3Vzc2lvbjogaHR0 cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC80NzIyMzUuMTY3ODM4Nzg2OUBz c3MucGdoLnBhLnVzCi0tLQogLi4uL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19m ZHcub3V0ICAgIHwgIDcgKysrCiBjb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNf ZmR3LnNxbCAgICAgfCAgNiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5j ICAgICAgICAgICAgIHwgIDUgKy0KIHNyYy9iYWNrZW5kL2xpYnBxL3BxY29tbS5jICAgICAg ICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0 ZXIuYyAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dn ZXIuYyAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2xhdGNo LmMgICAgICAgICAgICAgICB8IDYzICsrKysrKysrKysrKysrKysrLS0KIHNyYy9pbmNsdWRl L3N0b3JhZ2UvbGF0Y2guaCAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvaW5jbHVk ZS91dGlscy9yZXNvd25lci5oICAgICAgICAgICAgICAgICAgfCAgMSArCiA5IGZpbGVzIGNo YW5nZWQsIDgyIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgYi9jb250 cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4IDY0YmNj NjZiOGQuLjIyY2FlMzdhMWUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4 cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhw ZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtMTA4MDksNiArMTA4MDksMTMgQEAgU0VMRUNU ICogRlJPTSByZXN1bHRfdGJsIE9SREVSIEJZIGE7CiAoMiByb3dzKQogCiBERUxFVEUgRlJP TSByZXN1bHRfdGJsOworLS0gVGVzdCBlcnJvciBoYW5kbGluZywgaWYgYWNjZXNzaW5nIG9u ZSBvZiB0aGUgZm9yZWlnbiBwYXJ0aXRpb25zIGVycm9ycyBvdXQKK0NSRUFURSBGT1JFSUdO IFRBQkxFIGFzeW5jX3BfYnJva2VuIFBBUlRJVElPTiBPRiBhc3luY19wdCBGT1IgVkFMVUVT IEZST00gKDEwMDAwKSBUTyAoMTAwMDEpCisgIFNFUlZFUiBsb29wYmFjayBPUFRJT05TICh0 YWJsZV9uYW1lICdub25fZXhpc3RlbnRfdGFibGUnKTsKK1NFTEVDVCAqIEZST00gYXN5bmNf cHQ7CitFUlJPUjogIHJlbGF0aW9uICJwdWJsaWMubm9uX2V4aXN0ZW50X3RhYmxlIiBkb2Vz IG5vdCBleGlzdAorQ09OVEVYVDogIHJlbW90ZSBTUUwgY29tbWFuZDogU0VMRUNUIGEsIGIs IGMgRlJPTSBwdWJsaWMubm9uX2V4aXN0ZW50X3RhYmxlCitEUk9QIEZPUkVJR04gVEFCTEUg YXN5bmNfcF9icm9rZW47CiAtLSBDaGVjayBjYXNlIHdoZXJlIG11bHRpcGxlIHBhcnRpdGlv bnMgdXNlIHRoZSBzYW1lIGNvbm5lY3Rpb24KIENSRUFURSBUQUJMRSBiYXNlX3RibDMgKGEg aW50LCBiIGludCwgYyB0ZXh0KTsKIENSRUFURSBGT1JFSUdOIFRBQkxFIGFzeW5jX3AzIFBB UlRJVElPTiBPRiBhc3luY19wdCBGT1IgVkFMVUVTIEZST00gKDMwMDApIFRPICg0MDAwKQpk aWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwg Yi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAppbmRleCAyZDE0 ZWVhZGI1Li4wNzVkYTRmZjg2IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9z cWwvcG9zdGdyZXNfZmR3LnNxbAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9z dGdyZXNfZmR3LnNxbApAQCAtMzYwNyw2ICszNjA3LDEyIEBAIElOU0VSVCBJTlRPIHJlc3Vs dF90YmwgU0VMRUNUIGEsIGIsICdBQUEnIHx8IGMgRlJPTSBhc3luY19wdCBXSEVSRSBiID09 PSA1MDU7CiBTRUxFQ1QgKiBGUk9NIHJlc3VsdF90YmwgT1JERVIgQlkgYTsKIERFTEVURSBG Uk9NIHJlc3VsdF90Ymw7CiAKKy0tIFRlc3QgZXJyb3IgaGFuZGxpbmcsIGlmIGFjY2Vzc2lu ZyBvbmUgb2YgdGhlIGZvcmVpZ24gcGFydGl0aW9ucyBlcnJvcnMgb3V0CitDUkVBVEUgRk9S RUlHTiBUQUJMRSBhc3luY19wX2Jyb2tlbiBQQVJUSVRJT04gT0YgYXN5bmNfcHQgRk9SIFZB TFVFUyBGUk9NICgxMDAwMCkgVE8gKDEwMDAxKQorICBTRVJWRVIgbG9vcGJhY2sgT1BUSU9O UyAodGFibGVfbmFtZSAnbm9uX2V4aXN0ZW50X3RhYmxlJyk7CitTRUxFQ1QgKiBGUk9NIGFz eW5jX3B0OworRFJPUCBGT1JFSUdOIFRBQkxFIGFzeW5jX3BfYnJva2VuOworCiAtLSBDaGVj ayBjYXNlIHdoZXJlIG11bHRpcGxlIHBhcnRpdGlvbnMgdXNlIHRoZSBzYW1lIGNvbm5lY3Rp b24KIENSRUFURSBUQUJMRSBiYXNlX3RibDMgKGEgaW50LCBiIGludCwgYyB0ZXh0KTsKIENS RUFURSBGT1JFSUdOIFRBQkxFIGFzeW5jX3AzIFBBUlRJVElPTiBPRiBhc3luY19wdCBGT1Ig VkFMVUVTIEZST00gKDMwMDApIFRPICg0MDAwKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVu ZC5jCmluZGV4IDYwOWRmNmI5ZTYuLmFmOGUzNzIwNWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQXBwZW5kLmMKQEAgLTEwMjUsNyArMTAyNSw4IEBAIEV4ZWNBcHBlbmRBc3luY0V2ZW50 V2FpdChBcHBlbmRTdGF0ZSAqbm9kZSkKIAkvKiBXZSBzaG91bGQgbmV2ZXIgYmUgY2FsbGVk IHdoZW4gdGhlcmUgYXJlIG5vIHZhbGlkIGFzeW5jIHN1YnBsYW5zLiAqLwogCUFzc2VydChu b2RlLT5hc19uYXN5bmNyZW1haW4gPiAwKTsKIAotCW5vZGUtPmFzX2V2ZW50c2V0ID0gQ3Jl YXRlV2FpdEV2ZW50U2V0KEN1cnJlbnRNZW1vcnlDb250ZXh0LCBuZXZlbnRzKTsKKwlBc3Nl cnQobm9kZS0+YXNfZXZlbnRzZXQgPT0gTlVMTCk7CisJbm9kZS0+YXNfZXZlbnRzZXQgPSBD cmVhdGVXYWl0RXZlbnRTZXQoQ3VycmVudFJlc291cmNlT3duZXIsIG5ldmVudHMpOwogCUFk ZFdhaXRFdmVudFRvU2V0KG5vZGUtPmFzX2V2ZW50c2V0LCBXTF9FWElUX09OX1BNX0RFQVRI LCBQR0lOVkFMSURfU09DS0VULAogCQkJCQkgIE5VTEwsIE5VTEwpOwogCkBAIC0xMDUwLDcg KzEwNTEsNyBAQCBFeGVjQXBwZW5kQXN5bmNFdmVudFdhaXQoQXBwZW5kU3RhdGUgKm5vZGUp CiAJCXJldHVybjsKIAl9CiAKLQkvKiBXZSB3YWl0IG9uIGF0IG1vc3QgRVZFTlRfQlVGRkVS X1NJWkUgZXZlbnRzLiAqLworCS8qIFJldHVybiBhdCBtb3N0IEVWRU5UX0JVRkZFUl9TSVpF IGV2ZW50cyBpbiBvbmUgY2FsbC4gKi8KIAlpZiAobmV2ZW50cyA+IEVWRU5UX0JVRkZFUl9T SVpFKQogCQluZXZlbnRzID0gRVZFTlRfQlVGRkVSX1NJWkU7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2xpYnBxL3BxY29tbS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFjb21tLmMK aW5kZXggNTIyNTg0ZTU5Ny4uMjgwMmVmYzYzZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv bGlicHEvcHFjb21tLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFjb21tLmMKQEAgLTIw Nyw3ICsyMDcsNyBAQCBwcV9pbml0KHZvaWQpCiAJCWVsb2coRkFUQUwsICJmY250bChGX1NF VEZEKSBmYWlsZWQgb24gc29ja2V0OiAlbSIpOwogI2VuZGlmCiAKLQlGZUJlV2FpdFNldCA9 IENyZWF0ZVdhaXRFdmVudFNldChUb3BNZW1vcnlDb250ZXh0LCBGZUJlV2FpdFNldE5FdmVu dHMpOworCUZlQmVXYWl0U2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KE5VTEwsIEZlQmVXYWl0 U2V0TkV2ZW50cyk7CiAJc29ja2V0X3BvcyA9IEFkZFdhaXRFdmVudFRvU2V0KEZlQmVXYWl0 U2V0LCBXTF9TT0NLRVRfV1JJVEVBQkxFLAogCQkJCQkJCQkgICBNeVByb2NQb3J0LT5zb2Nr LCBOVUxMLCBOVUxMKTsKIAlsYXRjaF9wb3MgPSBBZGRXYWl0RXZlbnRUb1NldChGZUJlV2Fp dFNldCwgV0xfTEFUQ0hfU0VULCBQR0lOVkFMSURfU09DS0VULApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL3Bvc3RtYXN0ZXIuYwppbmRleCA3YjZiNjEzYzRhLi43YTVjZDA2YzVjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpAQCAtMTY5NSw3ICsxNjk1LDcgQEAgQ29u ZmlndXJlUG9zdG1hc3RlcldhaXRTZXQoYm9vbCBhY2NlcHRfY29ubmVjdGlvbnMpCiAJCUZy ZWVXYWl0RXZlbnRTZXQocG1fd2FpdF9zZXQpOwogCXBtX3dhaXRfc2V0ID0gTlVMTDsKIAot CXBtX3dhaXRfc2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KEN1cnJlbnRNZW1vcnlDb250ZXh0 LAorCXBtX3dhaXRfc2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KE5VTEwsCiAJCQkJCQkJCQkg YWNjZXB0X2Nvbm5lY3Rpb25zID8gKDEgKyBOdW1MaXN0ZW5Tb2NrZXRzKSA6IDEpOwogCUFk ZFdhaXRFdmVudFRvU2V0KHBtX3dhaXRfc2V0LCBXTF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9T T0NLRVQsIE15TGF0Y2gsCiAJCQkJCSAgTlVMTCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNs b2dnZXIuYwppbmRleCA4NThhMmY2YjJiLi45NmRkMDNkOWUwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvc3lzbG9nZ2VyLmMKQEAgLTMxMSw3ICszMTEsNyBAQCBTeXNMb2dnZXJNYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCiAJICogc3lzbG9nIHBpcGUsIHdoaWNoIGltcGxpZXMg dGhhdCBhbGwgb3RoZXIgYmFja2VuZHMgaGF2ZSBleGl0ZWQKIAkgKiAoaW5jbHVkaW5nIHRo ZSBwb3N0bWFzdGVyKS4KIAkgKi8KLQl3ZXMgPSBDcmVhdGVXYWl0RXZlbnRTZXQoQ3VycmVu dE1lbW9yeUNvbnRleHQsIDIpOworCXdlcyA9IENyZWF0ZVdhaXRFdmVudFNldChOVUxMLCAy KTsKIAlBZGRXYWl0RXZlbnRUb1NldCh3ZXMsIFdMX0xBVENIX1NFVCwgUEdJTlZBTElEX1NP Q0tFVCwgTXlMYXRjaCwgTlVMTCk7CiAjaWZuZGVmIFdJTjMyCiAJQWRkV2FpdEV2ZW50VG9T ZXQod2VzLCBXTF9TT0NLRVRfUkVBREFCTEUsIHN5c2xvZ1BpcGVbMF0sIE5VTEwsIE5VTEwp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmMKaW5kZXggMmZkMzg2YTRlZC4uYjVjNmIxZTli MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYworKysgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9sYXRjaC5jCkBAIC02Miw2ICs2Miw3IEBACiAjaW5j bHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIK ICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3Jlc293bmVy LmgiCiAKIC8qCiAgKiBTZWxlY3QgdGhlIGZkIHJlYWRpbmVzcyBwcmltaXRpdmUgdG8gdXNl LiBOb3JtYWxseSB0aGUgIm1vc3QgbW9kZXJuIgpAQCAtMTAxLDYgKzEwMiw4IEBACiAvKiB0 eXBlZGVmIGluIGxhdGNoLmggKi8KIHN0cnVjdCBXYWl0RXZlbnRTZXQKIHsKKwlSZXNvdXJj ZU93bmVyIG93bmVyOworCiAJaW50CQkJbmV2ZW50czsJCS8qIG51bWJlciBvZiByZWdpc3Rl cmVkIGV2ZW50cyAqLwogCWludAkJCW5ldmVudHNfc3BhY2U7CS8qIG1heGltdW0gbnVtYmVy IG9mIGV2ZW50cyBpbiB0aGlzIHNldCAqLwogCkBAIC0xOTUsNiArMTk4LDMwIEBAIHN0YXRp YyB2b2lkIFdhaXRFdmVudEFkanVzdFdpbjMyKFdhaXRFdmVudFNldCAqc2V0LCBXYWl0RXZl bnQgKmV2ZW50KTsKIHN0YXRpYyBpbmxpbmUgaW50IFdhaXRFdmVudFNldFdhaXRCbG9jayhX YWl0RXZlbnRTZXQgKnNldCwgaW50IGN1cl90aW1lb3V0LAogCQkJCQkJCQkJCVdhaXRFdmVu dCAqb2NjdXJyZWRfZXZlbnRzLCBpbnQgbmV2ZW50cyk7CiAKKy8qIFJlc291cmNlT3duZXIg c3VwcG9ydCB0byBob2xkIFdhaXRFdmVudFNldHMgKi8KK3N0YXRpYyB2b2lkIFJlc093bmVy UmVsZWFzZVdhaXRFdmVudFNldChEYXR1bSByZXMpOworCitzdGF0aWMgY29uc3QgUmVzb3Vy Y2VPd25lckRlc2Mgd2FpdF9ldmVudF9zZXRfcmVzb3duZXJfZGVzYyA9Cit7CisJLm5hbWUg PSAiV2FpdEV2ZW50U2V0IiwKKwkucmVsZWFzZV9waGFzZSA9IFJFU09VUkNFX1JFTEVBU0Vf QUZURVJfTE9DS1MsCisJLnJlbGVhc2VfcHJpb3JpdHkgPSBSRUxFQVNFX1BSSU9fV0FJVEVW RU5UU0VUUywKKwkuUmVsZWFzZVJlc291cmNlID0gUmVzT3duZXJSZWxlYXNlV2FpdEV2ZW50 U2V0LAorCS5EZWJ1Z1ByaW50ID0gTlVMTAorfTsKKworc3RhdGljIGlubGluZSB2b2lkCitS ZXNvdXJjZU93bmVyUmVtZW1iZXJXYWl0RXZlbnRTZXQoUmVzb3VyY2VPd25lciBvd25lciwg V2FpdEV2ZW50U2V0ICpzZXQpCit7CisJUmVzb3VyY2VPd25lclJlbWVtYmVyKG93bmVyLCBQ b2ludGVyR2V0RGF0dW0oc2V0KSwgJndhaXRfZXZlbnRfc2V0X3Jlc293bmVyX2Rlc2MpOwor fQorc3RhdGljIGlubGluZSB2b2lkCitSZXNvdXJjZU93bmVyRm9yZ2V0V2FpdEV2ZW50U2V0 KFJlc291cmNlT3duZXIgb3duZXIsIFdhaXRFdmVudFNldCAqc2V0KQoreworCVJlc291cmNl T3duZXJGb3JnZXQob3duZXIsIFBvaW50ZXJHZXREYXR1bShzZXQpLCAmd2FpdF9ldmVudF9z ZXRfcmVzb3duZXJfZGVzYyk7Cit9CisKKwogLyoKICAqIEluaXRpYWxpemUgdGhlIHByb2Nl c3MtbG9jYWwgbGF0Y2ggaW5mcmFzdHJ1Y3R1cmUuCiAgKgpAQCAtMzIzLDcgKzM1MCw3IEBA IEluaXRpYWxpemVMYXRjaFdhaXRTZXQodm9pZCkKIAlBc3NlcnQoTGF0Y2hXYWl0U2V0ID09 IE5VTEwpOwogCiAJLyogU2V0IHVwIHRoZSBXYWl0RXZlbnRTZXQgdXNlZCBieSBXYWl0TGF0 Y2goKS4gKi8KLQlMYXRjaFdhaXRTZXQgPSBDcmVhdGVXYWl0RXZlbnRTZXQoVG9wTWVtb3J5 Q29udGV4dCwgMik7CisJTGF0Y2hXYWl0U2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KE5VTEws IDIpOwogCWxhdGNoX3BvcyA9IEFkZFdhaXRFdmVudFRvU2V0KExhdGNoV2FpdFNldCwgV0xf TEFUQ0hfU0VULCBQR0lOVkFMSURfU09DS0VULAogCQkJCQkJCQkgIE15TGF0Y2gsIE5VTEwp OwogCWlmIChJc1VuZGVyUG9zdG1hc3RlcikKQEAgLTU0MSw3ICs1NjgsNyBAQCBXYWl0TGF0 Y2hPclNvY2tldChMYXRjaCAqbGF0Y2gsIGludCB3YWtlRXZlbnRzLCBwZ3NvY2tldCBzb2Nr LAogCWludAkJCXJldCA9IDA7CiAJaW50CQkJcmM7CiAJV2FpdEV2ZW50CWV2ZW50OwotCVdh aXRFdmVudFNldCAqc2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KEN1cnJlbnRNZW1vcnlDb250 ZXh0LCAzKTsKKwlXYWl0RXZlbnRTZXQgKnNldCA9IENyZWF0ZVdhaXRFdmVudFNldChDdXJy ZW50UmVzb3VyY2VPd25lciwgMyk7CiAKIAlpZiAod2FrZUV2ZW50cyAmIFdMX1RJTUVPVVQp CiAJCUFzc2VydCh0aW1lb3V0ID49IDApOwpAQCAtNzE2LDkgKzc0MywxMiBAQCBSZXNldExh dGNoKExhdGNoICpsYXRjaCkKICAqCiAgKiBUaGVzZSBldmVudHMgY2FuIHRoZW4gYmUgZWZm aWNpZW50bHkgd2FpdGVkIHVwb24gdG9nZXRoZXIsIHVzaW5nCiAgKiBXYWl0RXZlbnRTZXRX YWl0KCkuCisgKgorICogVGhlIFdhaXRFdmVudFNldCBpcyB0cmFja2VkIGJ5IHRoZSBnaXZl biAncmVzb3duZXInLiAgVXNlIE5VTEwgZm9yIHNlc3Npb24KKyAqIGxpZmV0aW1lLgogICov CiBXYWl0RXZlbnRTZXQgKgotQ3JlYXRlV2FpdEV2ZW50U2V0KE1lbW9yeUNvbnRleHQgY29u dGV4dCwgaW50IG5ldmVudHMpCitDcmVhdGVXYWl0RXZlbnRTZXQoUmVzb3VyY2VPd25lciBy ZXNvd25lciwgaW50IG5ldmVudHMpCiB7CiAJV2FpdEV2ZW50U2V0ICpzZXQ7CiAJY2hhcgkg ICAqZGF0YTsKQEAgLTc0NCw3ICs3NzQsMTAgQEAgQ3JlYXRlV2FpdEV2ZW50U2V0KE1lbW9y eUNvbnRleHQgY29udGV4dCwgaW50IG5ldmVudHMpCiAJc3ogKz0gTUFYQUxJR04oc2l6ZW9m KEhBTkRMRSkgKiAobmV2ZW50cyArIDEpKTsKICNlbmRpZgogCi0JZGF0YSA9IChjaGFyICop IE1lbW9yeUNvbnRleHRBbGxvY1plcm8oY29udGV4dCwgc3opOworCWlmIChyZXNvd25lciAh PSBOVUxMKQorCQlSZXNvdXJjZU93bmVyRW5sYXJnZShyZXNvd25lcik7CisKKwlkYXRhID0g KGNoYXIgKikgTWVtb3J5Q29udGV4dEFsbG9jWmVybyhUb3BNZW1vcnlDb250ZXh0LCBzeik7 CiAKIAlzZXQgPSAoV2FpdEV2ZW50U2V0ICopIGRhdGE7CiAJZGF0YSArPSBNQVhBTElHTihz aXplb2YoV2FpdEV2ZW50U2V0KSk7CkBAIC03NzAsNiArODAzLDEyIEBAIENyZWF0ZVdhaXRF dmVudFNldChNZW1vcnlDb250ZXh0IGNvbnRleHQsIGludCBuZXZlbnRzKQogCXNldC0+bmV2 ZW50c19zcGFjZSA9IG5ldmVudHM7CiAJc2V0LT5leGl0X29uX3Bvc3RtYXN0ZXJfZGVhdGgg PSBmYWxzZTsKIAorCWlmIChyZXNvd25lciAhPSBOVUxMKQorCXsKKwkJUmVzb3VyY2VPd25l clJlbWVtYmVyV2FpdEV2ZW50U2V0KHJlc293bmVyLCBzZXQpOworCQlzZXQtPm93bmVyID0g cmVzb3duZXI7CisJfQorCiAjaWYgZGVmaW5lZChXQUlUX1VTRV9FUE9MTCkKIAlpZiAoIUFj cXVpcmVFeHRlcm5hbEZEKCkpCiAJewpAQCAtODM0LDYgKzg3MywxMiBAQCBDcmVhdGVXYWl0 RXZlbnRTZXQoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBpbnQgbmV2ZW50cykKIHZvaWQKIEZy ZWVXYWl0RXZlbnRTZXQoV2FpdEV2ZW50U2V0ICpzZXQpCiB7CisJaWYgKHNldC0+b3duZXIp CisJeworCQlSZXNvdXJjZU93bmVyRm9yZ2V0V2FpdEV2ZW50U2V0KHNldC0+b3duZXIsIHNl dCk7CisJCXNldC0+b3duZXIgPSBOVUxMOworCX0KKwogI2lmIGRlZmluZWQoV0FJVF9VU0Vf RVBPTEwpCiAJY2xvc2Uoc2V0LT5lcG9sbF9mZCk7CiAJUmVsZWFzZUV4dGVybmFsRkQoKTsK QEAgLTIzMDAsMyArMjM0NSwxMyBAQCBkcmFpbih2b2lkKQogfQogCiAjZW5kaWYKKworc3Rh dGljIHZvaWQKK1Jlc093bmVyUmVsZWFzZVdhaXRFdmVudFNldChEYXR1bSByZXMpCit7CisJ V2FpdEV2ZW50U2V0ICpzZXQgPSAoV2FpdEV2ZW50U2V0ICopIERhdHVtR2V0UG9pbnRlcihy ZXMpOworCisJQXNzZXJ0KHNldC0+b3duZXIgIT0gTlVMTCk7CisJc2V0LT5vd25lciA9IE5V TEw7CisJRnJlZVdhaXRFdmVudFNldChzZXQpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvc3RvcmFnZS9sYXRjaC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sYXRjaC5oCmluZGV4 IDk5Y2M0Nzg3NGEuLjllZmMzM2FkZDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvbGF0Y2guaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNoLmgKQEAgLTEwMiw2 ICsxMDIsOCBAQAogCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAKKyNpbmNsdWRlICJ1dGlscy9y ZXNvd25lci5oIgorCiAvKgogICogTGF0Y2ggc3RydWN0dXJlIHNob3VsZCBiZSB0cmVhdGVk IGFzIG9wYXF1ZSBhbmQgb25seSBhY2Nlc3NlZCB0aHJvdWdoCiAgKiB0aGUgcHVibGljIGZ1 bmN0aW9ucy4gSXQgaXMgZGVmaW5lZCBoZXJlIHRvIGFsbG93IGVtYmVkZGluZyBMYXRjaGVz IGFzCkBAIC0xNzMsNyArMTc1LDcgQEAgZXh0ZXJuIHZvaWQgU2V0TGF0Y2goTGF0Y2ggKmxh dGNoKTsKIGV4dGVybiB2b2lkIFJlc2V0TGF0Y2goTGF0Y2ggKmxhdGNoKTsKIGV4dGVybiB2 b2lkIFNodXRkb3duTGF0Y2hTdXBwb3J0KHZvaWQpOwogCi1leHRlcm4gV2FpdEV2ZW50U2V0 ICpDcmVhdGVXYWl0RXZlbnRTZXQoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBpbnQgbmV2ZW50 cyk7CitleHRlcm4gV2FpdEV2ZW50U2V0ICpDcmVhdGVXYWl0RXZlbnRTZXQoUmVzb3VyY2VP d25lciByZXNvd25lciwgaW50IG5ldmVudHMpOwogZXh0ZXJuIHZvaWQgRnJlZVdhaXRFdmVu dFNldChXYWl0RXZlbnRTZXQgKnNldCk7CiBleHRlcm4gdm9pZCBGcmVlV2FpdEV2ZW50U2V0 QWZ0ZXJGb3JrKFdhaXRFdmVudFNldCAqc2V0KTsKIGV4dGVybiBpbnQJQWRkV2FpdEV2ZW50 VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQsIHVpbnQzMiBldmVudHMsIHBnc29ja2V0IGZkLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVzb3duZXIuaCBiL3NyYy9pbmNsdWRl L3V0aWxzL3Jlc293bmVyLmgKaW5kZXggMDczNTQ4MDIxNC4uZGRiZjE5ZDhkYSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVzb3duZXIuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9yZXNvd25lci5oCkBAIC03NCw2ICs3NCw3IEBAIHR5cGVkZWYgdWludDMyIFJlc291 cmNlUmVsZWFzZVByaW9yaXR5OwogI2RlZmluZSBSRUxFQVNFX1BSSU9fVFVQREVTQ19SRUZT CQkJNDAwCiAjZGVmaW5lIFJFTEVBU0VfUFJJT19TTkFQU0hPVF9SRUZTCQkJNTAwCiAjZGVm aW5lIFJFTEVBU0VfUFJJT19GSUxFUwkJCQkJNjAwCisjZGVmaW5lIFJFTEVBU0VfUFJJT19X QUlURVZFTlRTRVRTCQkJNzAwCiAKIC8qIDAgaXMgY29uc2lkZXJlZCBpbnZhbGlkICovCiAj ZGVmaW5lIFJFTEVBU0VfUFJJT19GSVJTVAkJCQkJMQotLSAKMi4zOS4yCgo= --------------4TRIojqEEEKc6YL6fz7BuLnr--