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 1ubJcp-00Gdn3-F8 for pgsql-hackers@arkaria.postgresql.org; Mon, 14 Jul 2025 13:53:47 +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 1ubJcm-008Cj4-4M for pgsql-hackers@arkaria.postgresql.org; Mon, 14 Jul 2025 13:53:44 +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 1ubJcl-008Civ-J1 for pgsql-hackers@lists.postgresql.org; Mon, 14 Jul 2025 13:53:44 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with smtp (Exim 4.96) (envelope-from ) id 1ubJcj-007FAQ-2V for pgsql-hackers@lists.postgresql.org; Mon, 14 Jul 2025 13:53:43 +0000 Received: from [192.168.11.3] (p1696134-ipoe.ipoe.ocn.ne.jp [118.0.93.133]) by oss.nttdata.com (Postfix) with ESMTPSA id 652EE607D0; Mon, 14 Jul 2025 22:53:39 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at oss.nttdata.com Content-Type: multipart/mixed; boundary="------------5tjMlPAm6OdeNf9NEAYJcfxv" Message-ID: <27da56de-17c4-4af2-8032-3c58ae0c7b00@oss.nttdata.com> Date: Mon, 14 Jul 2025 22:53:38 +0900 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: pgsql: Add function to log the memory contexts of specified backend pro Content-Language: en-US From: Fujii Masao To: Robert Haas Cc: torikoshia , PostgreSQL Hackers References: <1983bca8-e1c4-45cd-9fd4-de38cd7b5896@oss.nttdata.com> <1e837d9f-d32d-4096-b408-fdea3db181cb@oss.nttdata.com> In-Reply-To: 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. --------------5tjMlPAm6OdeNf9NEAYJcfxv Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable On 2025/05/07 18:06, Fujii Masao wrote: >=20 >=20 > On 2025/05/05 23:57, Robert Haas wrote: >> On Fri, May 2, 2025 at 9:54=E2=80=AFPM Fujii Masao wrote: >>> Thanks for the review and testing! I've fixed the issue you pointed o= ut. >>> Updated patch attached. >> >> Thanks for addressing this. However, I believe this commit may need to >> take note of the following comment from elog.h: >=20 > Thanks for the review! >=20 >=20 >> =C2=A0 * Note: if a local variable of the function containing PG_TRY i= s modified >> =C2=A0 * in the PG_TRY section and used in the PG_CATCH section, that = variable >> =C2=A0 * must be declared "volatile" for POSIX compliance.=C2=A0 This = is not mere >> =C2=A0 * pedantry; we have seen bugs from compilers improperly optimiz= ing code >> =C2=A0 * away when such a variable was not marked.=C2=A0 Beware that g= cc's -Wclobbered >> =C2=A0 * warnings are just about entirely useless for catching such ov= ersights. >> >> Based on this comment, I believe in_progress must be declared volatile= . >=20 > You're right. OTOH, setting the flag inside the PG_TRY() block isn't ne= cessary, > so I've moved it outside instead of leaving it inside and marking the f= lag volatile. >=20 >=20 >> As a stylistic comment, I think I would prefer making in_progress a >> file-level global and giving it a less generic name (e.g. >> LogMemoryContextInProgress). However, perhaps others will disagree. >=20 > I'm fine with this. I've renamed the flag and made it a file-level glob= al > variable as suggested. Updated patch is attached. I've attached the rebased versions of the patches. The patch for v14=E2=80=93v16 is labeled with a .txt extension to prevent= cfbot from treating it as a patch for master, which would cause it to fail when applying. Regards, --=20 Fujii Masao NTT DATA Japan Corporation --------------5tjMlPAm6OdeNf9NEAYJcfxv Content-Type: text/plain; charset=UTF-8; name="v4-0001-PG14-PG16-Add-guard-to-prevent-recursive-memory-context-log.txt" Content-Disposition: attachment; filename*0="v4-0001-PG14-PG16-Add-guard-to-prevent-recursive-memory-cont"; filename*1="ext-log.txt" Content-Transfer-Encoding: base64 RnJvbSAzYzZlNmQwYmFiMjkxNDdmYjFkYzQ2OTE2MWI2MTliOTc3Y2Y1ZmM4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGdWppaSBNYXNhbyA8ZnVqaWlAcG9zdGdyZXNxbC5v cmc+CkRhdGU6IE1vbiwgMTQgSnVsIDIwMjUgMjI6NDI6NDQgKzA5MDAKU3ViamVjdDogW1BB VENIIHY0XSBBZGQgZ3VhcmQgdG8gcHJldmVudCByZWN1cnNpdmUgbWVtb3J5IGNvbnRleHQg bG9nZ2luZy4KTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBj aGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClByZXZpb3Vz bHksIGlmIG1lbW9yeSBjb250ZXh0IGxvZ2dpbmcgd2FzIHRyaWdnZXJlZCByZXBlYXRlZGx5 IGFuZApyYXBpZGx5IHdoaWxlIGEgcHJldmlvdXMgcmVxdWVzdCB3YXMgc3RpbGwgYmVpbmcg cHJvY2Vzc2VkLCBpdCBjb3VsZApyZXN1bHQgaW4gcmVjdXJzaXZlIGNhbGxzIHRvIFByb2Nl c3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCkuClRoaXMgY291bGQgbGVhZCB0byBpbmZp bml0ZSByZWN1cnNpb24gYW5kIHBvdGVudGlhbGx5IGNyYXNoIHRoZSBwcm9jZXNzLgoKVGhp cyBjb21taXQgYWRkcyBhIGd1YXJkIHRvIHByZXZlbnQgc3VjaCByZWN1cnNpb24uCklmIFBy b2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCkgaXMgYWxyZWFkeSBpbiBwcm9ncmVz cyBhbmQKbG9nZ2luZyBtZW1vcnkgY29udGV4dHMsIHN1YnNlcXVlbnQgY2FsbHMgd2lsbCBl eGl0IGltbWVkaWF0ZWx5LAphdm9pZGluZyB1bmludGVuZGVkIHJlY3Vyc2l2ZSBjYWxscy4K CldoaWxlIHRoaXMgc2NlbmFyaW8gaXMgdW5saWtlbHkgaW4gcHJhY3RpY2UsIGl04oCZcyBu b3QgaW1wb3NzaWJsZS4KVGhpcyBjaGFuZ2UgYWRkcyBhIHNhZmV0eSBjaGVjayB0byBwcmV2 ZW50IHN1Y2ggZmFpbHVyZXMuCgpCYWNrLXBhdGNoIHRvIHYxNCwgd2hlcmUgbWVtb3J5IGNv bnRleHQgbG9nZ2luZyB3YXMgaW50cm9kdWNlZC4KClJlcG9ydGVkLWJ5OiBSb2JlcnQgSGFh cyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpBdXRob3I6IEZ1amlpIE1hc2FvIDxtYXNhby5m dWppaUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtv c2hpYUBvc3MubnR0ZGF0YS5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0 bWhhYXNAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBK1Rn bW9aTXJ2MzJ0Yk5SckZUdkY5aVdMblRHcWJoWVNMVmNySEd1d1p2Q3RwaDBOQUBtYWlsLmdt YWlsLmNvbQpCYWNrcGF0Y2gtdGhyb3VnaDogMTQKLS0tCiBzcmMvYmFja2VuZC91dGlscy9t bWdyL21jeHQuYyB8IDU3ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAx IGZpbGUgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMgYi9zcmMvYmFja2VuZC91 dGlscy9tbWdyL21jeHQuYwppbmRleCBhNWYzMWUyM2EwMi4uZmZkYWI3YjA4N2QgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL21tZ3IvbWN4dC5jCkBAIC01Niw2ICs1Niw5IEBAIE1lbW9yeUNvbnRleHQgQ3Vy VHJhbnNhY3Rpb25Db250ZXh0ID0gTlVMTDsKIC8qIFRoaXMgaXMgYSB0cmFuc2llbnQgbGlu ayB0byB0aGUgYWN0aXZlIHBvcnRhbCdzIG1lbW9yeSBjb250ZXh0OiAqLwogTWVtb3J5Q29u dGV4dCBQb3J0YWxDb250ZXh0ID0gTlVMTDsKIAorLyogSXMgbWVtb3J5IGNvbnRleHQgbG9n Z2luZyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3M/ICovCitzdGF0aWMgYm9vbCBMb2dNZW1vcnlD b250ZXh0SW5Qcm9ncmVzcyA9IGZhbHNlOworCiBzdGF0aWMgdm9pZCBNZW1vcnlDb250ZXh0 Q2FsbFJlc2V0Q2FsbGJhY2tzKE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBzdGF0aWMgdm9p ZCBNZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5hbChNZW1vcnlDb250ZXh0IGNvbnRleHQsIGlu dCBsZXZlbCwKIAkJCQkJCQkJCSAgIGJvb2wgcHJpbnQsIGludCBtYXhfY2hpbGRyZW4sCkBA IC0xMDQzLDI1ICsxMDQ2LDQ1IEBAIFByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0 KHZvaWQpCiAJTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcgPSBmYWxzZTsKIAogCS8qCi0JICog VXNlIExPR19TRVJWRVJfT05MWSB0byBwcmV2ZW50IHRoaXMgbWVzc2FnZSBmcm9tIGJlaW5n IHNlbnQgdG8gdGhlCi0JICogY29ubmVjdGVkIGNsaWVudC4KKwkgKiBFeGl0IGltbWVkaWF0 ZWx5IGlmIG1lbW9yeSBjb250ZXh0IGxvZ2dpbmcgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcy4g VGhpcworCSAqIHByZXZlbnRzIHJlY3Vyc2l2ZSBjYWxscywgd2hpY2ggY291bGQgb2NjdXIg aWYgbG9nZ2luZyBpcyByZXF1ZXN0ZWQKKwkgKiByZXBlYXRlZGx5IGFuZCByYXBpZGx5LCBw b3RlbnRpYWxseSBsZWFkaW5nIHRvIGluZmluaXRlIHJlY3Vyc2lvbiBhbmQgYQorCSAqIGNy YXNoLgogCSAqLwotCWVyZXBvcnQoTE9HX1NFUlZFUl9PTkxZLAotCQkJKGVycmhpZGVzdG10 KHRydWUpLAotCQkJIGVycmhpZGVjb250ZXh0KHRydWUpLAotCQkJIGVycm1zZygibG9nZ2lu ZyBtZW1vcnkgY29udGV4dHMgb2YgUElEICVkIiwgTXlQcm9jUGlkKSkpOworCWlmIChMb2dN ZW1vcnlDb250ZXh0SW5Qcm9ncmVzcykKKwkJcmV0dXJuOworCUxvZ01lbW9yeUNvbnRleHRJ blByb2dyZXNzID0gdHJ1ZTsKIAotCS8qCi0JICogV2hlbiBhIGJhY2tlbmQgcHJvY2VzcyBp cyBjb25zdW1pbmcgaHVnZSBtZW1vcnksIGxvZ2dpbmcgYWxsIGl0cyBtZW1vcnkKLQkgKiBj b250ZXh0cyBtaWdodCBvdmVycnVuIGF2YWlsYWJsZSBkaXNrIHNwYWNlLiBUbyBwcmV2ZW50 IHRoaXMsIHdlIGxpbWl0Ci0JICogdGhlIG51bWJlciBvZiBjaGlsZCBjb250ZXh0cyB0byBs b2cgcGVyIHBhcmVudCB0byAxMDAuCi0JICoKLQkgKiBBcyB3aXRoIE1lbW9yeUNvbnRleHRT dGF0cygpLCB3ZSBzdXBwb3NlIHRoYXQgcHJhY3RpY2FsIGNhc2VzIHdoZXJlIHRoZQotCSAq IGR1bXAgZ2V0cyBsb25nIHdpbGwgdHlwaWNhbGx5IGJlIGh1Z2UgbnVtYmVycyBvZiBzaWJs aW5ncyB1bmRlciB0aGUKLQkgKiBzYW1lIHBhcmVudCBjb250ZXh0OyB3aGlsZSB0aGUgYWRk aXRpb25hbCBkZWJ1Z2dpbmcgdmFsdWUgZnJvbSBzZWVpbmcKLQkgKiBkZXRhaWxzIGFib3V0 IGluZGl2aWR1YWwgc2libGluZ3MgYmV5b25kIDEwMCB3aWxsIG5vdCBiZSBsYXJnZS4KLQkg Ki8KLQlNZW1vcnlDb250ZXh0U3RhdHNEZXRhaWwoVG9wTWVtb3J5Q29udGV4dCwgMTAwLCBm YWxzZSk7CisJUEdfVFJZKCk7CisJeworCQkvKgorCQkgKiBVc2UgTE9HX1NFUlZFUl9PTkxZ IHRvIHByZXZlbnQgdGhpcyBtZXNzYWdlIGZyb20gYmVpbmcgc2VudCB0byB0aGUKKwkJICog Y29ubmVjdGVkIGNsaWVudC4KKwkJICovCisJCWVyZXBvcnQoTE9HX1NFUlZFUl9PTkxZLAor CQkJCShlcnJoaWRlc3RtdCh0cnVlKSwKKwkJCQkgZXJyaGlkZWNvbnRleHQodHJ1ZSksCisJ CQkJIGVycm1zZygibG9nZ2luZyBtZW1vcnkgY29udGV4dHMgb2YgUElEICVkIiwgTXlQcm9j UGlkKSkpOworCisJCS8qCisJCSAqIFdoZW4gYSBiYWNrZW5kIHByb2Nlc3MgaXMgY29uc3Vt aW5nIGh1Z2UgbWVtb3J5LCBsb2dnaW5nIGFsbCBpdHMKKwkJICogbWVtb3J5IGNvbnRleHRz IG1pZ2h0IG92ZXJydW4gYXZhaWxhYmxlIGRpc2sgc3BhY2UuIFRvIHByZXZlbnQKKwkJICog dGhpcywgd2UgbGltaXQgdGhlIG51bWJlciBvZiBjaGlsZCBjb250ZXh0cyB0byBsb2cgcGVy IHBhcmVudCB0bworCQkgKiAxMDAuCisJCSAqCisJCSAqIEFzIHdpdGggTWVtb3J5Q29udGV4 dFN0YXRzKCksIHdlIHN1cHBvc2UgdGhhdCBwcmFjdGljYWwgY2FzZXMgd2hlcmUKKwkJICog dGhlIGR1bXAgZ2V0cyBsb25nIHdpbGwgdHlwaWNhbGx5IGJlIGh1Z2UgbnVtYmVycyBvZiBz aWJsaW5ncyB1bmRlcgorCQkgKiB0aGUgc2FtZSBwYXJlbnQgY29udGV4dDsgd2hpbGUgdGhl IGFkZGl0aW9uYWwgZGVidWdnaW5nIHZhbHVlIGZyb20KKwkJICogc2VlaW5nIGRldGFpbHMg YWJvdXQgaW5kaXZpZHVhbCBzaWJsaW5ncyBiZXlvbmQgMTAwIHdpbGwgbm90IGJlCisJCSAq IGxhcmdlLgorCQkgKi8KKwkJTWVtb3J5Q29udGV4dFN0YXRzRGV0YWlsKFRvcE1lbW9yeUNv bnRleHQsIDEwMCwgZmFsc2UpOworCX0KKwlQR19GSU5BTExZKCk7CisJeworCQlMb2dNZW1v cnlDb250ZXh0SW5Qcm9ncmVzcyA9IGZhbHNlOworCX0KKwlQR19FTkRfVFJZKCk7CiB9CiAK IHZvaWQgKgotLSAKMi40OS4wCgo= --------------5tjMlPAm6OdeNf9NEAYJcfxv Content-Type: text/plain; charset=UTF-8; name="v4-0001-PG17-master-Add-guard-to-prevent-recursive-memory-context-log.patch" Content-Disposition: attachment; filename*0="v4-0001-PG17-master-Add-guard-to-prevent-recursive-memory-co"; filename*1="ntext-log.patch" Content-Transfer-Encoding: base64 RnJvbSAyYjllMjg2YzVkOThiZjI0YTNlZmMwNmFlYjc2NDU5OTBjMmVhN2MwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGdWppaSBNYXNhbyA8ZnVqaWlAcG9zdGdyZXNxbC5v cmc+CkRhdGU6IE1vbiwgMTQgSnVsIDIwMjUgMjI6Mzg6NDUgKzA5MDAKU3ViamVjdDogW1BB VENIIHY0XSBBZGQgZ3VhcmQgdG8gcHJldmVudCByZWN1cnNpdmUgbWVtb3J5IGNvbnRleHQg bG9nZ2luZy4KTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBj aGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClByZXZpb3Vz bHksIGlmIG1lbW9yeSBjb250ZXh0IGxvZ2dpbmcgd2FzIHRyaWdnZXJlZCByZXBlYXRlZGx5 IGFuZApyYXBpZGx5IHdoaWxlIGEgcHJldmlvdXMgcmVxdWVzdCB3YXMgc3RpbGwgYmVpbmcg cHJvY2Vzc2VkLCBpdCBjb3VsZApyZXN1bHQgaW4gcmVjdXJzaXZlIGNhbGxzIHRvIFByb2Nl c3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCkuClRoaXMgY291bGQgbGVhZCB0byBpbmZp bml0ZSByZWN1cnNpb24gYW5kIHBvdGVudGlhbGx5IGNyYXNoIHRoZSBwcm9jZXNzLgoKVGhp cyBjb21taXQgYWRkcyBhIGd1YXJkIHRvIHByZXZlbnQgc3VjaCByZWN1cnNpb24uCklmIFBy b2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCkgaXMgYWxyZWFkeSBpbiBwcm9ncmVz cyBhbmQKbG9nZ2luZyBtZW1vcnkgY29udGV4dHMsIHN1YnNlcXVlbnQgY2FsbHMgd2lsbCBl eGl0IGltbWVkaWF0ZWx5LAphdm9pZGluZyB1bmludGVuZGVkIHJlY3Vyc2l2ZSBjYWxscy4K CldoaWxlIHRoaXMgc2NlbmFyaW8gaXMgdW5saWtlbHkgaW4gcHJhY3RpY2UsIGl04oCZcyBu b3QgaW1wb3NzaWJsZS4KVGhpcyBjaGFuZ2UgYWRkcyBhIHNhZmV0eSBjaGVjayB0byBwcmV2 ZW50IHN1Y2ggZmFpbHVyZXMuCgpCYWNrLXBhdGNoIHRvIHYxNCwgd2hlcmUgbWVtb3J5IGNv bnRleHQgbG9nZ2luZyB3YXMgaW50cm9kdWNlZC4KClJlcG9ydGVkLWJ5OiBSb2JlcnQgSGFh cyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpBdXRob3I6IEZ1amlpIE1hc2FvIDxtYXNhby5m dWppaUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtv c2hpYUBvc3MubnR0ZGF0YS5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0 bWhhYXNAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBK1Rn bW9aTXJ2MzJ0Yk5SckZUdkY5aVdMblRHcWJoWVNMVmNySEd1d1p2Q3RwaDBOQUBtYWlsLmdt YWlsLmNvbQpCYWNrcGF0Y2gtdGhyb3VnaDogMTQKLS0tCiBzcmMvYmFja2VuZC91dGlscy9t bWdyL21jeHQuYyB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAx IGZpbGUgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMgYi9zcmMvYmFja2VuZC91 dGlscy9tbWdyL21jeHQuYwppbmRleCAxNWZhNGQwYTU1ZS4uZjc2ODllYTZkZTggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL21tZ3IvbWN4dC5jCkBAIC0xNTcsNiArMTU3LDkgQEAgTWVtb3J5Q29udGV4dCBD dXJUcmFuc2FjdGlvbkNvbnRleHQgPSBOVUxMOwogLyogVGhpcyBpcyBhIHRyYW5zaWVudCBs aW5rIHRvIHRoZSBhY3RpdmUgcG9ydGFsJ3MgbWVtb3J5IGNvbnRleHQ6ICovCiBNZW1vcnlD b250ZXh0IFBvcnRhbENvbnRleHQgPSBOVUxMOwogCisvKiBJcyBtZW1vcnkgY29udGV4dCBs b2dnaW5nIGN1cnJlbnRseSBpbiBwcm9ncmVzcz8gKi8KK3N0YXRpYyBib29sIExvZ01lbW9y eUNvbnRleHRJblByb2dyZXNzID0gZmFsc2U7CisKIHN0YXRpYyB2b2lkIE1lbW9yeUNvbnRl eHREZWxldGVPbmx5KE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBzdGF0aWMgdm9pZCBNZW1v cnlDb250ZXh0Q2FsbFJlc2V0Q2FsbGJhY2tzKE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBz dGF0aWMgdm9pZCBNZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5hbChNZW1vcnlDb250ZXh0IGNv bnRleHQsIGludCBsZXZlbCwKQEAgLTEyOTUsMjYgKzEyOTgsNDUgQEAgUHJvY2Vzc0xvZ01l bW9yeUNvbnRleHRJbnRlcnJ1cHQodm9pZCkKIAlMb2dNZW1vcnlDb250ZXh0UGVuZGluZyA9 IGZhbHNlOwogCiAJLyoKLQkgKiBVc2UgTE9HX1NFUlZFUl9PTkxZIHRvIHByZXZlbnQgdGhp cyBtZXNzYWdlIGZyb20gYmVpbmcgc2VudCB0byB0aGUKLQkgKiBjb25uZWN0ZWQgY2xpZW50 LgorCSAqIEV4aXQgaW1tZWRpYXRlbHkgaWYgbWVtb3J5IGNvbnRleHQgbG9nZ2luZyBpcyBh bHJlYWR5IGluIHByb2dyZXNzLiBUaGlzCisJICogcHJldmVudHMgcmVjdXJzaXZlIGNhbGxz LCB3aGljaCBjb3VsZCBvY2N1ciBpZiBsb2dnaW5nIGlzIHJlcXVlc3RlZAorCSAqIHJlcGVh dGVkbHkgYW5kIHJhcGlkbHksIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gaW5maW5pdGUgcmVj dXJzaW9uIGFuZCBhCisJICogY3Jhc2guCiAJICovCi0JZXJlcG9ydChMT0dfU0VSVkVSX09O TFksCi0JCQkoZXJyaGlkZXN0bXQodHJ1ZSksCi0JCQkgZXJyaGlkZWNvbnRleHQodHJ1ZSks Ci0JCQkgZXJybXNnKCJsb2dnaW5nIG1lbW9yeSBjb250ZXh0cyBvZiBQSUQgJWQiLCBNeVBy b2NQaWQpKSk7CisJaWYgKExvZ01lbW9yeUNvbnRleHRJblByb2dyZXNzKQorCQlyZXR1cm47 CisJTG9nTWVtb3J5Q29udGV4dEluUHJvZ3Jlc3MgPSB0cnVlOwogCi0JLyoKLQkgKiBXaGVu IGEgYmFja2VuZCBwcm9jZXNzIGlzIGNvbnN1bWluZyBodWdlIG1lbW9yeSwgbG9nZ2luZyBh bGwgaXRzIG1lbW9yeQotCSAqIGNvbnRleHRzIG1pZ2h0IG92ZXJydW4gYXZhaWxhYmxlIGRp c2sgc3BhY2UuIFRvIHByZXZlbnQgdGhpcywgd2UgbGltaXQKLQkgKiB0aGUgZGVwdGggb2Yg dGhlIGhpZXJhcmNoeSwgYXMgd2VsbCBhcyB0aGUgbnVtYmVyIG9mIGNoaWxkIGNvbnRleHRz IHRvCi0JICogbG9nIHBlciBwYXJlbnQgdG8gMTAwLgotCSAqCi0JICogQXMgd2l0aCBNZW1v cnlDb250ZXh0U3RhdHMoKSwgd2Ugc3VwcG9zZSB0aGF0IHByYWN0aWNhbCBjYXNlcyB3aGVy ZSB0aGUKLQkgKiBkdW1wIGdldHMgbG9uZyB3aWxsIHR5cGljYWxseSBiZSBodWdlIG51bWJl cnMgb2Ygc2libGluZ3MgdW5kZXIgdGhlCi0JICogc2FtZSBwYXJlbnQgY29udGV4dDsgd2hp bGUgdGhlIGFkZGl0aW9uYWwgZGVidWdnaW5nIHZhbHVlIGZyb20gc2VlaW5nCi0JICogZGV0 YWlscyBhYm91dCBpbmRpdmlkdWFsIHNpYmxpbmdzIGJleW9uZCAxMDAgd2lsbCBub3QgYmUg bGFyZ2UuCi0JICovCi0JTWVtb3J5Q29udGV4dFN0YXRzRGV0YWlsKFRvcE1lbW9yeUNvbnRl eHQsIDEwMCwgMTAwLCBmYWxzZSk7CisJUEdfVFJZKCk7CisJeworCQkvKgorCQkgKiBVc2Ug TE9HX1NFUlZFUl9PTkxZIHRvIHByZXZlbnQgdGhpcyBtZXNzYWdlIGZyb20gYmVpbmcgc2Vu dCB0byB0aGUKKwkJICogY29ubmVjdGVkIGNsaWVudC4KKwkJICovCisJCWVyZXBvcnQoTE9H X1NFUlZFUl9PTkxZLAorCQkJCShlcnJoaWRlc3RtdCh0cnVlKSwKKwkJCQkgZXJyaGlkZWNv bnRleHQodHJ1ZSksCisJCQkJIGVycm1zZygibG9nZ2luZyBtZW1vcnkgY29udGV4dHMgb2Yg UElEICVkIiwgTXlQcm9jUGlkKSkpOworCisJCS8qCisJCSAqIFdoZW4gYSBiYWNrZW5kIHBy b2Nlc3MgaXMgY29uc3VtaW5nIGh1Z2UgbWVtb3J5LCBsb2dnaW5nIGFsbCBpdHMKKwkJICog bWVtb3J5IGNvbnRleHRzIG1pZ2h0IG92ZXJydW4gYXZhaWxhYmxlIGRpc2sgc3BhY2UuIFRv IHByZXZlbnQKKwkJICogdGhpcywgd2UgbGltaXQgdGhlIGRlcHRoIG9mIHRoZSBoaWVyYXJj aHksIGFzIHdlbGwgYXMgdGhlIG51bWJlciBvZgorCQkgKiBjaGlsZCBjb250ZXh0cyB0byBs b2cgcGVyIHBhcmVudCB0byAxMDAuCisJCSAqCisJCSAqIEFzIHdpdGggTWVtb3J5Q29udGV4 dFN0YXRzKCksIHdlIHN1cHBvc2UgdGhhdCBwcmFjdGljYWwgY2FzZXMgd2hlcmUKKwkJICog dGhlIGR1bXAgZ2V0cyBsb25nIHdpbGwgdHlwaWNhbGx5IGJlIGh1Z2UgbnVtYmVycyBvZiBz aWJsaW5ncyB1bmRlcgorCQkgKiB0aGUgc2FtZSBwYXJlbnQgY29udGV4dDsgd2hpbGUgdGhl IGFkZGl0aW9uYWwgZGVidWdnaW5nIHZhbHVlIGZyb20KKwkJICogc2VlaW5nIGRldGFpbHMg YWJvdXQgaW5kaXZpZHVhbCBzaWJsaW5ncyBiZXlvbmQgMTAwIHdpbGwgbm90IGJlCisJCSAq IGxhcmdlLgorCQkgKi8KKwkJTWVtb3J5Q29udGV4dFN0YXRzRGV0YWlsKFRvcE1lbW9yeUNv bnRleHQsIDEwMCwgMTAwLCBmYWxzZSk7CisJfQorCVBHX0ZJTkFMTFkoKTsKKwl7CisJCUxv Z01lbW9yeUNvbnRleHRJblByb2dyZXNzID0gZmFsc2U7CisJfQorCVBHX0VORF9UUlkoKTsK IH0KIAogdm9pZCAqCi0tIAoyLjQ5LjAKCg== --------------5tjMlPAm6OdeNf9NEAYJcfxv--