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 1jsnEq-0004Nk-2o for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Jul 2020 13:02:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jsnEp-0003E2-2U for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Jul 2020 13:02:19 +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 1jsnEo-0003Du-Pi for pgsql-hackers@lists.postgresql.org; Tue, 07 Jul 2020 13:02:18 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jsnEk-0002ns-Ut for pgsql-hackers@postgresql.org; Tue, 07 Jul 2020 13:02:18 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTP id 12E0960146; Tue, 7 Jul 2020 22:02:10 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.102.3 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_8336f778496343922484dd175ced9702" Date: Tue, 07 Jul 2020 22:02:10 +0900 From: torikoshia To: Fujii Masao Cc: pgsql-hackers@postgresql.org Subject: Re: Creating a function for exposing memory usage of backend process In-Reply-To: <9ee242b1-9e70-18f5-0033-6a086e71164d@oss.nttdata.com> References: <72a656e0f71d0860161e0b3f67e4d771@oss.nttdata.com> <398eb7cd-5f75-be1c-3897-36865b7bfabf@oss.nttdata.com> <3193c7d590f3212e543b63df977da758@oss.nttdata.com> <78268b5f-53ed-4645-1abb-23c1030cce0a@oss.nttdata.com> <6c828f3a1d44dba81999fc7990b8f1c5@oss.nttdata.com> <062bab2db5645812fae12e3a965de463@oss.nttdata.com> <5cbed0cc-79fc-3b98-120a-20e07848d10a@oss.nttdata.com> <805313b5f7dc2e6c19b209ff930a7a61@oss.nttdata.com> <9ee242b1-9e70-18f5-0033-6a086e71164d@oss.nttdata.com> Message-ID: <3548926512ddfaedfb5eaf967bf2f196@oss.nttdata.com> X-Sender: torikoshia@oss.nttdata.com User-Agent: Roundcube Webmail/1.1.9 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=_8336f778496343922484dd175ced9702 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed On 2020-07-06 15:16, Fujii Masao wrote: > On 2020/07/06 12:12, torikoshia wrote: >> On Fri, Jul 3, 2020 at 7:33 PM Fujii Masao >> wrote: >> >> Thanks for your review! >> >>> I like more specific name like pg_backend_memory_contexts. >> >> Agreed. >> >> When I was trying to add this function as statistics function, >> I thought that naming pg_stat_getbackend_memory_context() >> might make people regarded it as a "per-backend statistics >> function", whose parameter is backend ID number. >> So I removed "backend", but now there is no necessity to do >> so. >> >>> But I'd like to hear more opinions about the name from others. >> >> I changed the name to pg_backend_memory_contexts for the time >> being. > > +1 > > >>>> - function name: pg_get_memory_contexts() >>>> - source file: mainly src/backend/utils/mmgr/mcxt.c >> >> >>>> +       Identification information of the memory context. This field >>>> is truncated if the identification field is longer than 1024 >>>> characters >>> >>> "characters" should be "bytes"? >> >> Fixed, but I used "characters" while referring to the >> descriptions on the manual of pg_stat_activity.query >> below. >> >> | By default the query text is truncated at 1024 characters; >> >> It has nothing to do with this thread, but considering >> multibyte characters, it also may be better to change it >> to "bytes". > > Yeah, I agree we should write the separate patch fixing that. You will? > If not, I will do that later. Thanks, I will try it! >> Regarding the other comments, I revised the patch as you pointed. > > Thanks for updating the patch! The patch basically looks good to me/ > Here are some minor comments: > > +#define MEMORY_CONTEXT_IDENT_SIZE 1024 > > This macro varible name sounds like the maximum allowed length of ident > that > each menory context has. But actually this limits the maximum bytes of > ident > to display. So I think that it's better to rename this macro to > something like > MEMORY_CONTEXT_IDENT_DISPLAY_SIZE. Thought? Agreed. MEMORY_CONTEXT_IDENT_DISPLAY_SIZE seems more accurate. > +#define PG_GET_MEMORY_CONTEXTS_COLS 9 > + Datum values[PG_GET_MEMORY_CONTEXTS_COLS]; > + bool nulls[PG_GET_MEMORY_CONTEXTS_COLS]; > > This macro variable name should be PG_GET_BACKEND_MEMORY_CONTEXTS_COLS > for the consistency with the function name? Thanks! Fixed it. > > +{ oid => '2282', descr => 'statistics: information about all memory > contexts of local backend', > > Isn't it better to remove "statistics: " from the above description? Yeah, it's my oversight. > > + > + role="column_definition"> > + parent text > > There can be multiple memory contexts with the same name. So I'm afraid > that it's difficult to identify the actual parent memory context from > this > "parent" column. This is ok when logging memory contexts by calling > MemoryContextStats() via gdb. Because child memory contexts are printed > just under their parent, with indents. But this doesn't work in the > view. > To identify the actual parent memory or calculate the memory contexts > tree > from the view, we might need to assign unique ID to each memory context > and display it. But IMO this is overkill. So I'm fine with current > "parent" > column. Thought? Do you have any better idea? Indeed. I also feel it's not usual to assign a unique ID, which can vary every time the view displayed. We show each context using a recursive function and this is a kind of depth-first search. So, as far as I understand, we can identify its parent using both the "parent" column and the order of the rows. Documenting these things may worth for who want to identify the relation between parents and children. Of course, in the relational model, the order of relation does not have meaning so it's also unusual in this sense.. Regards, -- Atsushi Torikoshi NTT DATA CORPORATION --=_8336f778496343922484dd175ced9702 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0005-Adding-a-function-exposing-memory-usage-of-local-backend.patch Content-Disposition: attachment; filename*0*=UTF-8''0005-Adding-a-function-exposing-memory-usage-of-local-; filename*1*=backend.patch; size=12712 RnJvbSAwNTVhZjkwM2EzZGJmMTQ2ZDk3ZGQzZmIwMWE2YTdkM2QzYmQyYWUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IE1vbiwgNyBKdWwgMjAyMCAyMToyMDoyOSArMDkwMApTdWJqZWN0OiBb UEFUQ0hdIEFkZCBhIGZ1bmN0aW9uIGV4cG9zaW5nIG1lbW9yeSB1c2FnZSBvZiBsb2NhbCBiYWNr ZW5kLgoKVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IFNRTC1jYWxsYWJsZSBmdW5jdGlvbgpw Z19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMgd2hpY2ggZXhwb3NlcyBtZW1vcnkgdXNhZ2Ug b2YgdGhlCmxvY2FsIGJhY2tlbmQuCkl0IGFsc28gYWRkcyBhIG5ldyB2aWV3IHBnX2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzIGZvciBleHBvc2luZwpsb2NhbCBiYWNrZW5kIG1lbW9yeSBjb250ZXh0 cy4KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgfCAxMjYgKysrKysr KysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs IHwgICAzICsKIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jICAgICAgICB8IDEzMiArKysr KysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQg ICAgICB8ICAgOSArKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgIHwgIDEw ICsrCiA1IGZpbGVzIGNoYW5nZWQsIDI3OSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbAppbmRleCAwMDNkMjc4MzcwLi4xNzQ3MTc2MTZiIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApA QCAtOTI0OCw2ICs5MjQ4LDExIEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVy YXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICA8ZW50 cnk+bWF0ZXJpYWxpemVkIHZpZXdzPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJ2aWV3LXBnLWJhY2tlbmQtbWVtb3J5LWNvbnRl eHRzIj48c3RydWN0bmFtZT5wZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0czwvc3RydWN0bmFtZT48 L2xpbms+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5iYWNrZW5kIG1lbW9yeSBjb250ZXh0czwvZW50 cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnk+PGxpbmsgbGlua2Vu ZD0idmlldy1wZy1wb2xpY2llcyI+PHN0cnVjdG5hbWU+cGdfcG9saWNpZXM8L3N0cnVjdG5hbWU+ PC9saW5rPjwvZW50cnk+CiAgICAgICA8ZW50cnk+cG9saWNpZXM8L2VudHJ5PgpAQCAtMTA1MjYs NiArMTA1MzEsMTI3IEBAIFNFTEVDVCAqIEZST00gcGdfbG9ja3MgcGwgTEVGVCBKT0lOIHBnX3By ZXBhcmVkX3hhY3RzIHBweAogCiAgPC9zZWN0MT4KIAorIDxzZWN0MSBpZD0idmlldy1wZy1iYWNr ZW5kLW1lbW9yeS1jb250ZXh0cyI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19iYWNrZW5kX21l bW9yeV9jb250ZXh0czwvc3RydWN0bmFtZT48L3RpdGxlPgorCisgIDxpbmRleHRlcm0gem9uZT0i dmlldy1wZy1iYWNrZW5kLW1lbW9yeS1jb250ZXh0cyI+CisgICA8cHJpbWFyeT5wZ19iYWNrZW5k X21lbW9yeV9jb250ZXh0czwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPGluZGV4dGVy bSB6b25lPSJ2aWV3LXBnLWJhY2tlbmQtbWVtb3J5LWNvbnRleHRzIj4KKyAgIDxwcmltYXJ5PmJh Y2tlbmQgbWVtb3J5IGNvbnRleHRzPC9wcmltYXJ5PgorICA8L2luZGV4dGVybT4KKworICA8cGFy YT4KKyAgIFRoZSB2aWV3IDxzdHJ1Y3RuYW1lPnBnX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzPC9z dHJ1Y3RuYW1lPiBkaXNwbGF5cyBhbGwKKyAgIHRoZSBsb2NhbCBiYWNrZW5kIG1lbW9yeSBjb250 ZXh0cy4KKyAgPC9wYXJhPgorICA8cGFyYT4KKyAgIDxzdHJ1Y3RuYW1lPnBnX2JhY2tlbmRfbWVt b3J5X2NvbnRleHRzPC9zdHJ1Y3RuYW1lPiBjb250YWlucyBvbmUgcm93CisgICBmb3IgZWFjaCBt ZW1vcnkgY29udGV4dC4KKyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0 bmFtZT5wZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0czwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0 bGU+CisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIERlc2NyaXB0aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+ CisgICAgPC90aGVhZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPm5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBl PgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTmFtZSBvZiB0aGUgbWVtb3J5 IGNvbnRleHQKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+aWRlbnQ8L3N0cnVjdGZpZWxk PiA8dHlwZT50ZXh0PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAg SWRlbnRpZmljYXRpb24gaW5mb3JtYXRpb24gb2YgdGhlIG1lbW9yeSBjb250ZXh0LiBUaGlzIGZp ZWxkIGlzIHRydW5jYXRlZCBhdCAxMDI0IGJ5dGVzCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZp ZWxkPnBhcmVudDwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CisgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoZSBwYXJlbnQgb2YgdGhpcyBtZW1vcnkg Y29udGV4dAorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5sZXZlbDwvc3RydWN0ZmllbGQ+ IDx0eXBlPmludDQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBE aXN0YW5jZSBmcm9tIFRvcE1lbW9yeUNvbnRleHQgaW4gY29udGV4dCB0cmVlCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Cisg ICAgICAgPHN0cnVjdGZpZWxkPnRvdGFsX2J5dGVzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRvdGFsIGJ5dGVzIGFs bG9jYXRlZCBmb3IgdGhpcyBtZW1vcnkgY29udGV4dAorICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD50b3RhbF9uYmxvY2tzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAg IDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRvdGFsIG51bWJlciBvZiBibG9ja3MgYWxs b2NhdGVkIGZvciB0aGlzIG1lbW9yeSBjb250ZXh0CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZp ZWxkPmZyZWVfYnl0ZXM8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9w YXJhPgorICAgICAgPHBhcmE+CisgICAgICAgRnJlZSBzcGFjZSBpbiBieXRlcworICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5mcmVlX2NodW5rczwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDg8 L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUb3RhbCBudW1iZXIg b2YgZnJlZSBjaHVua3MKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAg ICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dXNlZF9ieXRlczwv c3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFy YT4KKyAgICAgICBVc2VkIHNwYWNlIGluIGJ5dGVzCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorCisgPC9z ZWN0MT4KKwogIDxzZWN0MSBpZD0idmlldy1wZy1tYXR2aWV3cyI+CiAgIDx0aXRsZT48c3RydWN0 bmFtZT5wZ19tYXR2aWV3czwvc3RydWN0bmFtZT48L3RpdGxlPgogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV92aWV3cy5zcWwKaW5kZXggNTMxNGU5MzQ4Zi4uNDAzOTU0MDM5YiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtNTU0LDYgKzU1NCw5IEBAIENSRUFURSBWSUVXIHBn X3NobWVtX2FsbG9jYXRpb25zIEFTCiBSRVZPS0UgQUxMIE9OIHBnX3NobWVtX2FsbG9jYXRpb25z IEZST00gUFVCTElDOwogUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfZ2V0X3NobWVtX2Fs bG9jYXRpb25zKCkgRlJPTSBQVUJMSUM7CiAKK0NSRUFURSBWSUVXIHBnX2JhY2tlbmRfbWVtb3J5 X2NvbnRleHRzIEFTCisgICAgU0VMRUNUICogRlJPTSBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29u dGV4dHMoKTsKKwogLS0gU3RhdGlzdGljcyB2aWV3cwogCiBDUkVBVEUgVklFVyBwZ19zdGF0X2Fs bF90YWJsZXMgQVMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKaW5kZXggYWJkYTIyZmE1Ny4uN2Q4ZmY4NjVk NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKQEAgLTIxLDEyICsyMSwxMyBAQAogCiAjaW5jbHVkZSAi cG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hh ci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgi CiAjaW5jbHVkZSAidXRpbHMvbWVtZGVidWcuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5o IgogCi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoJICBHTE9CQUwgTUVNT1JZCQkJCQkJCQkJ CQkJCQkJICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTY3LDYgKzY4LDEyIEBAIHN0YXRp YyB2b2lkIE1lbW9yeUNvbnRleHRTdGF0c1ByaW50KE1lbW9yeUNvbnRleHQgY29udGV4dCwgdm9p ZCAqcGFzc3RocnUsCiAjZGVmaW5lIEFzc2VydE5vdEluQ3JpdGljYWxTZWN0aW9uKGNvbnRleHQp IFwKIAlBc3NlcnQoQ3JpdFNlY3Rpb25Db3VudCA9PSAwIHx8IChjb250ZXh0KS0+YWxsb3dJbkNy aXRTZWN0aW9uKQogCisvKiAtLS0tLS0tLS0tCisgKiBUaGUgbWF4IGJ5dGVzIGZvciBzaG93aW5n IGlkZW50aWZpZXJzIG9mIE1lbW9yeUNvbnRleHQuCisgKiAtLS0tLS0tLS0tCisgKi8KKyNkZWZp bmUgTUVNT1JZX0NPTlRFWFRfSURFTlRfRElTUExBWV9TSVpFCTEwMjQKKwogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCiAgKgkgIEVYUE9SVEVEIFJPVVRJTkVTCQkJCQkJCQkJCQkJCQkgKgogICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLwpAQCAtMTIyMCwzICsxMjI3LDEyNiBAQCBwY2hvbXAoY29uc3QgY2hh ciAqaW4pCiAJCW4tLTsKIAlyZXR1cm4gcG5zdHJkdXAoaW4sIG4pOwogfQorCisvKgorICogUHV0 TWVtb3J5Q29udGV4dHNTdGF0c1R1cGxlU3RvcmUKKyAqCQlPbmUgcmVjdXJzaW9uIGxldmVsIGZv ciBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMuCisgKi8KK3N0YXRpYyB2b2lkCitQdXRN ZW1vcnlDb250ZXh0c1N0YXRzVHVwbGVTdG9yZShUdXBsZXN0b3Jlc3RhdGUgKnR1cHN0b3JlLAor CQkJCQkJCQlUdXBsZURlc2MgdHVwZGVzYywgTWVtb3J5Q29udGV4dCBjb250ZXh0LAorCQkJCQkJ CQlNZW1vcnlDb250ZXh0IHBhcmVudCwgaW50IGxldmVsKQoreworI2RlZmluZSBQR19HRVRfQkFD S0VORF9NRU1PUllfQ09OVEVYVFNfQ09MUwk5CisJRGF0dW0JCXZhbHVlc1tQR19HRVRfQkFDS0VO RF9NRU1PUllfQ09OVEVYVFNfQ09MU107CisJYm9vbAkJbnVsbHNbUEdfR0VUX0JBQ0tFTkRfTUVN T1JZX0NPTlRFWFRTX0NPTFNdOworCU1lbW9yeUNvbnRleHRDb3VudGVycyBzdGF0OworCU1lbW9y eUNvbnRleHQgY2hpbGQ7CisJY29uc3QgY2hhciAqbmFtZSA9IGNvbnRleHQtPm5hbWU7CisJY29u c3QgY2hhciAqaWRlbnQgPSBjb250ZXh0LT5pZGVudDsKKworCWlmIChjb250ZXh0ID09IE5VTEwp CisJCXJldHVybjsKKworCS8qCisJICogVG8gYmUgY29uc2lzdGVudCB3aXRoIGxvZ2dpbmcgb3V0 cHV0LCB3ZSBsYWJlbCBkeW5haGFzaCBjb250ZXh0cworCSAqIHdpdGgganVzdCB0aGUgaGFzaCB0 YWJsZSBuYW1lIGFzIHdpdGggTWVtb3J5Q29udGV4dFN0YXRzUHJpbnQoKS4KKwkgKi8KKwlpZiAo aWRlbnQgJiYgc3RyY21wKG5hbWUsICJkeW5haGFzaCIpID09IDApCisJeworCQluYW1lID0gaWRl bnQ7CisJCWlkZW50ID0gTlVMTDsKKwl9CisKKwkvKiBFeGFtaW5lIHRoZSBjb250ZXh0IGl0c2Vs ZiAqLworCW1lbXNldCgmc3RhdCwgMCwgc2l6ZW9mKHN0YXQpKTsKKwkoKmNvbnRleHQtPm1ldGhv ZHMtPnN0YXRzKSAoY29udGV4dCwgTlVMTCwgKHZvaWQgKikgJmxldmVsLCAmc3RhdCk7CisKKwlt ZW1zZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJbWVtc2V0KG51bGxzLCAwLCBzaXpl b2YobnVsbHMpKTsKKworCXZhbHVlc1swXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0obmFtZSk7CisK KwlpZiAoaWRlbnQpCisJeworCQlpbnQJCWlkbGVuID0gc3RybGVuKGlkZW50KTsKKwkJY2hhcgkJ Y2xpcHBlZF9pZGVudFtNRU1PUllfQ09OVEVYVF9JREVOVF9ESVNQTEFZX1NJWkVdOworCisJCS8q CisJCSAqIFNvbWUgaWRlbnRpZmllcnMgc3VjaCBhcyBTUUwgcXVlcnkgc3RyaW5nIGNhbiBiZSB2 ZXJ5IGxvbmcsCisJCSAqIHRydW5jYXRlIG92ZXJzaXplIGlkZW50aWZpZXJzLgorCQkgKi8KKwkJ aWYgKGlkbGVuID49IE1FTU9SWV9DT05URVhUX0lERU5UX0RJU1BMQVlfU0laRSkKKwkJCWlkbGVu ID0gcGdfbWJjbGlwbGVuKGlkZW50LCBpZGxlbiwgTUVNT1JZX0NPTlRFWFRfSURFTlRfRElTUExB WV9TSVpFIC0gMSk7CisKKwkJbWVtY3B5KGNsaXBwZWRfaWRlbnQsIGlkZW50LCBpZGxlbik7CisJ CWNsaXBwZWRfaWRlbnRbaWRsZW5dID0gJ1wwJzsKKwkJdmFsdWVzWzFdID0gQ1N0cmluZ0dldFRl eHREYXR1bShjbGlwcGVkX2lkZW50KTsKKwl9CisJZWxzZQorCQludWxsc1sxXSA9IHRydWU7CisK KwlpZiAocGFyZW50ID09IE5VTEwpCisJCW51bGxzWzJdID0gdHJ1ZTsKKwllbHNlCisJCXZhbHVl c1syXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0ocGFyZW50LT5uYW1lKTsKKwl2YWx1ZXNbM10gPSBJ bnQzMkdldERhdHVtKGxldmVsKTsKKwl2YWx1ZXNbNF0gPSBJbnQ2NEdldERhdHVtKHN0YXQudG90 YWxzcGFjZSk7CisJdmFsdWVzWzVdID0gSW50NjRHZXREYXR1bShzdGF0Lm5ibG9ja3MpOworCXZh bHVlc1s2XSA9IEludDY0R2V0RGF0dW0oc3RhdC5mcmVlc3BhY2UpOworCXZhbHVlc1s3XSA9IElu dDY0R2V0RGF0dW0oc3RhdC5mcmVlY2h1bmtzKTsKKwl2YWx1ZXNbOF0gPSBJbnQ2NEdldERhdHVt KHN0YXQudG90YWxzcGFjZSAtIHN0YXQuZnJlZXNwYWNlKTsKKwl0dXBsZXN0b3JlX3B1dHZhbHVl cyh0dXBzdG9yZSwgdHVwZGVzYywgdmFsdWVzLCBudWxscyk7CisKKwlmb3IgKGNoaWxkID0gY29u dGV4dC0+Zmlyc3RjaGlsZDsgY2hpbGQgIT0gTlVMTDsgY2hpbGQgPSBjaGlsZC0+bmV4dGNoaWxk KQorCXsKKwkJUHV0TWVtb3J5Q29udGV4dHNTdGF0c1R1cGxlU3RvcmUodHVwc3RvcmUsIHR1cGRl c2MsCisJCQkJCQkJCSAgY2hpbGQsIGNvbnRleHQsIGxldmVsICsgMSk7CisJfQorfQorCisvKgor ICogcGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzCisgKgkJU1FMIFNSRiBzaG93aW5nIGJh Y2tlbmQgbWVtb3J5IGNvbnRleHQuCisgKi8KK0RhdHVtCitwZ19nZXRfYmFja2VuZF9tZW1vcnlf Y29udGV4dHMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAo UmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CisJVHVwbGVEZXNjCXR1cGRlc2M7 CisJVHVwbGVzdG9yZXN0YXRlICp0dXBzdG9yZTsKKwlNZW1vcnlDb250ZXh0IHBlcl9xdWVyeV9j dHg7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCisJLyogY2hlY2sgdG8gc2VlIGlmIGNh bGxlciBzdXBwb3J0cyB1cyByZXR1cm5pbmcgYSB0dXBsZXN0b3JlICovCisJaWYgKHJzaW5mbyA9 PSBOVUxMIHx8ICFJc0EocnNpbmZvLCBSZXR1cm5TZXRJbmZvKSkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1z Zygic2V0LXZhbHVlZCBmdW5jdGlvbiBjYWxsZWQgaW4gY29udGV4dCB0aGF0IGNhbm5vdCBhY2Nl cHQgYSBzZXQiKSkpOworCWlmICghKHJzaW5mby0+YWxsb3dlZE1vZGVzICYgU0ZSTV9NYXRlcmlh bGl6ZSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coIm1hdGVyaWFsaXplIG1vZGUgcmVxdWlyZWQsIGJ1 dCBpdCBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQiKSkpOworCisJLyogQnVpbGQgYSB0 dXBsZSBkZXNjcmlwdG9yIGZvciBvdXIgcmVzdWx0IHR5cGUgKi8KKwlpZiAoZ2V0X2NhbGxfcmVz dWx0X3R5cGUoZmNpbmZvLCBOVUxMLCAmdHVwZGVzYykgIT0gVFlQRUZVTkNfQ09NUE9TSVRFKQor CQllbG9nKEVSUk9SLCAicmV0dXJuIHR5cGUgbXVzdCBiZSBhIHJvdyB0eXBlIik7CisKKwlwZXJf cXVlcnlfY3R4ID0gcnNpbmZvLT5lY29udGV4dC0+ZWN4dF9wZXJfcXVlcnlfbWVtb3J5OworCW9s ZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGVyX3F1ZXJ5X2N0eCk7CisKKwl0dXBz dG9yZSA9IHR1cGxlc3RvcmVfYmVnaW5faGVhcCh0cnVlLCBmYWxzZSwgd29ya19tZW0pOworCXJz aW5mby0+cmV0dXJuTW9kZSA9IFNGUk1fTWF0ZXJpYWxpemU7CisJcnNpbmZvLT5zZXRSZXN1bHQg PSB0dXBzdG9yZTsKKwlyc2luZm8tPnNldERlc2MgPSB0dXBkZXNjOworCisJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJUHV0TWVtb3J5Q29udGV4dHNTdGF0c1R1cGxlU3Rv cmUodHVwc3RvcmUsIHR1cGRlc2MsCisJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQsIE5VTEwsIDAp OworCisJLyogY2xlYW4gdXAgYW5kIHJldHVybiB0aGUgdHVwbGVzdG9yZSAqLworCXR1cGxlc3Rv cmVfZG9uZXN0b3JpbmcodHVwc3RvcmUpOworCisJcmV0dXJuIChEYXR1bSkgMDsKK30KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CmluZGV4IDM4Mjk1YWNhNDguLjBhMjlhZTMwYmIgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtNzc5Nyw2ICs3Nzk3LDE1IEBACiAgIHByb2FyZ25hbWVzID0+ICd7 bmFtZSxvZmYsc2l6ZSxhbGxvY2F0ZWRfc2l6ZX0nLAogICBwcm9zcmMgPT4gJ3BnX2dldF9zaG1l bV9hbGxvY2F0aW9ucycgfSwKIAorIyBtZW1vcnkgY29udGV4dCBvZiBsb2NhbCBiYWNrZW5kCit7 IG9pZCA9PiAnMjI4MicsIGRlc2NyID0+ICdpbmZvcm1hdGlvbiBhYm91dCBhbGwgbWVtb3J5IGNv bnRleHRzIG9mIGxvY2FsIGJhY2tlbmQnLAorICBwcm9uYW1lID0+ICdwZ19nZXRfYmFja2VuZF9t ZW1vcnlfY29udGV4dHMnLCBwcm9yb3dzID0+ICcxMDAnLCBwcm9yZXRzZXQgPT4gJ3QnLAorICBw cm92b2xhdGlsZSA9PiAndicsIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAncmVj b3JkJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7dGV4dCx0ZXh0 LHRleHQsaW50NCxpbnQ4LGludDgsaW50OCxpbnQ4LGludDh9JywKKyAgcHJvYXJnbW9kZXMgPT4g J3tvLG8sbyxvLG8sbyxvLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAne25hbWUsIGlkZW50LCBw YXJlbnQsIGxldmVsLCB0b3RhbF9ieXRlcywgdG90YWxfbmJsb2NrcywgZnJlZV9ieXRlcywgZnJl ZV9jaHVua3MsIHVzZWRfYnl0ZXN9JywKKyAgcHJvc3JjID0+ICdwZ19nZXRfYmFja2VuZF9tZW1v cnlfY29udGV4dHMnIH0sCisKICMgbm9uLXBlcnNpc3RlbnQgc2VyaWVzIGdlbmVyYXRvcgogeyBv aWQgPT4gJzEwNjYnLCBkZXNjciA9PiAnbm9uLXBlcnNpc3RlbnQgc2VyaWVzIGdlbmVyYXRvcics CiAgIHByb25hbWUgPT4gJ2dlbmVyYXRlX3NlcmllcycsIHByb3Jvd3MgPT4gJzEwMDAnLApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCBiODEzZTMyMjE1Li4zMGFjMTk3YWY3IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTMyNCw2ICsxMzI0LDE2IEBAIHBn X2F2YWlsYWJsZV9leHRlbnNpb25zfCBTRUxFQ1QgZS5uYW1lLAogICAgIGUuY29tbWVudAogICAg RlJPTSAocGdfYXZhaWxhYmxlX2V4dGVuc2lvbnMoKSBlKG5hbWUsIGRlZmF1bHRfdmVyc2lvbiwg Y29tbWVudCkKICAgICAgTEVGVCBKT0lOIHBnX2V4dGVuc2lvbiB4IE9OICgoZS5uYW1lID0geC5l eHRuYW1lKSkpOworcGdfYmFja2VuZF9tZW1vcnlfY29udGV4dHN8IFNFTEVDVCBwZ19nZXRfYmFj a2VuZF9tZW1vcnlfY29udGV4dHMubmFtZSwKKyAgICBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29u dGV4dHMuaWRlbnQsCisgICAgcGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzLnBhcmVudCwK KyAgICBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMubGV2ZWwsCisgICAgcGdfZ2V0X2Jh Y2tlbmRfbWVtb3J5X2NvbnRleHRzLnRvdGFsX2J5dGVzLAorICAgIHBnX2dldF9iYWNrZW5kX21l bW9yeV9jb250ZXh0cy50b3RhbF9uYmxvY2tzLAorICAgIHBnX2dldF9iYWNrZW5kX21lbW9yeV9j b250ZXh0cy5mcmVlX2J5dGVzLAorICAgIHBnX2dldF9iYWNrZW5kX21lbW9yeV9jb250ZXh0cy5m cmVlX2NodW5rcywKKyAgICBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMudXNlZF9ieXRl cworICAgRlJPTSBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoKSBwZ19nZXRfYmFja2Vu ZF9tZW1vcnlfY29udGV4dHMobmFtZSwgaWRlbnQsIHBhcmVudCwgbGV2ZWwsIHRvdGFsX2J5dGVz LCB0b3RhbF9uYmxvY2tzLCBmcmVlX2J5dGVzLCBmcmVlX2NodW5rcywgdXNlZF9ieXRlcyk7CiBw Z19jb25maWd8IFNFTEVDVCBwZ19jb25maWcubmFtZSwKICAgICBwZ19jb25maWcuc2V0dGluZwog ICAgRlJPTSBwZ19jb25maWcoKSBwZ19jb25maWcobmFtZSwgc2V0dGluZyk7Ci0tIAoyLjE4LjEK Cg== --=_8336f778496343922484dd175ced9702--