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 1u2qIK-006jO4-RE for pgsql-committers@arkaria.postgresql.org; Thu, 10 Apr 2025 11:42:09 +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 1u2qII-00As17-UP for pgsql-committers@arkaria.postgresql.org; Thu, 10 Apr 2025 11:42:07 +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 1u2qII-00As0x-JO for pgsql-committers@lists.postgresql.org; Thu, 10 Apr 2025 11:42:07 +0000 Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1u2qIG-004Vta-1l for pgsql-committers@lists.postgresql.org; Thu, 10 Apr 2025 11:42:06 +0000 Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-5edc07c777eso932914a12.3 for ; Thu, 10 Apr 2025 04:42:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cybertec.at; s=google; t=1744285323; x=1744890123; darn=lists.postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:to:from:subject :message-id:from:to:cc:subject:date:message-id:reply-to; bh=ot0HCwiZcw7SAFulZtkd6EKEjB4r+RwjvixMryHJAZ4=; b=fsJmyrvxkD6oapvT7xzABxNF4qvM6UdNz4WigZfbpJ7eVCIWCUES89Lync33xOhGHw gXLNdNdY2ocr+Y+OJpqFU+UJWYTfSJuJnw5ngz83EnGO/RpGNu0RF2IWnb6tO/XAoZf+ J3m9onZk88UYMQU3oEBhlqMixA2gBTMY80F0PfinW21/rPTRrBc6tlchACw6qiughNmA WeucASdoUMMqHvBqyCjiV5x8HvrH89mFrvrr5lc9dVZntQE6P7Galb4O9OLr4ZaediuV BBIV3bblLFNpMj57efEHLf9Mc4IzWJKoO5ZW/3+2yp9TsHsaYTizrB8ZjLfZBiatD9S7 UkvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744285323; x=1744890123; h=mime-version:user-agent:references:in-reply-to:date:to:from:subject :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ot0HCwiZcw7SAFulZtkd6EKEjB4r+RwjvixMryHJAZ4=; b=nJZh8ce6f+mN7A9nVzv6yZz+jvhHZECwPYIicbkgktBNAknQlD8AQOurBUsDb/SfrS 7P/DzQZ4U6hdK5qORSs5hHxRGa1mnd2H72+rjmo4stPWmyQFUojZvSP7IYVe0r36Vycj 9JNIHoUv7t0xmchP0KuZMis6hWkcZlGwlj+yBCFqmVJsDKvHBSsa/772RQzRjqGF+KRh 75LP6RVzqbjelKU4JHDeFWdQwwQJAevqWnPGstyKJbqRvxM/c2k2pZsBUTYkIG0wUPor c2RNMLQLDv2kSTxj9PFe1lV3p6ZULk7MDIxBfjexPc2iFzDdmbFvLfH+dtXN+gpjV4Qy 6hgg== X-Forwarded-Encrypted: i=1; AJvYcCUt+f7k+/3VUEiywR/w/j7DRyFp1ZcPXqJLvaLkqEgBAiCQmX/qIRye8BT6ywVTaLpxJ1O//vkg5F0EYklEYezK@lists.postgresql.org X-Gm-Message-State: AOJu0Yzz3cbtlE0ZvYcWsdPwZxvVRQgOIk+fr6XQib9EdAHJdVPeWjsS +/ddJtFd/cmnyx9y7SW1kiJTAAiladTVJPsuNfkpMKRioyJiEqGu/BVIsVpixjDZi6oUcOyZj2l d X-Gm-Gg: ASbGncsNhXuEoBD5EEm/qJg1xvk+VHaRGVxT7/YiPaGSOnlYRQ3+0MnoeeTZbBxBAZx gMziANTp+tNU4DrFJUHxr3moqVZYLrcoq1bJFOawTFszmZ7e2DkOTUkjdRuCoyFRoYeEH94zRYA 9Go9SErVqyodR/PPV2Q7z1xTv5x/SCNVCB4bnpX0u7nVOk1WYLR+XnwXcKQL6WpAnCqbF2Yep1a aN76Iki0OAL8JYrJHnblvgpKvKz8UK83dcWgZ4dvzdA1Kkf6SQSAS57LZLpPSiYRqwGvmo3JWpU Km1GvCnMZQvvuRX8OTxnDSlq9L+A3/Zv/71XccEi6YJLEdjKWfpVMtxKTik= X-Google-Smtp-Source: AGHT+IGLv4PR61jdWfZ6LF0CLX6Dfe/fKlGI6yQGPYZZz3Oq9yjX4lr/qOLcuqls/8V48ks7EUtkmg== X-Received: by 2002:a05:6402:2791:b0:5f3:26bd:1e27 with SMTP id 4fb4d7f45d1cf-5f32933735cmr1875062a12.31.1744285323465; Thu, 10 Apr 2025 04:42:03 -0700 (PDT) Received: from localhost.localdomain ([2001:871:5e:1ab7:3e39:bdc1:195:d94b]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5f2fbbac068sm2155186a12.3.2025.04.10.04.42.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Apr 2025 04:42:03 -0700 (PDT) Message-ID: Subject: Re: pgsql: Add function to get memory context stats for processes From: Laurenz Albe To: Daniel Gustafsson , pgsql-committers@lists.postgresql.org Date: Thu, 10 Apr 2025 13:42:02 +0200 In-Reply-To: References: Content-Type: multipart/mixed; boundary="=-oK0dmUrvOt1oltEt8Bb7" User-Agent: Evolution 3.54.3 (3.54.3-1.fc41) MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-oK0dmUrvOt1oltEt8Bb7 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 2025-04-08 at 09:10 +0000, Daniel Gustafsson wrote: > Add function to get memory context stats for processes >=20 > This adds a function for retrieving memory context statistics > and information from backends as well as auxiliary processes. > The intended usecase is cluster debugging when under memory > pressure or unanticipated memory usage characteristics. >=20 > Discussion: https://postgr.es/m/CAH2L28v8mc9HDt8QoSJ8TRmKau_8FM_HKS41NeO9= -6ZAkuZKXw@mail.gmail.com >=20 > Details > ------- > https://git.postgresql.org/pg/commitdiff/042a66291b04f473cbc72f95f07438ab= d75ae3a9 > > [from the patch:] > diff --git a/src/include/storage/procsignal.h b/src/include/storage/procs= ignal.h > index 016dfd9b3f6..cfe14631445 100644 > --- a/src/include/storage/procsignal.h > +++ b/src/include/storage/procsignal.h > [...] > +extern dsa_area *area; This commit causes problems for PostGIS, because the name "area" collides with a PostGIS object: postgis_legacy.c:58:28: error: =E2=80=98area=E2=80=99 redeclared as differe= nt kind of symbol 58 | POSTGIS_DEPRECATE("3.0.0", area) | ^~~~ postgis_legacy.c:40:15: note: in definition of macro =E2=80=98POSTGIS_DEPRE= CATE=E2=80=99 40 | Datum funcname(PG_FUNCTION_ARGS); \ | ^~~~~~~~ In file included from ../libpgcommon/lwgeom_pg.h:24, from postgis_legacy.c:37: /home/laurenz/pg/include/postgresql/server/utils/memutils.h:403:18: note: p= revious declaration of =E2=80=98area=E2=80=99 with type =E2=80=98dsa_area *= =E2=80=99 403 | extern dsa_area *area; | ^~~~ Now one can take the position that PostGIS as dependent library hs to adapt, but I think "area" is too generic a name. Could you envision renaming the global variable to something like "shm_area"? Attached is a patch for this change. I am not wedded to the name at all, it was just the first thing that popped into my head. Yours, Laurenz Albe --=-oK0dmUrvOt1oltEt8Bb7 Content-Disposition: attachment; filename*0=v1-0001-Rename-a-global-variable-to-avoid-name-collisions.pat; filename*1=ch Content-Type: text/x-patch; name="v1-0001-Rename-a-global-variable-to-avoid-name-collisions.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA5YTIwN2Q3NmQ0YjFiYmU1OTA0YmYzNDZjNjYyMTMyNGE5ZGQ3MzU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXVyZW56IEFsYmUgPGxhdXJlbnouYWxiZUBjeWJlcnRlYy5h dD4KRGF0ZTogVGh1LCAxMCBBcHIgMjAyNSAxMzozODoxMCArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djFdIFJlbmFtZSBhIGdsb2JhbCB2YXJpYWJsZSB0byBhdm9pZCBuYW1lIGNvbGxpc2lvbnMKCiJh cmVhIiwgaW50cm9kdWNlZCBieSAwNDJhNjYyOTFiMDQsIGlzIGEgdmVyeSBnZW5lcmljIG5hbWUs IGFuZAppbmRlZWQgaXQgY29sbGlkZXMgd2l0aCBhbiBvYmplY3QgZGVmaW5lZCBieSBQb3N0R0lT LgpXaGlsZSBpdCBpcyBhcmd1YWJseSB0aGUgam9iIG9mIHRoZSBkZXBlbmRlbnQgbGlicmFyeSB0 byBhdm9pZCBuYW1lCmNvbGxpc2lvbnMsIHVzaW5nIGEgZ2VuZXJpYyBuYW1lIGxpa2UgdGhhdCBp cyBqdXN0IGFuIGludml0YXRpb24KZm9yIHByb2JsZW1zIG9mIHRoYXQga2luZC4KCkZpeCBieSBy ZW5hbWluZyB0aGUgdmFyaWFibGUgdG8gInNobV9hcmVhIi4KLS0tCiBzcmMvYmFja2VuZC91dGls cy9hZHQvbWN4dGZ1bmNzLmMgfCAxNCArKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvbW1n ci9tY3h0LmMgICAgIHwgNDAgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogc3JjL2lu Y2x1ZGUvdXRpbHMvbWVtdXRpbHMuaCAgICAgIHwgIDIgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMjgg aW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L21jeHRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5j CmluZGV4IDNlZGU4OGU1MDM2Li4xNTRlYTM4ZmRjMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L21jeHRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVu Y3MuYwpAQCAtNTMzLDIxICs1MzMsMjEgQEAgcGdfZ2V0X3Byb2Nlc3NfbWVtb3J5X2NvbnRleHRz KFBHX0ZVTkNUSU9OX0FSR1MpCiAJICovCiAJQXNzZXJ0KG1lbUN4dEFyZWEtPm1lbXN0YXRzX2Rz YV9oYW5kbGUgIT0gRFNBX0hBTkRMRV9JTlZBTElEKTsKIAkvKiBBdHRhY2ggdG8gdGhlIGRzYSBh cmVhIGlmIHdlIGhhdmUgbm90IGFscmVhZHkgZG9uZSBzbyAqLwotCWlmIChhcmVhID09IE5VTEwp CisJaWYgKHNobV9hcmVhID09IE5VTEwpCiAJewogCQlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQg PSBDdXJyZW50TWVtb3J5Q29udGV4dDsKIAogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8oVG9wTWVt b3J5Q29udGV4dCk7Ci0JCWFyZWEgPSBkc2FfYXR0YWNoKG1lbUN4dEFyZWEtPm1lbXN0YXRzX2Rz YV9oYW5kbGUpOworCQlzaG1fYXJlYSA9IGRzYV9hdHRhY2gobWVtQ3h0QXJlYS0+bWVtc3RhdHNf ZHNhX2hhbmRsZSk7CiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKLQkJZHNh X3Bpbl9tYXBwaW5nKGFyZWEpOworCQlkc2FfcGluX21hcHBpbmcoc2htX2FyZWEpOwogCX0KIAog CS8qCiAJICogQmFja2VuZCBoYXMgZmluaXNoZWQgcHVibGlzaGluZyB0aGUgc3RhdHMsIHByb2pl Y3QgdGhlbS4KIAkgKi8KIAltZW1jeHRfaW5mbyA9IChNZW1vcnlTdGF0c0VudHJ5ICopCi0JCWRz YV9nZXRfYWRkcmVzcyhhcmVhLCBtZW1DeHRTdGF0ZVtwcm9jTnVtYmVyXS5tZW1zdGF0c19kc2Ff cG9pbnRlcik7CisJCWRzYV9nZXRfYWRkcmVzcyhzaG1fYXJlYSwgbWVtQ3h0U3RhdGVbcHJvY051 bWJlcl0ubWVtc3RhdHNfZHNhX3BvaW50ZXIpOwogCiAjZGVmaW5lIFBHX0dFVF9QUk9DRVNTX01F TU9SWV9DT05URVhUU19DT0xTCTEyCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBtZW1DeHRTdGF0ZVtw cm9jTnVtYmVyXS50b3RhbF9zdGF0czsgaSsrKQpAQCAtNTY2LDcgKzU2Niw3IEBAIHBnX2dldF9w cm9jZXNzX21lbW9yeV9jb250ZXh0cyhQR19GVU5DVElPTl9BUkdTKQogCiAJCWlmIChEc2FQb2lu dGVySXNWYWxpZChtZW1jeHRfaW5mb1tpXS5uYW1lKSkKIAkJewotCQkJbmFtZSA9IChjaGFyICop IGRzYV9nZXRfYWRkcmVzcyhhcmVhLCBtZW1jeHRfaW5mb1tpXS5uYW1lKTsKKwkJCW5hbWUgPSAo Y2hhciAqKSBkc2FfZ2V0X2FkZHJlc3Moc2htX2FyZWEsIG1lbWN4dF9pbmZvW2ldLm5hbWUpOwog CQkJdmFsdWVzWzBdID0gQ1N0cmluZ0dldFRleHREYXR1bShuYW1lKTsKIAkJfQogCQllbHNlCkBA IC01NzQsNyArNTc0LDcgQEAgcGdfZ2V0X3Byb2Nlc3NfbWVtb3J5X2NvbnRleHRzKFBHX0ZVTkNU SU9OX0FSR1MpCiAKIAkJaWYgKERzYVBvaW50ZXJJc1ZhbGlkKG1lbWN4dF9pbmZvW2ldLmlkZW50 KSkKIAkJewotCQkJaWRlbnQgPSAoY2hhciAqKSBkc2FfZ2V0X2FkZHJlc3MoYXJlYSwgbWVtY3h0 X2luZm9baV0uaWRlbnQpOworCQkJaWRlbnQgPSAoY2hhciAqKSBkc2FfZ2V0X2FkZHJlc3Moc2ht X2FyZWEsIG1lbWN4dF9pbmZvW2ldLmlkZW50KTsKIAkJCXZhbHVlc1sxXSA9IENTdHJpbmdHZXRU ZXh0RGF0dW0oaWRlbnQpOwogCQl9CiAJCWVsc2UKQEAgLTU4Niw3ICs1ODYsNyBAQCBwZ19nZXRf cHJvY2Vzc19tZW1vcnlfY29udGV4dHMoUEdfRlVOQ1RJT05fQVJHUykKIAkJcGF0aF9kYXR1bSA9 IChEYXR1bSAqKSBwYWxsb2MocGF0aF9sZW5ndGggKiBzaXplb2YoRGF0dW0pKTsKIAkJaWYgKERz YVBvaW50ZXJJc1ZhbGlkKG1lbWN4dF9pbmZvW2ldLnBhdGgpKQogCQl7Ci0JCQlwYXRoX2ludCA9 IChpbnQgKikgZHNhX2dldF9hZGRyZXNzKGFyZWEsIG1lbWN4dF9pbmZvW2ldLnBhdGgpOworCQkJ cGF0aF9pbnQgPSAoaW50ICopIGRzYV9nZXRfYWRkcmVzcyhzaG1fYXJlYSwgbWVtY3h0X2luZm9b aV0ucGF0aCk7CiAJCQlmb3IgKGludCBqID0gMDsgaiA8IHBhdGhfbGVuZ3RoOyBqKyspCiAJCQkJ cGF0aF9kYXR1bVtqXSA9IEludDMyR2V0RGF0dW0ocGF0aF9pbnRbal0pOwogCQkJcGF0aF9hcnJh eSA9IGNvbnN0cnVjdF9hcnJheV9idWlsdGluKHBhdGhfZGF0dW0sIHBhdGhfbGVuZ3RoLCBJTlQ0 T0lEKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKaW5kZXggY2Y0ZTIyYmYxY2MuLmYzMmVkNzk2N2Q5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9tbWdyL21jeHQuYwpAQCAtMTcyLDcgKzE3Miw3IEBAIE1lbW9yeUNvbnRleHQgQ3Vy VHJhbnNhY3Rpb25Db250ZXh0ID0gTlVMTDsKIAogLyogVGhpcyBpcyBhIHRyYW5zaWVudCBsaW5r IHRvIHRoZSBhY3RpdmUgcG9ydGFsJ3MgbWVtb3J5IGNvbnRleHQ6ICovCiBNZW1vcnlDb250ZXh0 IFBvcnRhbENvbnRleHQgPSBOVUxMOwotZHNhX2FyZWEgICAqYXJlYSA9IE5VTEw7Citkc2FfYXJl YSAgICpzaG1fYXJlYSA9IE5VTEw7CiAKIHN0YXRpYyB2b2lkIE1lbW9yeUNvbnRleHREZWxldGVP bmx5KE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBzdGF0aWMgdm9pZCBNZW1vcnlDb250ZXh0Q2Fs bFJlc2V0Q2FsbGJhY2tzKE1lbW9yeUNvbnRleHQgY29udGV4dCk7CkBAIC0xNDk5LDE5ICsxNDk5 LDE5IEBAIFByb2Nlc3NHZXRNZW1vcnlDb250ZXh0SW50ZXJydXB0KHZvaWQpCiAKIAkJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKFRvcE1lbW9yeUNvbnRleHQpOwogCi0JCWFyZWEgPSBkc2FfY3JlYXRl KG1lbUN4dEFyZWEtPmx3X2xvY2sudHJhbmNoZSk7CisJCXNobV9hcmVhID0gZHNhX2NyZWF0ZSht ZW1DeHRBcmVhLT5sd19sb2NrLnRyYW5jaGUpOwogCi0JCWhhbmRsZSA9IGRzYV9nZXRfaGFuZGxl KGFyZWEpOworCQloYW5kbGUgPSBkc2FfZ2V0X2hhbmRsZShzaG1fYXJlYSk7CiAJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAotCQlkc2FfcGluX21hcHBpbmcoYXJlYSk7CisJ CWRzYV9waW5fbWFwcGluZyhzaG1fYXJlYSk7CiAKIAkJLyoKIAkJICogUGluIHRoZSBEU0EgYXJl YSwgdGhpcyBpcyB0byBtYWtlIHN1cmUgdGhlIGFyZWEgcmVtYWlucyBhdHRhY2hhYmxlCiAJCSAq IGV2ZW4gaWYgY3VycmVudCBiYWNrZW5kIGV4aXRzLiBUaGlzIGlzIGRvbmUgc28gdGhhdCB0aGUg c3RhdGlzdGljcwogCQkgKiBhcmUgcHVibGlzaGVkIGV2ZW4gaWYgdGhlIHByb2Nlc3MgZXhpdHMg d2hpbGUgYSBjbGllbnQgaXMgd2FpdGluZy4KIAkJICovCi0JCWRzYV9waW4oYXJlYSk7CisJCWRz YV9waW4oc2htX2FyZWEpOwogCiAJCS8qIFNldCB0aGUgaGFuZGxlIGluIHNoYXJlZCBtZW1vcnkg Ki8KIAkJbWVtQ3h0QXJlYS0+bWVtc3RhdHNfZHNhX2hhbmRsZSA9IGhhbmRsZTsKQEAgLTE1MjEs MTQgKzE1MjEsMTQgQEAgUHJvY2Vzc0dldE1lbW9yeUNvbnRleHRJbnRlcnJ1cHQodm9pZCkKIAkg KiBJZiBEU0EgZXhpc3RzLCBjcmVhdGVkIGJ5IGFub3RoZXIgcHJvY2VzcyBwdWJsaXNoaW5nIHN0 YXRpc3RpY3MsIGF0dGFjaAogCSAqIHRvIGl0LgogCSAqLwotCWVsc2UgaWYgKGFyZWEgPT0gTlVM TCkKKwllbHNlIGlmIChzaG1fYXJlYSA9PSBOVUxMKQogCXsKIAkJTWVtb3J5Q29udGV4dCBvbGRj b250ZXh0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRv KFRvcE1lbW9yeUNvbnRleHQpOwotCQlhcmVhID0gZHNhX2F0dGFjaChtZW1DeHRBcmVhLT5tZW1z dGF0c19kc2FfaGFuZGxlKTsKKwkJc2htX2FyZWEgPSBkc2FfYXR0YWNoKG1lbUN4dEFyZWEtPm1l bXN0YXRzX2RzYV9oYW5kbGUpOwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7 Ci0JCWRzYV9waW5fbWFwcGluZyhhcmVhKTsKKwkJZHNhX3Bpbl9tYXBwaW5nKHNobV9hcmVhKTsK IAl9CiAJTFdMb2NrUmVsZWFzZSgmbWVtQ3h0QXJlYS0+bHdfbG9jayk7CiAKQEAgLTE1NDUsNyAr MTU0NSw3IEBAIFByb2Nlc3NHZXRNZW1vcnlDb250ZXh0SW50ZXJydXB0KHZvaWQpCiAJCSAqIEZy ZWUgYW55IHByZXZpb3VzIGFsbG9jYXRpb25zLCBmcmVlIHRoZSBuYW1lLCBpZGVudCBhbmQgcGF0 aAogCQkgKiBwb2ludGVycyBiZWZvcmUgZnJlZWluZyB0aGUgcG9pbnRlciB0aGF0IGNvbnRhaW5z IHRoZW0uCiAJCSAqLwotCQlmcmVlX21lbW9yeWNvbnRleHRzdGF0ZV9kc2EoYXJlYSwgbWVtQ3h0 U3RhdGVbaWR4XS50b3RhbF9zdGF0cywKKwkJZnJlZV9tZW1vcnljb250ZXh0c3RhdGVfZHNhKHNo bV9hcmVhLCBtZW1DeHRTdGF0ZVtpZHhdLnRvdGFsX3N0YXRzLAogCQkJCQkJCQkJbWVtQ3h0U3Rh dGVbaWR4XS5tZW1zdGF0c19kc2FfcG9pbnRlcik7CiAJfQogCkBAIC0xNTU2LDEwICsxNTU2LDEw IEBAIFByb2Nlc3NHZXRNZW1vcnlDb250ZXh0SW50ZXJydXB0KHZvaWQpCiAJICovCiAJbWVtQ3h0 U3RhdGVbaWR4XS50b3RhbF9zdGF0cyA9IHN0YXRzX251bTsKIAltZW1DeHRTdGF0ZVtpZHhdLm1l bXN0YXRzX2RzYV9wb2ludGVyID0KLQkJZHNhX2FsbG9jYXRlMChhcmVhLCBzdGF0c19udW0gKiBz aXplb2YoTWVtb3J5U3RhdHNFbnRyeSkpOworCQlkc2FfYWxsb2NhdGUwKHNobV9hcmVhLCBzdGF0 c19udW0gKiBzaXplb2YoTWVtb3J5U3RhdHNFbnRyeSkpOwogCiAJbWVtaW5mbyA9IChNZW1vcnlT dGF0c0VudHJ5ICopCi0JCWRzYV9nZXRfYWRkcmVzcyhhcmVhLCBtZW1DeHRTdGF0ZVtpZHhdLm1l bXN0YXRzX2RzYV9wb2ludGVyKTsKKwkJZHNhX2dldF9hZGRyZXNzKHNobV9hcmVhLCBtZW1DeHRT dGF0ZVtpZHhdLm1lbXN0YXRzX2RzYV9wb2ludGVyKTsKIAogCWlmIChzdW1tYXJ5KQogCXsKQEAg LTE1NzIsNyArMTU3Miw3IEBAIFByb2Nlc3NHZXRNZW1vcnlDb250ZXh0SW50ZXJydXB0KHZvaWQp CiAJCQkJCQkJCQkJCSAmc3RhdCwgdHJ1ZSk7CiAJCXBhdGggPSBsY29uc19pbnQoMSwgcGF0aCk7 CiAJCVB1Ymxpc2hNZW1vcnlDb250ZXh0KG1lbWluZm8sIGN4dF9pZCwgVG9wTWVtb3J5Q29udGV4 dCwgcGF0aCwgc3RhdCwKLQkJCQkJCQkgMSwgYXJlYSwgMTAwKTsKKwkJCQkJCQkgMSwgc2htX2Fy ZWEsIDEwMCk7CiAJCWN4dF9pZCA9IGN4dF9pZCArIDE7CiAKIAkJLyoKQEAgLTE2MDIsNyArMTYw Miw3IEBAIFByb2Nlc3NHZXRNZW1vcnlDb250ZXh0SW50ZXJydXB0KHZvaWQpCiAJCQkgKi8KIAkJ CW1lbUN4dFN0YXRlW2lkeF0udG90YWxfc3RhdHMgPSBjeHRfaWQrKzsKIAkJCVB1Ymxpc2hNZW1v cnlDb250ZXh0KG1lbWluZm8sIGN4dF9pZCwgYywgcGF0aCwKLQkJCQkJCQkJIGdyYW5kX3RvdGFs cywgbnVtX2NvbnRleHRzLCBhcmVhLCAxMDApOworCQkJCQkJCQkgZ3JhbmRfdG90YWxzLCBudW1f Y29udGV4dHMsIHNobV9hcmVhLCAxMDApOwogCQl9CiAJCW1lbUN4dFN0YXRlW2lkeF0udG90YWxf c3RhdHMgPSBjeHRfaWQ7CiAKQEAgLTE2MzIsNyArMTYzMiw3IEBAIFByb2Nlc3NHZXRNZW1vcnlD b250ZXh0SW50ZXJydXB0KHZvaWQpCiAJCWlmIChjb250ZXh0X2lkIDwgKG1heF9zdGF0cyAtIDEp IHx8IHN0YXRzX2NvdW50IDw9IG1heF9zdGF0cykKIAkJewogCQkJLyogQ29weSBzdGF0aXN0aWNz IHRvIERTQSBtZW1vcnkgKi8KLQkJCVB1Ymxpc2hNZW1vcnlDb250ZXh0KG1lbWluZm8sIGNvbnRl eHRfaWQsIGN1ciwgcGF0aCwgc3RhdCwgMSwgYXJlYSwgMTAwKTsKKwkJCVB1Ymxpc2hNZW1vcnlD b250ZXh0KG1lbWluZm8sIGNvbnRleHRfaWQsIGN1ciwgcGF0aCwgc3RhdCwgMSwgc2htX2FyZWEs IDEwMCk7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC0xNjU3LDggKzE2NTcsOCBAQCBQcm9jZXNzR2V0 TWVtb3J5Q29udGV4dEludGVycnVwdCh2b2lkKQogCQkJaW50CQkJbmFtZWxlbiA9IHN0cmxlbigi UmVtYWluaW5nIFRvdGFscyIpOwogCiAJCQludW1faW5kaXZpZHVhbF9zdGF0cyA9IGNvbnRleHRf aWQgKyAxOwotCQkJbWVtaW5mb1ttYXhfc3RhdHMgLSAxXS5uYW1lID0gZHNhX2FsbG9jYXRlKGFy ZWEsIG5hbWVsZW4gKyAxKTsKLQkJCW5hbWVwdHIgPSBkc2FfZ2V0X2FkZHJlc3MoYXJlYSwgbWVt aW5mb1ttYXhfc3RhdHMgLSAxXS5uYW1lKTsKKwkJCW1lbWluZm9bbWF4X3N0YXRzIC0gMV0ubmFt ZSA9IGRzYV9hbGxvY2F0ZShzaG1fYXJlYSwgbmFtZWxlbiArIDEpOworCQkJbmFtZXB0ciA9IGRz YV9nZXRfYWRkcmVzcyhzaG1fYXJlYSwgbWVtaW5mb1ttYXhfc3RhdHMgLSAxXS5uYW1lKTsKIAkJ CXN0cm5jcHkobmFtZXB0ciwgIlJlbWFpbmluZyBUb3RhbHMiLCBuYW1lbGVuKTsKIAkJCW1lbWlu Zm9bbWF4X3N0YXRzIC0gMV0uaWRlbnQgPSBJbnZhbGlkRHNhUG9pbnRlcjsKIAkJCW1lbWluZm9b bWF4X3N0YXRzIC0gMV0ucGF0aCA9IEludmFsaWREc2FQb2ludGVyOwpAQCAtMTkyMSwxOCArMTky MSwxOCBAQCBBdFByb2NFeGl0X21lbXN0YXRzX2NsZWFudXAoaW50IGNvZGUsIERhdHVtIGFyZykK IAl9CiAKIAkvKiBJZiB0aGUgZHNhIG1hcHBpbmcgY291bGQgbm90IGJlIGZvdW5kLCBhdHRhY2gg dG8gdGhlIGFyZWEgKi8KLQlpZiAoYXJlYSA9PSBOVUxMKQotCQlhcmVhID0gZHNhX2F0dGFjaCht ZW1DeHRBcmVhLT5tZW1zdGF0c19kc2FfaGFuZGxlKTsKKwlpZiAoc2htX2FyZWEgPT0gTlVMTCkK KwkJc2htX2FyZWEgPSBkc2FfYXR0YWNoKG1lbUN4dEFyZWEtPm1lbXN0YXRzX2RzYV9oYW5kbGUp OwogCiAJLyoKIAkgKiBGcmVlIHRoZSBtZW1vcnkgY29udGV4dCBzdGF0aXN0aWNzLCBmcmVlIHRo ZSBuYW1lLCBpZGVudCBhbmQgcGF0aAogCSAqIHBvaW50ZXJzIGJlZm9yZSBmcmVlaW5nIHRoZSBw b2ludGVyIHRoYXQgY29udGFpbnMgdGhlc2UgcG9pbnRlcnMgYW5kCiAJICogaW50ZWdlciBzdGF0 aXN0aWNzLgogCSAqLwotCWZyZWVfbWVtb3J5Y29udGV4dHN0YXRlX2RzYShhcmVhLCBtZW1DeHRT dGF0ZVtpZHhdLnRvdGFsX3N0YXRzLAorCWZyZWVfbWVtb3J5Y29udGV4dHN0YXRlX2RzYShzaG1f YXJlYSwgbWVtQ3h0U3RhdGVbaWR4XS50b3RhbF9zdGF0cywKIAkJCQkJCQkJbWVtQ3h0U3RhdGVb aWR4XS5tZW1zdGF0c19kc2FfcG9pbnRlcik7CiAKLQlkc2FfZGV0YWNoKGFyZWEpOworCWRzYV9k ZXRhY2goc2htX2FyZWEpOwogCUxXTG9ja1JlbGVhc2UoJm1lbUN4dFN0YXRlW2lkeF0ubHdfbG9j ayk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL21lbXV0aWxzLmggYi9zcmMv aW5jbHVkZS91dGlscy9tZW11dGlscy5oCmluZGV4IGQzMjgyNzBmYWZjLi43OWZiNDMwMjEzOSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbWVtdXRpbHMuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9tZW11dGlscy5oCkBAIC00MDAsNSArNDAwLDUgQEAgZXh0ZXJuIHZvaWQgSGFuZGxl R2V0TWVtb3J5Q29udGV4dEludGVycnVwdCh2b2lkKTsKIGV4dGVybiBTaXplIE1lbW9yeUNvbnRl eHRSZXBvcnRpbmdTaG1lbVNpemUodm9pZCk7CiBleHRlcm4gdm9pZCBNZW1vcnlDb250ZXh0UmVw b3J0aW5nU2htZW1Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQXRQcm9jRXhpdF9tZW1zdGF0c19j bGVhbnVwKGludCBjb2RlLCBEYXR1bSBhcmcpOwotZXh0ZXJuIGRzYV9hcmVhICphcmVhOworZXh0 ZXJuIGRzYV9hcmVhICpzaG1fYXJlYTsKICNlbmRpZgkJCQkJCQkvKiBNRU1VVElMU19IICovCi0t IAoyLjQ5LjAKCg== --=-oK0dmUrvOt1oltEt8Bb7--