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 1uCajZ-00H9x4-TY for pgsql-hackers@arkaria.postgresql.org; Wed, 07 May 2025 09:06:34 +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 1uCajZ-00CuuZ-0E for pgsql-hackers@arkaria.postgresql.org; Wed, 07 May 2025 09:06:33 +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 1uCajY-00CuuO-KE for pgsql-hackers@lists.postgresql.org; Wed, 07 May 2025 09:06:32 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1uCajU-000bJq-1Q for pgsql-hackers@lists.postgresql.org; Wed, 07 May 2025 09:06:32 +0000 Received: from [192.168.11.2] (p1696134-ipoe.ipoe.ocn.ne.jp [118.0.93.133]) by oss.nttdata.com (Postfix) with ESMTPSA id 1167A61BAB; Wed, 7 May 2025 18:06:23 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at oss.nttdata.com Content-Type: multipart/mixed; boundary="------------wmwCZD0xbcIfzNilTUz5UVw7" Message-ID: Date: Wed, 7 May 2025 18:06:22 +0900 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: pgsql: Add function to log the memory contexts of specified backend pro To: Robert Haas Cc: torikoshia , PostgreSQL Hackers References: <1983bca8-e1c4-45cd-9fd4-de38cd7b5896@oss.nttdata.com> <1e837d9f-d32d-4096-b408-fdea3db181cb@oss.nttdata.com> Content-Language: en-US From: Fujii Masao 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. --------------wmwCZD0xbcIfzNilTUz5UVw7 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2025/05/05 23:57, Robert Haas wrote: > On Fri, May 2, 2025 at 9:54 PM Fujii Masao wrote: >> Thanks for the review and testing! I've fixed the issue you pointed out. >> Updated patch attached. > > Thanks for addressing this. However, I believe this commit may need to > take note of the following comment from elog.h: Thanks for the review! > * Note: if a local variable of the function containing PG_TRY is modified > * in the PG_TRY section and used in the PG_CATCH section, that variable > * must be declared "volatile" for POSIX compliance. This is not mere > * pedantry; we have seen bugs from compilers improperly optimizing code > * away when such a variable was not marked. Beware that gcc's -Wclobbered > * warnings are just about entirely useless for catching such oversights. > > Based on this comment, I believe in_progress must be declared volatile. You're right. OTOH, setting the flag inside the PG_TRY() block isn't necessary, so I've moved it outside instead of leaving it inside and marking the flag volatile. > 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. I'm fine with this. I've renamed the flag and made it a file-level global variable as suggested. Updated patch is attached. Regards, -- Fujii Masao Advanced Computing Technology Center Research and Development Headquarters NTT DATA CORPORATION --------------wmwCZD0xbcIfzNilTUz5UVw7 Content-Type: text/plain; charset=UTF-8; name="v3-0001-PG14-PG16-Add-guard-to-prevent-recursive-memory-context-log.patch" Content-Disposition: attachment; filename*0="v3-0001-PG14-PG16-Add-guard-to-prevent-recursive-memory-cont"; filename*1="ext-log.patch" Content-Transfer-Encoding: base64 RnJvbSBjNTg3MGY4YjQxMTE4ZDEyMDhkMTExMTAxYjlhMzYwZjFhYmM3ZTUzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGdWppaSBNYXNhbyA8ZnVqaWlAcG9zdGdyZXNxbC5v cmc+CkRhdGU6IFdlZCwgNyBNYXkgMjAyNSAxNzo0NTowMiArMDkwMApTdWJqZWN0OiBbUEFU Q0ggdjNdIEFkZCBndWFyZCB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBtZW1vcnkgY29udGV4dCBs b2dnaW5nLgpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNo YXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKUHJldmlvdXNs eSwgaWYgbWVtb3J5IGNvbnRleHQgbG9nZ2luZyB3YXMgdHJpZ2dlcmVkIHJlcGVhdGVkbHkg YW5kCnJhcGlkbHkgd2hpbGUgYSBwcmV2aW91cyByZXF1ZXN0IHdhcyBzdGlsbCBiZWluZyBw cm9jZXNzZWQsIGl0IGNvdWxkCnJlc3VsdCBpbiByZWN1cnNpdmUgY2FsbHMgdG8gUHJvY2Vz c0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKS4KVGhpcyBjb3VsZCBsZWFkIHRvIGluZmlu aXRlIHJlY3Vyc2lvbiBhbmQgcG90ZW50aWFsbHkgY3Jhc2ggdGhlIHByb2Nlc3MuCgpUaGlz IGNvbW1pdCBhZGRzIGEgZ3VhcmQgdG8gcHJldmVudCBzdWNoIHJlY3Vyc2lvbi4KSWYgUHJv Y2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKSBpcyBhbHJlYWR5IGluIHByb2dyZXNz IGFuZApsb2dnaW5nIG1lbW9yeSBjb250ZXh0cywgc3Vic2VxdWVudCBjYWxscyB3aWxsIGV4 aXQgaW1tZWRpYXRlbHksCmF2b2lkaW5nIHVuaW50ZW5kZWQgcmVjdXJzaXZlIGNhbGxzLgoK V2hpbGUgdGhpcyBzY2VuYXJpbyBpcyB1bmxpa2VseSBpbiBwcmFjdGljZSwgaXTigJlzIG5v dCBpbXBvc3NpYmxlLgpUaGlzIGNoYW5nZSBhZGRzIGEgc2FmZXR5IGNoZWNrIHRvIHByZXZl bnQgc3VjaCBmYWlsdXJlcy4KCkJhY2stcGF0Y2ggdG8gdjE0LCB3aGVyZSBtZW1vcnkgY29u dGV4dCBsb2dnaW5nIHdhcyBpbnRyb2R1Y2VkLgoKUmVwb3J0ZWQtYnk6IFJvYmVydCBIYWFz IDxyb2JlcnRtaGFhc0BnbWFpbC5jb20+CkF1dGhvcjogRnVqaWkgTWFzYW8gPG1hc2FvLmZ1 amlpQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEF0c3VzaGkgVG9yaWtvc2hpIDx0b3Jpa29z aGlhQG9zcy5udHRkYXRhLmNvbT4KUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxyb2JlcnRt aGFhc0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0ErVGdt b1pNcnYzMnRiTlJyRlR2RjlpV0xuVEdxYmhZU0xWY3JIR3V3WnZDdHBoME5BQG1haWwuZ21h aWwuY29tCkJhY2twYXRjaC10aHJvdWdoOiAxNAotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21t Z3IvbWN4dC5jIHwgNTcgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL21tZ3IvbWN4dC5jCmluZGV4IDlmYzgzZjExZjZmLi4zMDI4NmEzZmYzMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvbW1nci9tY3h0LmMKQEAgLTE0OSw2ICsxNDksOSBAQCBNZW1vcnlDb250ZXh0IEN1 clRyYW5zYWN0aW9uQ29udGV4dCA9IE5VTEw7CiAvKiBUaGlzIGlzIGEgdHJhbnNpZW50IGxp bmsgdG8gdGhlIGFjdGl2ZSBwb3J0YWwncyBtZW1vcnkgY29udGV4dDogKi8KIE1lbW9yeUNv bnRleHQgUG9ydGFsQ29udGV4dCA9IE5VTEw7CiAKKy8qIElzIG1lbW9yeSBjb250ZXh0IGxv Z2dpbmcgY3VycmVudGx5IGluIHByb2dyZXNzPyAqLworc3RhdGljIGJvb2wgTG9nTWVtb3J5 Q29udGV4dEluUHJvZ3Jlc3MgPSBmYWxzZTsKKwogc3RhdGljIHZvaWQgTWVtb3J5Q29udGV4 dENhbGxSZXNldENhbGxiYWNrcyhNZW1vcnlDb250ZXh0IGNvbnRleHQpOwogc3RhdGljIHZv aWQgTWVtb3J5Q29udGV4dFN0YXRzSW50ZXJuYWwoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBp bnQgbGV2ZWwsCiAJCQkJCQkJCQkgICBib29sIHByaW50LCBpbnQgbWF4X2NoaWxkcmVuLApA QCAtMTIwMSwyNSArMTIwNCw0NSBAQCBQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVw dCh2b2lkKQogCUxvZ01lbW9yeUNvbnRleHRQZW5kaW5nID0gZmFsc2U7CiAKIAkvKgotCSAq IFVzZSBMT0dfU0VSVkVSX09OTFkgdG8gcHJldmVudCB0aGlzIG1lc3NhZ2UgZnJvbSBiZWlu ZyBzZW50IHRvIHRoZQotCSAqIGNvbm5lY3RlZCBjbGllbnQuCisJICogRXhpdCBpbW1lZGlh dGVseSBpZiBtZW1vcnkgY29udGV4dCBsb2dnaW5nIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3Mu IFRoaXMKKwkgKiBwcmV2ZW50cyByZWN1cnNpdmUgY2FsbHMsIHdoaWNoIGNvdWxkIG9jY3Vy IGlmIGxvZ2dpbmcgaXMgcmVxdWVzdGVkCisJICogcmVwZWF0ZWRseSBhbmQgcmFwaWRseSwg cG90ZW50aWFsbHkgbGVhZGluZyB0byBpbmZpbml0ZSByZWN1cnNpb24gYW5kIGEKKwkgKiBj cmFzaC4KIAkgKi8KLQllcmVwb3J0KExPR19TRVJWRVJfT05MWSwKLQkJCShlcnJoaWRlc3Rt dCh0cnVlKSwKLQkJCSBlcnJoaWRlY29udGV4dCh0cnVlKSwKLQkJCSBlcnJtc2coImxvZ2dp bmcgbWVtb3J5IGNvbnRleHRzIG9mIFBJRCAlZCIsIE15UHJvY1BpZCkpKTsKKwlpZiAoTG9n TWVtb3J5Q29udGV4dEluUHJvZ3Jlc3MpCisJCXJldHVybjsKKwlMb2dNZW1vcnlDb250ZXh0 SW5Qcm9ncmVzcyA9IHRydWU7CiAKLQkvKgotCSAqIFdoZW4gYSBiYWNrZW5kIHByb2Nlc3Mg aXMgY29uc3VtaW5nIGh1Z2UgbWVtb3J5LCBsb2dnaW5nIGFsbCBpdHMgbWVtb3J5Ci0JICog Y29udGV4dHMgbWlnaHQgb3ZlcnJ1biBhdmFpbGFibGUgZGlzayBzcGFjZS4gVG8gcHJldmVu dCB0aGlzLCB3ZSBsaW1pdAotCSAqIHRoZSBudW1iZXIgb2YgY2hpbGQgY29udGV4dHMgdG8g bG9nIHBlciBwYXJlbnQgdG8gMTAwLgotCSAqCi0JICogQXMgd2l0aCBNZW1vcnlDb250ZXh0 U3RhdHMoKSwgd2Ugc3VwcG9zZSB0aGF0IHByYWN0aWNhbCBjYXNlcyB3aGVyZSB0aGUKLQkg KiBkdW1wIGdldHMgbG9uZyB3aWxsIHR5cGljYWxseSBiZSBodWdlIG51bWJlcnMgb2Ygc2li bGluZ3MgdW5kZXIgdGhlCi0JICogc2FtZSBwYXJlbnQgY29udGV4dDsgd2hpbGUgdGhlIGFk ZGl0aW9uYWwgZGVidWdnaW5nIHZhbHVlIGZyb20gc2VlaW5nCi0JICogZGV0YWlscyBhYm91 dCBpbmRpdmlkdWFsIHNpYmxpbmdzIGJleW9uZCAxMDAgd2lsbCBub3QgYmUgbGFyZ2UuCi0J ICovCi0JTWVtb3J5Q29udGV4dFN0YXRzRGV0YWlsKFRvcE1lbW9yeUNvbnRleHQsIDEwMCwg ZmFsc2UpOworCVBHX1RSWSgpOworCXsKKwkJLyoKKwkJICogVXNlIExPR19TRVJWRVJfT05M WSB0byBwcmV2ZW50IHRoaXMgbWVzc2FnZSBmcm9tIGJlaW5nIHNlbnQgdG8gdGhlCisJCSAq IGNvbm5lY3RlZCBjbGllbnQuCisJCSAqLworCQllcmVwb3J0KExPR19TRVJWRVJfT05MWSwK KwkJCQkoZXJyaGlkZXN0bXQodHJ1ZSksCisJCQkJIGVycmhpZGVjb250ZXh0KHRydWUpLAor CQkJCSBlcnJtc2coImxvZ2dpbmcgbWVtb3J5IGNvbnRleHRzIG9mIFBJRCAlZCIsIE15UHJv Y1BpZCkpKTsKKworCQkvKgorCQkgKiBXaGVuIGEgYmFja2VuZCBwcm9jZXNzIGlzIGNvbnN1 bWluZyBodWdlIG1lbW9yeSwgbG9nZ2luZyBhbGwgaXRzCisJCSAqIG1lbW9yeSBjb250ZXh0 cyBtaWdodCBvdmVycnVuIGF2YWlsYWJsZSBkaXNrIHNwYWNlLiBUbyBwcmV2ZW50CisJCSAq IHRoaXMsIHdlIGxpbWl0IHRoZSBudW1iZXIgb2YgY2hpbGQgY29udGV4dHMgdG8gbG9nIHBl ciBwYXJlbnQgdG8KKwkJICogMTAwLgorCQkgKgorCQkgKiBBcyB3aXRoIE1lbW9yeUNvbnRl eHRTdGF0cygpLCB3ZSBzdXBwb3NlIHRoYXQgcHJhY3RpY2FsIGNhc2VzIHdoZXJlCisJCSAq IHRoZSBkdW1wIGdldHMgbG9uZyB3aWxsIHR5cGljYWxseSBiZSBodWdlIG51bWJlcnMgb2Yg c2libGluZ3MgdW5kZXIKKwkJICogdGhlIHNhbWUgcGFyZW50IGNvbnRleHQ7IHdoaWxlIHRo ZSBhZGRpdGlvbmFsIGRlYnVnZ2luZyB2YWx1ZSBmcm9tCisJCSAqIHNlZWluZyBkZXRhaWxz IGFib3V0IGluZGl2aWR1YWwgc2libGluZ3MgYmV5b25kIDEwMCB3aWxsIG5vdCBiZQorCQkg KiBsYXJnZS4KKwkJICovCisJCU1lbW9yeUNvbnRleHRTdGF0c0RldGFpbChUb3BNZW1vcnlD b250ZXh0LCAxMDAsIGZhbHNlKTsKKwl9CisJUEdfRklOQUxMWSgpOworCXsKKwkJTG9nTWVt b3J5Q29udGV4dEluUHJvZ3Jlc3MgPSBmYWxzZTsKKwl9CisJUEdfRU5EX1RSWSgpOwogfQog CiB2b2lkICoKLS0gCjIuNDkuMAoK --------------wmwCZD0xbcIfzNilTUz5UVw7 Content-Type: text/plain; charset=UTF-8; name="v3-0001-PG17-master-Add-guard-to-prevent-recursive-memory-context-log.patch" Content-Disposition: attachment; filename*0="v3-0001-PG17-master-Add-guard-to-prevent-recursive-memory-co"; filename*1="ntext-log.patch" Content-Transfer-Encoding: base64 RnJvbSA5MmEwZmMwMzk3ODMxODQ5ZjZlMTQ0M2IwMTA3MzNhNjllMWQ0YjFkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGdWppaSBNYXNhbyA8ZnVqaWlAcG9zdGdyZXNxbC5v cmc+CkRhdGU6IFdlZCwgNyBNYXkgMjAyNSAxNjo0OTozMSArMDkwMApTdWJqZWN0OiBbUEFU Q0ggdjNdIEFkZCBndWFyZCB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBtZW1vcnkgY29udGV4dCBs b2dnaW5nLgpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNo YXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKUHJldmlvdXNs eSwgaWYgbWVtb3J5IGNvbnRleHQgbG9nZ2luZyB3YXMgdHJpZ2dlcmVkIHJlcGVhdGVkbHkg YW5kCnJhcGlkbHkgd2hpbGUgYSBwcmV2aW91cyByZXF1ZXN0IHdhcyBzdGlsbCBiZWluZyBw cm9jZXNzZWQsIGl0IGNvdWxkCnJlc3VsdCBpbiByZWN1cnNpdmUgY2FsbHMgdG8gUHJvY2Vz c0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKS4KVGhpcyBjb3VsZCBsZWFkIHRvIGluZmlu aXRlIHJlY3Vyc2lvbiBhbmQgcG90ZW50aWFsbHkgY3Jhc2ggdGhlIHByb2Nlc3MuCgpUaGlz IGNvbW1pdCBhZGRzIGEgZ3VhcmQgdG8gcHJldmVudCBzdWNoIHJlY3Vyc2lvbi4KSWYgUHJv Y2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKSBpcyBhbHJlYWR5IGluIHByb2dyZXNz IGFuZApsb2dnaW5nIG1lbW9yeSBjb250ZXh0cywgc3Vic2VxdWVudCBjYWxscyB3aWxsIGV4 aXQgaW1tZWRpYXRlbHksCmF2b2lkaW5nIHVuaW50ZW5kZWQgcmVjdXJzaXZlIGNhbGxzLgoK V2hpbGUgdGhpcyBzY2VuYXJpbyBpcyB1bmxpa2VseSBpbiBwcmFjdGljZSwgaXTigJlzIG5v dCBpbXBvc3NpYmxlLgpUaGlzIGNoYW5nZSBhZGRzIGEgc2FmZXR5IGNoZWNrIHRvIHByZXZl bnQgc3VjaCBmYWlsdXJlcy4KCkJhY2stcGF0Y2ggdG8gdjE0LCB3aGVyZSBtZW1vcnkgY29u dGV4dCBsb2dnaW5nIHdhcyBpbnRyb2R1Y2VkLgoKUmVwb3J0ZWQtYnk6IFJvYmVydCBIYWFz IDxyb2JlcnRtaGFhc0BnbWFpbC5jb20+CkF1dGhvcjogRnVqaWkgTWFzYW8gPG1hc2FvLmZ1 amlpQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEF0c3VzaGkgVG9yaWtvc2hpIDx0b3Jpa29z aGlhQG9zcy5udHRkYXRhLmNvbT4KUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxyb2JlcnRt aGFhc0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0ErVGdt b1pNcnYzMnRiTlJyRlR2RjlpV0xuVEdxYmhZU0xWY3JIR3V3WnZDdHBoME5BQG1haWwuZ21h aWwuY29tCkJhY2twYXRjaC10aHJvdWdoOiAxNAotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21t Z3IvbWN4dC5jIHwgNTggKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL21tZ3IvbWN4dC5jCmluZGV4IDdkMjhjYTcwNmViLi40NjkwZDAzOTAxMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvbW1nci9tY3h0LmMKQEAgLTE3NCw2ICsxNzQsOSBAQCBNZW1vcnlDb250ZXh0IEN1 clRyYW5zYWN0aW9uQ29udGV4dCA9IE5VTEw7CiBNZW1vcnlDb250ZXh0IFBvcnRhbENvbnRl eHQgPSBOVUxMOwogZHNhX2FyZWEgICAqTWVtb3J5U3RhdHNEc2FBcmVhID0gTlVMTDsKIAor LyogSXMgbWVtb3J5IGNvbnRleHQgbG9nZ2luZyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3M/ICov CitzdGF0aWMgYm9vbCBMb2dNZW1vcnlDb250ZXh0SW5Qcm9ncmVzcyA9IGZhbHNlOworCiBz dGF0aWMgdm9pZCBNZW1vcnlDb250ZXh0RGVsZXRlT25seShNZW1vcnlDb250ZXh0IGNvbnRl eHQpOwogc3RhdGljIHZvaWQgTWVtb3J5Q29udGV4dENhbGxSZXNldENhbGxiYWNrcyhNZW1v cnlDb250ZXh0IGNvbnRleHQpOwogc3RhdGljIHZvaWQgTWVtb3J5Q29udGV4dFN0YXRzSW50 ZXJuYWwoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBpbnQgbGV2ZWwsCkBAIC0xMzg2LDI2ICsx Mzg5LDQ1IEBAIFByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KHZvaWQpCiAJTG9n TWVtb3J5Q29udGV4dFBlbmRpbmcgPSBmYWxzZTsKIAogCS8qCi0JICogVXNlIExPR19TRVJW RVJfT05MWSB0byBwcmV2ZW50IHRoaXMgbWVzc2FnZSBmcm9tIGJlaW5nIHNlbnQgdG8gdGhl Ci0JICogY29ubmVjdGVkIGNsaWVudC4KKwkgKiBFeGl0IGltbWVkaWF0ZWx5IGlmIG1lbW9y eSBjb250ZXh0IGxvZ2dpbmcgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcy4gVGhpcworCSAqIHBy ZXZlbnRzIHJlY3Vyc2l2ZSBjYWxscywgd2hpY2ggY291bGQgb2NjdXIgaWYgbG9nZ2luZyBp cyByZXF1ZXN0ZWQKKwkgKiByZXBlYXRlZGx5IGFuZCByYXBpZGx5LCBwb3RlbnRpYWxseSBs ZWFkaW5nIHRvIGluZmluaXRlIHJlY3Vyc2lvbiBhbmQgYQorCSAqIGNyYXNoLgogCSAqLwot CWVyZXBvcnQoTE9HX1NFUlZFUl9PTkxZLAotCQkJKGVycmhpZGVzdG10KHRydWUpLAotCQkJ IGVycmhpZGVjb250ZXh0KHRydWUpLAotCQkJIGVycm1zZygibG9nZ2luZyBtZW1vcnkgY29u dGV4dHMgb2YgUElEICVkIiwgTXlQcm9jUGlkKSkpOworCWlmIChMb2dNZW1vcnlDb250ZXh0 SW5Qcm9ncmVzcykKKwkJcmV0dXJuOworCUxvZ01lbW9yeUNvbnRleHRJblByb2dyZXNzID0g dHJ1ZTsKIAotCS8qCi0JICogV2hlbiBhIGJhY2tlbmQgcHJvY2VzcyBpcyBjb25zdW1pbmcg aHVnZSBtZW1vcnksIGxvZ2dpbmcgYWxsIGl0cyBtZW1vcnkKLQkgKiBjb250ZXh0cyBtaWdo dCBvdmVycnVuIGF2YWlsYWJsZSBkaXNrIHNwYWNlLiBUbyBwcmV2ZW50IHRoaXMsIHdlIGxp bWl0Ci0JICogdGhlIGRlcHRoIG9mIHRoZSBoaWVyYXJjaHksIGFzIHdlbGwgYXMgdGhlIG51 bWJlciBvZiBjaGlsZCBjb250ZXh0cyB0bwotCSAqIGxvZyBwZXIgcGFyZW50IHRvIDEwMC4K LQkgKgotCSAqIEFzIHdpdGggTWVtb3J5Q29udGV4dFN0YXRzKCksIHdlIHN1cHBvc2UgdGhh dCBwcmFjdGljYWwgY2FzZXMgd2hlcmUgdGhlCi0JICogZHVtcCBnZXRzIGxvbmcgd2lsbCB0 eXBpY2FsbHkgYmUgaHVnZSBudW1iZXJzIG9mIHNpYmxpbmdzIHVuZGVyIHRoZQotCSAqIHNh bWUgcGFyZW50IGNvbnRleHQ7IHdoaWxlIHRoZSBhZGRpdGlvbmFsIGRlYnVnZ2luZyB2YWx1 ZSBmcm9tIHNlZWluZwotCSAqIGRldGFpbHMgYWJvdXQgaW5kaXZpZHVhbCBzaWJsaW5ncyBi ZXlvbmQgMTAwIHdpbGwgbm90IGJlIGxhcmdlLgotCSAqLwotCU1lbW9yeUNvbnRleHRTdGF0 c0RldGFpbChUb3BNZW1vcnlDb250ZXh0LCAxMDAsIDEwMCwgZmFsc2UpOworCVBHX1RSWSgp OworCXsKKwkJLyoKKwkJICogVXNlIExPR19TRVJWRVJfT05MWSB0byBwcmV2ZW50IHRoaXMg bWVzc2FnZSBmcm9tIGJlaW5nIHNlbnQgdG8gdGhlCisJCSAqIGNvbm5lY3RlZCBjbGllbnQu CisJCSAqLworCQllcmVwb3J0KExPR19TRVJWRVJfT05MWSwKKwkJCQkoZXJyaGlkZXN0bXQo dHJ1ZSksCisJCQkJIGVycmhpZGVjb250ZXh0KHRydWUpLAorCQkJCSBlcnJtc2coImxvZ2dp bmcgbWVtb3J5IGNvbnRleHRzIG9mIFBJRCAlZCIsIE15UHJvY1BpZCkpKTsKKworCQkvKgor CQkgKiBXaGVuIGEgYmFja2VuZCBwcm9jZXNzIGlzIGNvbnN1bWluZyBodWdlIG1lbW9yeSwg bG9nZ2luZyBhbGwgaXRzCisJCSAqIG1lbW9yeSBjb250ZXh0cyBtaWdodCBvdmVycnVuIGF2 YWlsYWJsZSBkaXNrIHNwYWNlLiBUbyBwcmV2ZW50CisJCSAqIHRoaXMsIHdlIGxpbWl0IHRo ZSBkZXB0aCBvZiB0aGUgaGllcmFyY2h5LCBhcyB3ZWxsIGFzIHRoZSBudW1iZXIgb2YKKwkJ ICogY2hpbGQgY29udGV4dHMgdG8gbG9nIHBlciBwYXJlbnQgdG8gMTAwLgorCQkgKgorCQkg KiBBcyB3aXRoIE1lbW9yeUNvbnRleHRTdGF0cygpLCB3ZSBzdXBwb3NlIHRoYXQgcHJhY3Rp Y2FsIGNhc2VzIHdoZXJlCisJCSAqIHRoZSBkdW1wIGdldHMgbG9uZyB3aWxsIHR5cGljYWxs eSBiZSBodWdlIG51bWJlcnMgb2Ygc2libGluZ3MgdW5kZXIKKwkJICogdGhlIHNhbWUgcGFy ZW50IGNvbnRleHQ7IHdoaWxlIHRoZSBhZGRpdGlvbmFsIGRlYnVnZ2luZyB2YWx1ZSBmcm9t CisJCSAqIHNlZWluZyBkZXRhaWxzIGFib3V0IGluZGl2aWR1YWwgc2libGluZ3MgYmV5b25k IDEwMCB3aWxsIG5vdCBiZQorCQkgKiBsYXJnZS4KKwkJICovCisJCU1lbW9yeUNvbnRleHRT dGF0c0RldGFpbChUb3BNZW1vcnlDb250ZXh0LCAxMDAsIDEwMCwgZmFsc2UpOworCX0KKwlQ R19GSU5BTExZKCk7CisJeworCQlMb2dNZW1vcnlDb250ZXh0SW5Qcm9ncmVzcyA9IGZhbHNl OworCX0KKwlQR19FTkRfVFJZKCk7CiB9CiAKIC8qCi0tIAoyLjQ5LjAKCg== --------------wmwCZD0xbcIfzNilTUz5UVw7--