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 1k7y7v-0008WH-K8 for pgsql-hackers@arkaria.postgresql.org; Tue, 18 Aug 2020 09:41:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1k7y7u-0007X3-IP for pgsql-hackers@arkaria.postgresql.org; Tue, 18 Aug 2020 09:41:54 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1k7y7u-0007Ww-2q for pgsql-hackers@lists.postgresql.org; Tue, 18 Aug 2020 09:41:54 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1k7y7q-0008G7-S3 for pgsql-hackers@postgresql.org; Tue, 18 Aug 2020 09:41:53 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTP id 95D29600F7; Tue, 18 Aug 2020 18:41:47 +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="=_71a75e816d0e382fd57cccf3e700f0f3" Date: Tue, 18 Aug 2020 18:41:47 +0900 From: torikoshia To: Fujii Masao Cc: PostgreSQL-development , Robert Haas , Kasahara Tatsuhito , Andres Freund , Michael Paquier Subject: Re: Creating a function for exposing memory usage of backend process In-Reply-To: <083781e2-339e-9844-a02c-53a0ee3beb82@oss.nttdata.com> References: <805313b5f7dc2e6c19b209ff930a7a61@oss.nttdata.com> <9ee242b1-9e70-18f5-0033-6a086e71164d@oss.nttdata.com> <3548926512ddfaedfb5eaf967bf2f196@oss.nttdata.com> <20200708170348.rsqry4b4k5mrsu7y@alap3.anarazel.de> <24ea05d7bbdb652feef50caee6fcfbf8@oss.nttdata.com> <20200808014409.GA1600@paquier.xyz> <66c9d45297ad820cd092b125aa91ce2c@oss.nttdata.com> <98e53274-253f-6bd1-b542-489ecbda8753@oss.nttdata.com> <083781e2-339e-9844-a02c-53a0ee3beb82@oss.nttdata.com> Message-ID: 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 --=_71a75e816d0e382fd57cccf3e700f0f3 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed On 2020-08-17 21:19, Fujii Masao wrote: > On 2020/08/17 21:14, Fujii Masao wrote: >>> On 2020-08-07 16:38, Kasahara Tatsuhito wrote: >>>> The following review has been posted through the commitfest >>>> application: >>>> make installcheck-world:  tested, passed >>>> Implements feature:       tested, passed >>>> Spec compliant:           not tested >>>> Documentation:            tested, passed >>>> >>>> I tested the latest >>>> patch(0007-Adding-a-function-exposing-memory-usage-of-local-backend.patch) >>>> with the latest PG-version >>>> (199cec9779504c08aaa8159c6308283156547409) >>>> and test was passed. >>>> It looks good to me. >>>> >>>> The new status of this patch is: Ready for Committer >>> >>> Thanks for your testing! >> >> Thanks for updating the patch! Here are the review comments. Thanks for reviewing! >> >> +     >> +      > linkend="view-pg-backend-memory-contexts">pg_backend_memory_contexts >> +      backend memory contexts >> +     >> >> The above is located just after pg_matviews entry. But it should be >> located >> just after pg_available_extension_versions entry. Because the rows in >> the table >> "System Views" should be located in alphabetical order. >> >> >> + >> +  <structname>pg_backend_memory_contexts</structname> >> >> Same as above. Modified both. >> >> >> +   The view pg_backend_memory_contexts >> displays all >> +   the local backend memory contexts. >> >> This description seems a bit confusing because maybe we can interpret >> this >> as "... displays the memory contexts of all the local backends" >> wrongly. Thought? >> What about the following description, instead? >>     The view pg_backend_memory_contexts >> displays all >>     the memory contexts of the server process attached to the current >> session. Thanks! it seems better. >> +    const char *name = context->name; >> +    const char *ident = context->ident; >> + >> +    if (context == NULL) >> +        return; >> >> The above check "context == NULL" is useless? If "context" is actually >> NULL, >> "context->name" would cause segmentation fault, so ISTM that the check >> will never be performed. >> >> If "context" can be NULL, the check should be performed before >> accessing >> to "contect". OTOH, if "context" must not be NULL per the >> specification of >> PutMemoryContextStatsTupleStore(), assertion test checking >> "context != NULL" should be used here, instead? Yeah, "context" cannot be NULL because "context" must be TopMemoryContext or it is already checked as not NULL as follows(child != NULL). I added the assertion check. | for (child = context->firstchild; child != NULL; child = child->nextchild) | { | ... | PutMemoryContextsStatsTupleStore(tupstore, tupdesc, | child, parentname, level + 1); | } > Here is another comment. > > + if (parent == NULL) > + nulls[2] = true; > + else > + /* > + * We labeled dynahash contexts with just the hash table > name. > + * To make it possible to identify its parent, we also > display > + * parent's ident here. > + */ > + if (parent->ident && strcmp(parent->name, "dynahash") == > 0) > + values[2] = CStringGetTextDatum(parent->ident); > + else > + values[2] = CStringGetTextDatum(parent->name); > > PutMemoryContextsStatsTupleStore() doesn't need "parent" memory > context, > but uses only the name of "parent" memory context. So isn't it better > to use > "const char *parent" instead of "MemoryContext parent", as the argument > of > the function? If we do that, we can simplify the above code. Thanks, the attached patch adopted the advice. However, since PutMemoryContextsStatsTupleStore() used not only the name but also the ident of the "parent", I could not help but adding similar codes before calling the function. The total amount of codes and complexity seem not to change so much. Any thoughts? Am I misunderstanding something? Regards, -- Atsushi Torikoshi NTT DATA CORPORATION --=_71a75e816d0e382fd57cccf3e700f0f3 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0008-Adding-a-function-exposing-memory-usage-of-local-backend.patch Content-Disposition: attachment; filename*0*=UTF-8''0008-Adding-a-function-exposing-memory-usage-of-local-; filename*1*=backend.patch; size=12796 RnJvbSAwNTVhZjkwM2EzZGJmMTQ2ZDk3ZGQzZmIwMWE2YTdkM2QzYmQyYWUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFR1ZSwgMTggQXVnIDIwMjAgMTg6MTc6NDIgKzA5MDAKU3ViamVjdDog W1BBVENIXSBBZGQgYSBmdW5jdGlvbiBleHBvc2luZyBtZW1vcnkgdXNhZ2Ugb2YgbG9jYWwgYmFj a2VuZC4KIHBnX2dldF9iYWNrZW5kX21lbW9yeV9jb250ZXh0cyB3aGljaCBleHBvc2VzIG1lbW9y eSB1c2FnZSBvZiB0aGUgbG9jYWwKIGJhY2tlbmQuIEl0IGFsc28gYWRkcyBhIG5ldyB2aWV3IHBn X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzIGZvciBleHBvc2luZwogbG9jYWwgYmFja2VuZCBtZW1v cnkgY29udGV4dHMuCgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICB8 IDEyMiArKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwgfCAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMgICAgICAgIHwg MTQ3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdCAgICAgIHwgICA5ICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dCAgfCAgMTAgKysKIDUgZmlsZXMgY2hhbmdlZCwgMjkxIGluc2VydGlvbnMoKykKCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sCmluZGV4IGZjMzI5YzVjZmYuLjEyMzJiMjRlNzQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC05MjI2 LDYgKzkyMjYsMTEgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBj b3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgIDxlbnRyeT5hdmFp bGFibGUgdmVyc2lvbnMgb2YgZXh0ZW5zaW9uczwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAg IDxyb3c+CisgICAgICA8ZW50cnk+PGxpbmsgbGlua2VuZD0idmlldy1wZy1iYWNrZW5kLW1lbW9y eS1jb250ZXh0cyI+PHN0cnVjdG5hbWU+cGdfYmFja2VuZF9tZW1vcnlfY29udGV4dHM8L3N0cnVj dG5hbWU+PC9saW5rPjwvZW50cnk+CisgICAgICA8ZW50cnk+YmFja2VuZCBtZW1vcnkgY29udGV4 dHM8L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5PjxsaW5r IGxpbmtlbmQ9InZpZXctcGctY29uZmlnIj48c3RydWN0bmFtZT5wZ19jb25maWc8L3N0cnVjdG5h bWU+PC9saW5rPjwvZW50cnk+CiAgICAgICA8ZW50cnk+Y29tcGlsZS10aW1lIGNvbmZpZ3VyYXRp b24gcGFyYW1ldGVyczwvZW50cnk+CkBAIC05NTc3LDYgKzk1ODIsMTIzIEBAIFNDUkFNLVNIQS0y NTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJl cGxhY2VhYmxlPiZsCiAgIDwvcGFyYT4KICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJ2aWV3LXBn LWJhY2tlbmQtbWVtb3J5LWNvbnRleHRzIj4KKyAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2JhY2tl bmRfbWVtb3J5X2NvbnRleHRzPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6 b25lPSJ2aWV3LXBnLWJhY2tlbmQtbWVtb3J5LWNvbnRleHRzIj4KKyAgIDxwcmltYXJ5PnBnX2Jh Y2tlbmRfbWVtb3J5X2NvbnRleHRzPC9wcmltYXJ5PgorICA8L2luZGV4dGVybT4KKworICA8cGFy YT4KKyAgIFRoZSB2aWV3IDxzdHJ1Y3RuYW1lPnBnX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzPC9z dHJ1Y3RuYW1lPiBkaXNwbGF5cyBhbGwKKyAgIHRoZSBtZW1vcnkgY29udGV4dHMgb2YgdGhlIHNl cnZlciBwcm9jZXNzIGF0dGFjaGVkIHRvIHRoZSBjdXJyZW50IHNlc3Npb24uCisgIDwvcGFyYT4K KyAgPHBhcmE+CisgICA8c3RydWN0bmFtZT5wZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0czwvc3Ry dWN0bmFtZT4gY29udGFpbnMgb25lIHJvdworICAgZm9yIGVhY2ggbWVtb3J5IGNvbnRleHQuCisg IDwvcGFyYT4KKworICA8dGFibGU+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfYmFja2VuZF9t ZW1vcnlfY29udGV4dHM8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgorICAgPHRncm91cCBj b2xzPSIxIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0 YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAg IENvbHVtbiBUeXBlCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBEZXNjcmlw dGlvbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisK KyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD5uYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KKyAgICAgIDwvcGFyYT4K KyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2YgdGhlIG1lbW9yeSBjb250ZXh0CisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPmlkZW50PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIElkZW50aWZpY2F0aW9uIGlu Zm9ybWF0aW9uIG9mIHRoZSBtZW1vcnkgY29udGV4dC4gVGhpcyBmaWVsZCBpcyB0cnVuY2F0ZWQg YXQgMTAyNCBieXRlcworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wYXJlbnQ8L3N0cnVj dGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICAgTmFtZSBvZiB0aGUgcGFyZW50IG9mIHRoaXMgbWVtb3J5IGNvbnRleHQKKyAgICAgIDwv cGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4K KyAgICAgICA8c3RydWN0ZmllbGQ+bGV2ZWw8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ0PC90eXBl PgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgRGlzdGFuY2UgZnJvbSBUb3BN ZW1vcnlDb250ZXh0IGluIGNvbnRleHQgdHJlZQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVs ZD50b3RhbF9ieXRlczwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUb3RhbCBieXRlcyBhbGxvY2F0ZWQgZm9yIHRoaXMg bWVtb3J5IGNvbnRleHQKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAg ICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dG90YWxfbmJsb2Nr czwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8 cGFyYT4KKyAgICAgICBUb3RhbCBudW1iZXIgb2YgYmxvY2tzIGFsbG9jYXRlZCBmb3IgdGhpcyBt ZW1vcnkgY29udGV4dAorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5mcmVlX2J5dGVzPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIEZyZWUgc3BhY2UgaW4gYnl0ZXMKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0Zmll bGQ+ZnJlZV9jaHVua3M8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9w YXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVG90YWwgbnVtYmVyIG9mIGZyZWUgY2h1bmtzCisg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnVzZWRfYnl0ZXM8L3N0cnVjdGZpZWxkPiA8dHlw ZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVXNlZCBz cGFjZSBpbiBieXRlcworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwv dGJvZHk+CisgICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKworIDwvc2VjdDE+CisKICA8c2VjdDEg aWQ9InZpZXctcGctY29uZmlnIj4KICAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2NvbmZpZzwvc3Ry dWN0bmFtZT48L3RpdGxlPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXgg ODYyNWNiZWFiNi4uYmE1YTIzYWMyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bApAQCAtNTU0LDYgKzU1NCw5IEBAIENSRUFURSBWSUVXIHBnX3NobWVtX2FsbG9jYXRpb25zIEFT CiBSRVZPS0UgQUxMIE9OIHBnX3NobWVtX2FsbG9jYXRpb25zIEZST00gUFVCTElDOwogUkVWT0tF IEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zKCkgRlJPTSBQVUJM SUM7CiAKK0NSRUFURSBWSUVXIHBnX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzIEFTCisgICAgU0VM RUNUICogRlJPTSBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoKTsKKwogLS0gU3RhdGlz dGljcyB2aWV3cwogCiBDUkVBVEUgVklFVyBwZ19zdGF0X2FsbF90YWJsZXMgQVMKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1n ci9tY3h0LmMKaW5kZXggYWJkYTIyZmE1Ny4uZDRmYzJhZWQ5MyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0 LmMKQEAgLTIxLDggKzIxLDEwIEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVk ZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW1k ZWJ1Zy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKQEAgLTY3LDYgKzY5LDEyIEBA IHN0YXRpYyB2b2lkIE1lbW9yeUNvbnRleHRTdGF0c1ByaW50KE1lbW9yeUNvbnRleHQgY29udGV4 dCwgdm9pZCAqcGFzc3RocnUsCiAjZGVmaW5lIEFzc2VydE5vdEluQ3JpdGljYWxTZWN0aW9uKGNv bnRleHQpIFwKIAlBc3NlcnQoQ3JpdFNlY3Rpb25Db3VudCA9PSAwIHx8IChjb250ZXh0KS0+YWxs b3dJbkNyaXRTZWN0aW9uKQogCisvKiAtLS0tLS0tLS0tCisgKiBUaGUgbWF4IGJ5dGVzIGZvciBz aG93aW5nIGlkZW50aWZpZXJzIG9mIE1lbW9yeUNvbnRleHQuCisgKiAtLS0tLS0tLS0tCisgKi8K KyNkZWZpbmUgTUVNT1JZX0NPTlRFWFRfSURFTlRfRElTUExBWV9TSVpFCTEwMjQKKwogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCiAgKgkgIEVYUE9SVEVEIFJPVVRJTkVTCQkJCQkJCQkJCQkJCQkgKgog ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLwpAQCAtMTIyMCwzICsxMjI4LDE0MiBAQCBwY2hvbXAoY29u c3QgY2hhciAqaW4pCiAJCW4tLTsKIAlyZXR1cm4gcG5zdHJkdXAoaW4sIG4pOwogfQorCisvKgor ICogUHV0TWVtb3J5Q29udGV4dHNTdGF0c1R1cGxlU3RvcmUKKyAqCQlPbmUgcmVjdXJzaW9uIGxl dmVsIGZvciBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMuCisgKi8KK3N0YXRpYyB2b2lk CitQdXRNZW1vcnlDb250ZXh0c1N0YXRzVHVwbGVTdG9yZShUdXBsZXN0b3Jlc3RhdGUgKnR1cHN0 b3JlLAorCQkJCQkJCQlUdXBsZURlc2MgdHVwZGVzYywgTWVtb3J5Q29udGV4dCBjb250ZXh0LAor CQkJCQkJCQljb25zdCBjaGFyICpwYXJlbnQsIGludCBsZXZlbCkKK3sKKyNkZWZpbmUgUEdfR0VU X0JBQ0tFTkRfTUVNT1JZX0NPTlRFWFRTX0NPTFMJOQorCisJRGF0dW0JCXZhbHVlc1tQR19HRVRf QkFDS0VORF9NRU1PUllfQ09OVEVYVFNfQ09MU107CisJYm9vbAkJbnVsbHNbUEdfR0VUX0JBQ0tF TkRfTUVNT1JZX0NPTlRFWFRTX0NPTFNdOworCU1lbW9yeUNvbnRleHRDb3VudGVycyBzdGF0Owor CU1lbW9yeUNvbnRleHQgY2hpbGQ7CisJY29uc3QgY2hhciAqbmFtZTsKKwljb25zdCBjaGFyICpp ZGVudDsKKworCUFzc2VydChjb250ZXh0ICE9IE5VTEwpOworCisJbmFtZSA9IGNvbnRleHQtPm5h bWU7CisJaWRlbnQgPSBjb250ZXh0LT5pZGVudDsKKworCS8qCisJICogVG8gYmUgY29uc2lzdGVu dCB3aXRoIGxvZ2dpbmcgb3V0cHV0LCB3ZSBsYWJlbCBkeW5haGFzaCBjb250ZXh0cworCSAqIHdp dGgganVzdCB0aGUgaGFzaCB0YWJsZSBuYW1lIGFzIHdpdGggTWVtb3J5Q29udGV4dFN0YXRzUHJp bnQoKS4KKwkgKi8KKwlpZiAoaWRlbnQgJiYgc3RyY21wKG5hbWUsICJkeW5haGFzaCIpID09IDAp CisJeworCQluYW1lID0gaWRlbnQ7CisJCWlkZW50ID0gTlVMTDsKKwl9CisKKwkvKiBFeGFtaW5l IHRoZSBjb250ZXh0IGl0c2VsZiAqLworCW1lbXNldCgmc3RhdCwgMCwgc2l6ZW9mKHN0YXQpKTsK KwkoKmNvbnRleHQtPm1ldGhvZHMtPnN0YXRzKSAoY29udGV4dCwgTlVMTCwgKHZvaWQgKikgJmxl dmVsLCAmc3RhdCk7CisKKwltZW1zZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJbWVt c2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKKworCXZhbHVlc1swXSA9IENTdHJpbmdHZXRU ZXh0RGF0dW0obmFtZSk7CisKKwlpZiAoaWRlbnQpCisJeworCQlpbnQJCWlkbGVuID0gc3RybGVu KGlkZW50KTsKKwkJY2hhcgkJY2xpcHBlZF9pZGVudFtNRU1PUllfQ09OVEVYVF9JREVOVF9ESVNQ TEFZX1NJWkVdOworCisJCS8qCisJCSAqIFNvbWUgaWRlbnRpZmllcnMgc3VjaCBhcyBTUUwgcXVl cnkgc3RyaW5nIGNhbiBiZSB2ZXJ5IGxvbmcsCisJCSAqIHRydW5jYXRlIG92ZXJzaXplIGlkZW50 aWZpZXJzLgorCQkgKi8KKwkJaWYgKGlkbGVuID49IE1FTU9SWV9DT05URVhUX0lERU5UX0RJU1BM QVlfU0laRSkKKwkJCWlkbGVuID0gcGdfbWJjbGlwbGVuKGlkZW50LCBpZGxlbiwgTUVNT1JZX0NP TlRFWFRfSURFTlRfRElTUExBWV9TSVpFIC0gMSk7CisKKwkJbWVtY3B5KGNsaXBwZWRfaWRlbnQs IGlkZW50LCBpZGxlbik7CisJCWNsaXBwZWRfaWRlbnRbaWRsZW5dID0gJ1wwJzsKKwkJdmFsdWVz WzFdID0gQ1N0cmluZ0dldFRleHREYXR1bShjbGlwcGVkX2lkZW50KTsKKwl9CisJZWxzZQorCQlu dWxsc1sxXSA9IHRydWU7CisKKwlpZiAocGFyZW50ID09IE5VTEwpCisJCW51bGxzWzJdID0gdHJ1 ZTsKKwllbHNlCisJCXZhbHVlc1syXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0ocGFyZW50KTsKKwor CXZhbHVlc1szXSA9IEludDMyR2V0RGF0dW0obGV2ZWwpOworCXZhbHVlc1s0XSA9IEludDY0R2V0 RGF0dW0oc3RhdC50b3RhbHNwYWNlKTsKKwl2YWx1ZXNbNV0gPSBJbnQ2NEdldERhdHVtKHN0YXQu bmJsb2Nrcyk7CisJdmFsdWVzWzZdID0gSW50NjRHZXREYXR1bShzdGF0LmZyZWVzcGFjZSk7CisJ dmFsdWVzWzddID0gSW50NjRHZXREYXR1bShzdGF0LmZyZWVjaHVua3MpOworCXZhbHVlc1s4XSA9 IEludDY0R2V0RGF0dW0oc3RhdC50b3RhbHNwYWNlIC0gc3RhdC5mcmVlc3BhY2UpOworCXR1cGxl c3RvcmVfcHV0dmFsdWVzKHR1cHN0b3JlLCB0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKTsKKworCWZv ciAoY2hpbGQgPSBjb250ZXh0LT5maXJzdGNoaWxkOyBjaGlsZCAhPSBOVUxMOyBjaGlsZCA9IGNo aWxkLT5uZXh0Y2hpbGQpCisJeworCQljb25zdCBjaGFyICpwYXJlbnRuYW1lOworCisJCS8qCisJ CSAqIFdlIGxhYmVsZWQgZHluYWhhc2ggY29udGV4dHMgd2l0aCBqdXN0IHRoZSBoYXNoIHRhYmxl IG5hbWUuCisJCSAqIFRvIG1ha2UgaXQgcG9zc2libGUgdG8gaWRlbnRpZnkgaXRzIHBhcmVudCwg d2UgYWxzbyB1c2UKKwkJICogdGhlIGhhc2ggdGFibGUgYXMgaXRzIGNvbnRleHQgbmFtZS4KKwkJ ICovCisJCWlmIChjb250ZXh0LT5pZGVudCAmJiBzdHJjbXAoY29udGV4dC0+bmFtZSwgImR5bmFo YXNoIikgPT0gMCkKKwkJCXBhcmVudG5hbWUgPSBjb250ZXh0LT5pZGVudDsKKwkJZWxzZQorCQkJ cGFyZW50bmFtZSA9IGNvbnRleHQtPm5hbWU7CisKKwkJUHV0TWVtb3J5Q29udGV4dHNTdGF0c1R1 cGxlU3RvcmUodHVwc3RvcmUsIHR1cGRlc2MsCisJCQkJCQkJCSAgY2hpbGQsIHBhcmVudG5hbWUs IGxldmVsICsgMSk7CisJfQorfQorCisvKgorICogcGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRl eHRzCisgKgkJU1FMIFNSRiBzaG93aW5nIGJhY2tlbmQgbWVtb3J5IGNvbnRleHQuCisgKi8KK0Rh dHVtCitwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoUEdfRlVOQ1RJT05fQVJHUykKK3sK KwlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3Vs dGluZm87CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJVHVwbGVzdG9yZXN0YXRlICp0dXBzdG9yZTsK KwlNZW1vcnlDb250ZXh0IHBlcl9xdWVyeV9jdHg7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0 OworCisJLyogY2hlY2sgdG8gc2VlIGlmIGNhbGxlciBzdXBwb3J0cyB1cyByZXR1cm5pbmcgYSB0 dXBsZXN0b3JlICovCisJaWYgKHJzaW5mbyA9PSBOVUxMIHx8ICFJc0EocnNpbmZvLCBSZXR1cm5T ZXRJbmZvKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygic2V0LXZhbHVlZCBmdW5jdGlvbiBjYWxsZWQg aW4gY29udGV4dCB0aGF0IGNhbm5vdCBhY2NlcHQgYSBzZXQiKSkpOworCWlmICghKHJzaW5mby0+ YWxsb3dlZE1vZGVzICYgU0ZSTV9NYXRlcmlhbGl6ZSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coIm1h dGVyaWFsaXplIG1vZGUgcmVxdWlyZWQsIGJ1dCBpdCBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNv bnRleHQiKSkpOworCisJLyogQnVpbGQgYSB0dXBsZSBkZXNjcmlwdG9yIGZvciBvdXIgcmVzdWx0 IHR5cGUgKi8KKwlpZiAoZ2V0X2NhbGxfcmVzdWx0X3R5cGUoZmNpbmZvLCBOVUxMLCAmdHVwZGVz YykgIT0gVFlQRUZVTkNfQ09NUE9TSVRFKQorCQllbG9nKEVSUk9SLCAicmV0dXJuIHR5cGUgbXVz dCBiZSBhIHJvdyB0eXBlIik7CisKKwlwZXJfcXVlcnlfY3R4ID0gcnNpbmZvLT5lY29udGV4dC0+ ZWN4dF9wZXJfcXVlcnlfbWVtb3J5OworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8ocGVyX3F1ZXJ5X2N0eCk7CisKKwl0dXBzdG9yZSA9IHR1cGxlc3RvcmVfYmVnaW5faGVhcCh0 cnVlLCBmYWxzZSwgd29ya19tZW0pOworCXJzaW5mby0+cmV0dXJuTW9kZSA9IFNGUk1fTWF0ZXJp YWxpemU7CisJcnNpbmZvLT5zZXRSZXN1bHQgPSB0dXBzdG9yZTsKKwlyc2luZm8tPnNldERlc2Mg PSB0dXBkZXNjOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJUHV0 TWVtb3J5Q29udGV4dHNTdGF0c1R1cGxlU3RvcmUodHVwc3RvcmUsIHR1cGRlc2MsCisJCQkJCQkJ CVRvcE1lbW9yeUNvbnRleHQsIE5VTEwsIDApOworCisJLyogY2xlYW4gdXAgYW5kIHJldHVybiB0 aGUgdHVwbGVzdG9yZSAqLworCXR1cGxlc3RvcmVfZG9uZXN0b3JpbmcodHVwc3RvcmUpOworCisJ cmV0dXJuIChEYXR1bSkgMDsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDA4MmExMWYy NzAuLjI3OTg5OTcxZGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNzgwNyw2ICs3ODA3 LDE1IEBACiAgIHByb2FyZ25hbWVzID0+ICd7bmFtZSxvZmYsc2l6ZSxhbGxvY2F0ZWRfc2l6ZX0n LAogICBwcm9zcmMgPT4gJ3BnX2dldF9zaG1lbV9hbGxvY2F0aW9ucycgfSwKIAorIyBtZW1vcnkg Y29udGV4dCBvZiBsb2NhbCBiYWNrZW5kCit7IG9pZCA9PiAnMjI4MicsIGRlc2NyID0+ICdpbmZv cm1hdGlvbiBhYm91dCBhbGwgbWVtb3J5IGNvbnRleHRzIG9mIGxvY2FsIGJhY2tlbmQnLAorICBw cm9uYW1lID0+ICdwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMnLCBwcm9yb3dzID0+ICcx MDAnLCBwcm9yZXRzZXQgPT4gJ3QnLAorICBwcm92b2xhdGlsZSA9PiAndicsIHByb3BhcmFsbGVs ID0+ICdyJywgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHBy b2FsbGFyZ3R5cGVzID0+ICd7dGV4dCx0ZXh0LHRleHQsaW50NCxpbnQ4LGludDgsaW50OCxpbnQ4 LGludDh9JywKKyAgcHJvYXJnbW9kZXMgPT4gJ3tvLG8sbyxvLG8sbyxvLG8sb30nLAorICBwcm9h cmduYW1lcyA9PiAne25hbWUsIGlkZW50LCBwYXJlbnQsIGxldmVsLCB0b3RhbF9ieXRlcywgdG90 YWxfbmJsb2NrcywgZnJlZV9ieXRlcywgZnJlZV9jaHVua3MsIHVzZWRfYnl0ZXN9JywKKyAgcHJv c3JjID0+ICdwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMnIH0sCisKICMgbm9uLXBlcnNp c3RlbnQgc2VyaWVzIGdlbmVyYXRvcgogeyBvaWQgPT4gJzEwNjYnLCBkZXNjciA9PiAnbm9uLXBl cnNpc3RlbnQgc2VyaWVzIGdlbmVyYXRvcicsCiAgIHByb25hbWUgPT4gJ2dlbmVyYXRlX3Nlcmll cycsIHByb3Jvd3MgPT4gJzEwMDAnLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRl eCA2MDE3MzRhNmYxLi4yYTE4ZGM0MjNlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dApAQCAtMTMyNCw2ICsxMzI0LDE2IEBAIHBnX2F2YWlsYWJsZV9leHRlbnNpb25zfCBTRUxFQ1Qg ZS5uYW1lLAogICAgIGUuY29tbWVudAogICAgRlJPTSAocGdfYXZhaWxhYmxlX2V4dGVuc2lvbnMo KSBlKG5hbWUsIGRlZmF1bHRfdmVyc2lvbiwgY29tbWVudCkKICAgICAgTEVGVCBKT0lOIHBnX2V4 dGVuc2lvbiB4IE9OICgoZS5uYW1lID0geC5leHRuYW1lKSkpOworcGdfYmFja2VuZF9tZW1vcnlf Y29udGV4dHN8IFNFTEVDVCBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMubmFtZSwKKyAg ICBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMuaWRlbnQsCisgICAgcGdfZ2V0X2JhY2tl bmRfbWVtb3J5X2NvbnRleHRzLnBhcmVudCwKKyAgICBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29u dGV4dHMubGV2ZWwsCisgICAgcGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzLnRvdGFsX2J5 dGVzLAorICAgIHBnX2dldF9iYWNrZW5kX21lbW9yeV9jb250ZXh0cy50b3RhbF9uYmxvY2tzLAor ICAgIHBnX2dldF9iYWNrZW5kX21lbW9yeV9jb250ZXh0cy5mcmVlX2J5dGVzLAorICAgIHBnX2dl dF9iYWNrZW5kX21lbW9yeV9jb250ZXh0cy5mcmVlX2NodW5rcywKKyAgICBwZ19nZXRfYmFja2Vu ZF9tZW1vcnlfY29udGV4dHMudXNlZF9ieXRlcworICAgRlJPTSBwZ19nZXRfYmFja2VuZF9tZW1v cnlfY29udGV4dHMoKSBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMobmFtZSwgaWRlbnQs IHBhcmVudCwgbGV2ZWwsIHRvdGFsX2J5dGVzLCB0b3RhbF9uYmxvY2tzLCBmcmVlX2J5dGVzLCBm cmVlX2NodW5rcywgdXNlZF9ieXRlcyk7CiBwZ19jb25maWd8IFNFTEVDVCBwZ19jb25maWcubmFt ZSwKICAgICBwZ19jb25maWcuc2V0dGluZwogICAgRlJPTSBwZ19jb25maWcoKSBwZ19jb25maWco bmFtZSwgc2V0dGluZyk7Ci0tIAoyLjE4LjEKCg== --=_71a75e816d0e382fd57cccf3e700f0f3--