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 1uB24w-005Zn9-Bh for pgsql-hackers@arkaria.postgresql.org; Sat, 03 May 2025 01:54:10 +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 1uB24u-00CmhL-1e for pgsql-hackers@arkaria.postgresql.org; Sat, 03 May 2025 01:54:09 +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 1uB24t-00CmhD-GG for pgsql-hackers@lists.postgresql.org; Sat, 03 May 2025 01:54:08 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1uB24r-000mKP-0o for pgsql-hackers@lists.postgresql.org; Sat, 03 May 2025 01:54:07 +0000 Received: from [172.20.10.2] (sp183-74-207-62.msb.spmode.ne.jp [183.74.207.62]) by oss.nttdata.com (Postfix) with ESMTPSA id 189A7619E7; Sat, 3 May 2025 10:54:00 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at oss.nttdata.com Content-Type: multipart/mixed; boundary="------------raVJAnIAoEfTX6JfbkooBndh" Message-ID: <1e837d9f-d32d-4096-b408-fdea3db181cb@oss.nttdata.com> Date: Sat, 3 May 2025 10:53:58 +0900 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: pgsql: Add function to log the memory contexts of specified backend pro To: torikoshia Cc: Robert Haas , PostgreSQL Hackers References: <1983bca8-e1c4-45cd-9fd4-de38cd7b5896@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. --------------raVJAnIAoEfTX6JfbkooBndh Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2025/05/02 14:58, torikoshia wrote: > I confirmed that with this patch applied, the process no longer crashes even after applying the change Robert used to trigger the crash. > > a small nitpick: > > +                * requested  repeatedly and rapidly, potentially leading to infinite > > It looks like there are two spaces between "requested" and "repeatedly". Thanks for the review and testing! I've fixed the issue you pointed out. Updated patch attached. Since git cherry-pick didn't work cleanly for v16 and earlier, I've also prepared a separate patch for those versions. Regards, -- Fujii Masao Advanced Computing Technology Center Research and Development Headquarters NTT DATA CORPORATION --------------raVJAnIAoEfTX6JfbkooBndh Content-Type: text/plain; charset=UTF-8; name="v2-0001-PG14-PG16-Add-guard-to-prevent-recursive-memory-contexts-lo.patch" Content-Disposition: attachment; filename*0="v2-0001-PG14-PG16-Add-guard-to-prevent-recursive-memory-cont"; filename*1="exts-lo.patch" Content-Transfer-Encoding: base64 RnJvbSBjMzliM2I4M2Y4YTA0ZTc4MTgxMmJkM2I4M2FjYjIzNWJhYmUzMTE2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGdWppaSBNYXNhbyA8ZnVqaWlAcG9zdGdyZXNxbC5v cmc+CkRhdGU6IFNhdCwgMyBNYXkgMjAyNSAxMDoyMTowMSArMDkwMApTdWJqZWN0OiBbUEFU Q0ggdjJdIEFkZCBndWFyZCB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBtZW1vcnkgY29udGV4dHMg bG9nZ2luZy4KTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBj aGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClByZXZpb3Vz bHksIGlmIG1lbW9yeSBjb250ZXh0cyBsb2dnaW5nIHdhcyB0cmlnZ2VyZWQgcmVwZWF0ZWRs eSBhbmQKcmFwaWRseSB3aGlsZSBhIHByZXZpb3VzIHJlcXVlc3Qgd2FzIHN0aWxsIGJlaW5n IHByb2Nlc3NlZCwgaXQgY291bGQKcmVzdWx0IGluIHJlY3Vyc2l2ZSBjYWxscyB0byBQcm9j ZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpLgpUaGlzIGNvdWxkIGxlYWQgdG8gaW5m aW5pdGUgcmVjdXJzaW9uIGFuZCBwb3RlbnRpYWxseSBjcmFzaCB0aGUgcHJvY2Vzcy4KClRo aXMgY29tbWl0IGFkZHMgYSBndWFyZCB0byBwcmV2ZW50IHN1Y2ggcmVjdXJzaW9uLgpJZiBQ cm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpIGlzIGFscmVhZHkgaW4gcHJvZ3Jl c3MgYW5kCmxvZ2dpbmcgbWVtb3J5IGNvbnRleHRzLCBzdWJzZXF1ZW50IGNhbGxzIHdpbGwg ZXhpdCBpbW1lZGlhdGVseSwKYXZvaWRpbmcgdW5pbnRlbmRlZCByZWN1cnNpdmUgY2FsbHMu CgpXaGlsZSB0aGlzIHNjZW5hcmlvIGlzIHVubGlrZWx5IGluIHByYWN0aWNlLCBpdOKAmXMg bm90IGltcG9zc2libGUuClRoaXMgY2hhbmdlIGFkZHMgYSBzYWZldHkgY2hlY2sgdG8gcHJl dmVudCBzdWNoIGZhaWx1cmVzLgoKQmFjay1wYXRjaCB0byB2MTQsIHdoZXJlIG1lbW9yeSBj b250ZXh0cyBsb2dnaW5nIHdhcyBpbnRyb2R1Y2VkLgoKUmVwb3J0ZWQtYnk6IFJvYmVydCBI YWFzIDxyb2JlcnRtaGFhc0BnbWFpbC5jb20+CkF1dGhvcjogRnVqaWkgTWFzYW8gPG1hc2Fv LmZ1amlpQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEF0c3VzaGkgVG9yaWtvc2hpIDx0b3Jp a29zaGlhQG9zcy5udHRkYXRhLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMv bS9DQStUZ21vWk1ydjMydGJOUnJGVHZGOWlXTG5UR3FiaFlTTFZjckhHdXdadkN0cGgwTkFA bWFpbC5nbWFpbC5jb20KQmFja3BhdGNoLXRocm91Z2g6IDE0Ci0tLQogc3JjL2JhY2tlbmQv dXRpbHMvbW1nci9tY3h0LmMgfCA2MCArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDQxIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKaW5kZXggOWZjODNmMTFmNmYuLjczZGNkNjRjMzUx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9tbWdyL21jeHQuYwpAQCAtMTE5OCwyOCArMTE5OCw1MCBAQCBIYW5k bGVMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KHZvaWQpCiB2b2lkCiBQcm9jZXNzTG9nTWVt b3J5Q29udGV4dEludGVycnVwdCh2b2lkKQogeworCXN0YXRpYyBib29sIGluX3Byb2dyZXNz ID0gZmFsc2U7CisKIAlMb2dNZW1vcnlDb250ZXh0UGVuZGluZyA9IGZhbHNlOwogCi0JLyoK LQkgKiBVc2UgTE9HX1NFUlZFUl9PTkxZIHRvIHByZXZlbnQgdGhpcyBtZXNzYWdlIGZyb20g YmVpbmcgc2VudCB0byB0aGUKLQkgKiBjb25uZWN0ZWQgY2xpZW50LgotCSAqLwotCWVyZXBv cnQoTE9HX1NFUlZFUl9PTkxZLAotCQkJKGVycmhpZGVzdG10KHRydWUpLAotCQkJIGVycmhp ZGVjb250ZXh0KHRydWUpLAotCQkJIGVycm1zZygibG9nZ2luZyBtZW1vcnkgY29udGV4dHMg b2YgUElEICVkIiwgTXlQcm9jUGlkKSkpOworCVBHX1RSWSgpOworCXsKKwkJLyoKKwkJICog RXhpdCBpbW1lZGlhdGVseSBpZiBtZW1vcnkgY29udGV4dHMgbG9nZ2luZyBpcyBhbHJlYWR5 IGluIHByb2dyZXNzLgorCQkgKiBUaGlzIHByZXZlbnRzIHJlY3Vyc2l2ZSBjYWxscywgd2hp Y2ggY291bGQgb2NjdXIgaWYgbG9nZ2luZyBpcworCQkgKiByZXF1ZXN0ZWQgcmVwZWF0ZWRs eSBhbmQgcmFwaWRseSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBpbmZpbml0ZQorCQkgKiBy ZWN1cnNpb24gYW5kIGEgY3Jhc2guCisJCSAqLworCQlpZiAoaW5fcHJvZ3Jlc3MpCisJCQly ZXR1cm47CisJCWluX3Byb2dyZXNzID0gdHJ1ZTsKIAotCS8qCi0JICogV2hlbiBhIGJhY2tl bmQgcHJvY2VzcyBpcyBjb25zdW1pbmcgaHVnZSBtZW1vcnksIGxvZ2dpbmcgYWxsIGl0cyBt ZW1vcnkKLQkgKiBjb250ZXh0cyBtaWdodCBvdmVycnVuIGF2YWlsYWJsZSBkaXNrIHNwYWNl LiBUbyBwcmV2ZW50IHRoaXMsIHdlIGxpbWl0Ci0JICogdGhlIG51bWJlciBvZiBjaGlsZCBj b250ZXh0cyB0byBsb2cgcGVyIHBhcmVudCB0byAxMDAuCi0JICoKLQkgKiBBcyB3aXRoIE1l bW9yeUNvbnRleHRTdGF0cygpLCB3ZSBzdXBwb3NlIHRoYXQgcHJhY3RpY2FsIGNhc2VzIHdo ZXJlIHRoZQotCSAqIGR1bXAgZ2V0cyBsb25nIHdpbGwgdHlwaWNhbGx5IGJlIGh1Z2UgbnVt YmVycyBvZiBzaWJsaW5ncyB1bmRlciB0aGUKLQkgKiBzYW1lIHBhcmVudCBjb250ZXh0OyB3 aGlsZSB0aGUgYWRkaXRpb25hbCBkZWJ1Z2dpbmcgdmFsdWUgZnJvbSBzZWVpbmcKLQkgKiBk ZXRhaWxzIGFib3V0IGluZGl2aWR1YWwgc2libGluZ3MgYmV5b25kIDEwMCB3aWxsIG5vdCBi ZSBsYXJnZS4KLQkgKi8KLQlNZW1vcnlDb250ZXh0U3RhdHNEZXRhaWwoVG9wTWVtb3J5Q29u dGV4dCwgMTAwLCBmYWxzZSk7CisJCS8qCisJCSAqIFVzZSBMT0dfU0VSVkVSX09OTFkgdG8g cHJldmVudCB0aGlzIG1lc3NhZ2UgZnJvbSBiZWluZyBzZW50IHRvIHRoZQorCQkgKiBjb25u ZWN0ZWQgY2xpZW50LgorCQkgKi8KKwkJZXJlcG9ydChMT0dfU0VSVkVSX09OTFksCisJCQkJ KGVycmhpZGVzdG10KHRydWUpLAorCQkJCSBlcnJoaWRlY29udGV4dCh0cnVlKSwKKwkJCQkg ZXJybXNnKCJsb2dnaW5nIG1lbW9yeSBjb250ZXh0cyBvZiBQSUQgJWQiLCBNeVByb2NQaWQp KSk7CisKKwkJLyoKKwkJICogV2hlbiBhIGJhY2tlbmQgcHJvY2VzcyBpcyBjb25zdW1pbmcg aHVnZSBtZW1vcnksIGxvZ2dpbmcgYWxsIGl0cworCQkgKiBtZW1vcnkgY29udGV4dHMgbWln aHQgb3ZlcnJ1biBhdmFpbGFibGUgZGlzayBzcGFjZS4gVG8gcHJldmVudAorCQkgKiB0aGlz LCB3ZSBsaW1pdCB0aGUgbnVtYmVyIG9mIGNoaWxkIGNvbnRleHRzIHRvIGxvZyBwZXIgcGFy ZW50IHRvCisJCSAqIDEwMC4KKwkJICoKKwkJICogQXMgd2l0aCBNZW1vcnlDb250ZXh0U3Rh dHMoKSwgd2Ugc3VwcG9zZSB0aGF0IHByYWN0aWNhbCBjYXNlcyB3aGVyZQorCQkgKiB0aGUg ZHVtcCBnZXRzIGxvbmcgd2lsbCB0eXBpY2FsbHkgYmUgaHVnZSBudW1iZXJzIG9mIHNpYmxp bmdzIHVuZGVyCisJCSAqIHRoZSBzYW1lIHBhcmVudCBjb250ZXh0OyB3aGlsZSB0aGUgYWRk aXRpb25hbCBkZWJ1Z2dpbmcgdmFsdWUgZnJvbQorCQkgKiBzZWVpbmcgZGV0YWlscyBhYm91 dCBpbmRpdmlkdWFsIHNpYmxpbmdzIGJleW9uZCAxMDAgd2lsbCBub3QgYmUKKwkJICogbGFy Z2UuCisJCSAqLworCQlNZW1vcnlDb250ZXh0U3RhdHNEZXRhaWwoVG9wTWVtb3J5Q29udGV4 dCwgMTAwLCBmYWxzZSk7CisJfQorCVBHX0ZJTkFMTFkoKTsKKwl7CisJCWluX3Byb2dyZXNz ID0gZmFsc2U7CisJfQorCVBHX0VORF9UUlkoKTsKIH0KIAogdm9pZCAqCi0tIAoyLjQ5LjAK Cg== --------------raVJAnIAoEfTX6JfbkooBndh Content-Type: text/plain; charset=UTF-8; name="v2-0001-PG17-master-Add-guard-to-prevent-recursive-memory-contexts-lo.patch" Content-Disposition: attachment; filename*0="v2-0001-PG17-master-Add-guard-to-prevent-recursive-memory-co"; filename*1="ntexts-lo.patch" Content-Transfer-Encoding: base64 RnJvbSAzNWJiNjY5YmNmMWJlMTJkNzUxN2IzY2M5OTNiY2Y1MTljMGRiMzYxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGdWppaSBNYXNhbyA8ZnVqaWlAcG9zdGdyZXNxbC5v cmc+CkRhdGU6IFNhdCwgMyBNYXkgMjAyNSAxMDoyMTowMSArMDkwMApTdWJqZWN0OiBbUEFU Q0ggdjJdIEFkZCBndWFyZCB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBtZW1vcnkgY29udGV4dHMg bG9nZ2luZy4KTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBj aGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClByZXZpb3Vz bHksIGlmIG1lbW9yeSBjb250ZXh0cyBsb2dnaW5nIHdhcyB0cmlnZ2VyZWQgcmVwZWF0ZWRs eSBhbmQKcmFwaWRseSB3aGlsZSBhIHByZXZpb3VzIHJlcXVlc3Qgd2FzIHN0aWxsIGJlaW5n IHByb2Nlc3NlZCwgaXQgY291bGQKcmVzdWx0IGluIHJlY3Vyc2l2ZSBjYWxscyB0byBQcm9j ZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpLgpUaGlzIGNvdWxkIGxlYWQgdG8gaW5m aW5pdGUgcmVjdXJzaW9uIGFuZCBwb3RlbnRpYWxseSBjcmFzaCB0aGUgcHJvY2Vzcy4KClRo aXMgY29tbWl0IGFkZHMgYSBndWFyZCB0byBwcmV2ZW50IHN1Y2ggcmVjdXJzaW9uLgpJZiBQ cm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpIGlzIGFscmVhZHkgaW4gcHJvZ3Jl c3MgYW5kCmxvZ2dpbmcgbWVtb3J5IGNvbnRleHRzLCBzdWJzZXF1ZW50IGNhbGxzIHdpbGwg ZXhpdCBpbW1lZGlhdGVseSwKYXZvaWRpbmcgdW5pbnRlbmRlZCByZWN1cnNpdmUgY2FsbHMu CgpXaGlsZSB0aGlzIHNjZW5hcmlvIGlzIHVubGlrZWx5IGluIHByYWN0aWNlLCBpdOKAmXMg bm90IGltcG9zc2libGUuClRoaXMgY2hhbmdlIGFkZHMgYSBzYWZldHkgY2hlY2sgdG8gcHJl dmVudCBzdWNoIGZhaWx1cmVzLgoKQmFjay1wYXRjaCB0byB2MTQsIHdoZXJlIG1lbW9yeSBj b250ZXh0cyBsb2dnaW5nIHdhcyBpbnRyb2R1Y2VkLgoKUmVwb3J0ZWQtYnk6IFJvYmVydCBI YWFzIDxyb2JlcnRtaGFhc0BnbWFpbC5jb20+CkF1dGhvcjogRnVqaWkgTWFzYW8gPG1hc2Fv LmZ1amlpQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEF0c3VzaGkgVG9yaWtvc2hpIDx0b3Jp a29zaGlhQG9zcy5udHRkYXRhLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMv bS9DQStUZ21vWk1ydjMydGJOUnJGVHZGOWlXTG5UR3FiaFlTTFZjckhHdXdadkN0cGgwTkFA bWFpbC5nbWFpbC5jb20KQmFja3BhdGNoLXRocm91Z2g6IDE0Ci0tLQogc3JjL2JhY2tlbmQv dXRpbHMvbW1nci9tY3h0LmMgfCA2MSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDQxIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKaW5kZXggN2QyOGNhNzA2ZWIuLmYwYThjY2RmZTEy IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9tbWdyL21jeHQuYwpAQCAtMTM4MywyOSArMTM4Myw1MCBAQCBIYW5k bGVHZXRNZW1vcnlDb250ZXh0SW50ZXJydXB0KHZvaWQpCiB2b2lkCiBQcm9jZXNzTG9nTWVt b3J5Q29udGV4dEludGVycnVwdCh2b2lkKQogeworCXN0YXRpYyBib29sIGluX3Byb2dyZXNz ID0gZmFsc2U7CisKIAlMb2dNZW1vcnlDb250ZXh0UGVuZGluZyA9IGZhbHNlOwogCi0JLyoK LQkgKiBVc2UgTE9HX1NFUlZFUl9PTkxZIHRvIHByZXZlbnQgdGhpcyBtZXNzYWdlIGZyb20g YmVpbmcgc2VudCB0byB0aGUKLQkgKiBjb25uZWN0ZWQgY2xpZW50LgotCSAqLwotCWVyZXBv cnQoTE9HX1NFUlZFUl9PTkxZLAotCQkJKGVycmhpZGVzdG10KHRydWUpLAotCQkJIGVycmhp ZGVjb250ZXh0KHRydWUpLAotCQkJIGVycm1zZygibG9nZ2luZyBtZW1vcnkgY29udGV4dHMg b2YgUElEICVkIiwgTXlQcm9jUGlkKSkpOworCVBHX1RSWSgpOworCXsKKwkJLyoKKwkJICog RXhpdCBpbW1lZGlhdGVseSBpZiBtZW1vcnkgY29udGV4dHMgbG9nZ2luZyBpcyBhbHJlYWR5 IGluIHByb2dyZXNzLgorCQkgKiBUaGlzIHByZXZlbnRzIHJlY3Vyc2l2ZSBjYWxscywgd2hp Y2ggY291bGQgb2NjdXIgaWYgbG9nZ2luZyBpcworCQkgKiByZXF1ZXN0ZWQgcmVwZWF0ZWRs eSBhbmQgcmFwaWRseSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBpbmZpbml0ZQorCQkgKiBy ZWN1cnNpb24gYW5kIGEgY3Jhc2guCisJCSAqLworCQlpZiAoaW5fcHJvZ3Jlc3MpCisJCQly ZXR1cm47CisJCWluX3Byb2dyZXNzID0gdHJ1ZTsKIAotCS8qCi0JICogV2hlbiBhIGJhY2tl bmQgcHJvY2VzcyBpcyBjb25zdW1pbmcgaHVnZSBtZW1vcnksIGxvZ2dpbmcgYWxsIGl0cyBt ZW1vcnkKLQkgKiBjb250ZXh0cyBtaWdodCBvdmVycnVuIGF2YWlsYWJsZSBkaXNrIHNwYWNl LiBUbyBwcmV2ZW50IHRoaXMsIHdlIGxpbWl0Ci0JICogdGhlIGRlcHRoIG9mIHRoZSBoaWVy YXJjaHksIGFzIHdlbGwgYXMgdGhlIG51bWJlciBvZiBjaGlsZCBjb250ZXh0cyB0bwotCSAq IGxvZyBwZXIgcGFyZW50IHRvIDEwMC4KLQkgKgotCSAqIEFzIHdpdGggTWVtb3J5Q29udGV4 dFN0YXRzKCksIHdlIHN1cHBvc2UgdGhhdCBwcmFjdGljYWwgY2FzZXMgd2hlcmUgdGhlCi0J ICogZHVtcCBnZXRzIGxvbmcgd2lsbCB0eXBpY2FsbHkgYmUgaHVnZSBudW1iZXJzIG9mIHNp YmxpbmdzIHVuZGVyIHRoZQotCSAqIHNhbWUgcGFyZW50IGNvbnRleHQ7IHdoaWxlIHRoZSBh ZGRpdGlvbmFsIGRlYnVnZ2luZyB2YWx1ZSBmcm9tIHNlZWluZwotCSAqIGRldGFpbHMgYWJv dXQgaW5kaXZpZHVhbCBzaWJsaW5ncyBiZXlvbmQgMTAwIHdpbGwgbm90IGJlIGxhcmdlLgot CSAqLwotCU1lbW9yeUNvbnRleHRTdGF0c0RldGFpbChUb3BNZW1vcnlDb250ZXh0LCAxMDAs IDEwMCwgZmFsc2UpOworCQkvKgorCQkgKiBVc2UgTE9HX1NFUlZFUl9PTkxZIHRvIHByZXZl bnQgdGhpcyBtZXNzYWdlIGZyb20gYmVpbmcgc2VudCB0byB0aGUKKwkJICogY29ubmVjdGVk IGNsaWVudC4KKwkJICovCisJCWVyZXBvcnQoTE9HX1NFUlZFUl9PTkxZLAorCQkJCShlcnJo aWRlc3RtdCh0cnVlKSwKKwkJCQkgZXJyaGlkZWNvbnRleHQodHJ1ZSksCisJCQkJIGVycm1z ZygibG9nZ2luZyBtZW1vcnkgY29udGV4dHMgb2YgUElEICVkIiwgTXlQcm9jUGlkKSkpOwor CisJCS8qCisJCSAqIFdoZW4gYSBiYWNrZW5kIHByb2Nlc3MgaXMgY29uc3VtaW5nIGh1Z2Ug bWVtb3J5LCBsb2dnaW5nIGFsbCBpdHMKKwkJICogbWVtb3J5IGNvbnRleHRzIG1pZ2h0IG92 ZXJydW4gYXZhaWxhYmxlIGRpc2sgc3BhY2UuIFRvIHByZXZlbnQKKwkJICogdGhpcywgd2Ug bGltaXQgdGhlIGRlcHRoIG9mIHRoZSBoaWVyYXJjaHksIGFzIHdlbGwgYXMgdGhlIG51bWJl ciBvZgorCQkgKiBjaGlsZCBjb250ZXh0cyB0byBsb2cgcGVyIHBhcmVudCB0byAxMDAuCisJ CSAqCisJCSAqIEFzIHdpdGggTWVtb3J5Q29udGV4dFN0YXRzKCksIHdlIHN1cHBvc2UgdGhh dCBwcmFjdGljYWwgY2FzZXMgd2hlcmUKKwkJICogdGhlIGR1bXAgZ2V0cyBsb25nIHdpbGwg dHlwaWNhbGx5IGJlIGh1Z2UgbnVtYmVycyBvZiBzaWJsaW5ncyB1bmRlcgorCQkgKiB0aGUg c2FtZSBwYXJlbnQgY29udGV4dDsgd2hpbGUgdGhlIGFkZGl0aW9uYWwgZGVidWdnaW5nIHZh bHVlIGZyb20KKwkJICogc2VlaW5nIGRldGFpbHMgYWJvdXQgaW5kaXZpZHVhbCBzaWJsaW5n cyBiZXlvbmQgMTAwIHdpbGwgbm90IGJlCisJCSAqIGxhcmdlLgorCQkgKi8KKwkJTWVtb3J5 Q29udGV4dFN0YXRzRGV0YWlsKFRvcE1lbW9yeUNvbnRleHQsIDEwMCwgMTAwLCBmYWxzZSk7 CisJfQorCVBHX0ZJTkFMTFkoKTsKKwl7CisJCWluX3Byb2dyZXNzID0gZmFsc2U7CisJfQor CVBHX0VORF9UUlkoKTsKIH0KIAogLyoKLS0gCjIuNDkuMAoK --------------raVJAnIAoEfTX6JfbkooBndh--