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 1oqVqk-0007Oh-FH for pgsql-hackers@arkaria.postgresql.org; Thu, 03 Nov 2022 08:45:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oqVqj-0005Ib-6x for pgsql-hackers@arkaria.postgresql.org; Thu, 03 Nov 2022 08:45:21 +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 1oqVqi-0005IR-Q4 for pgsql-hackers@lists.postgresql.org; Thu, 03 Nov 2022 08:45:20 +0000 Received: from mail-lf1-x12c.google.com ([2a00:1450:4864:20::12c]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1oqVqc-0002GB-9b for pgsql-hackers@lists.postgresql.org; Thu, 03 Nov 2022 08:45:20 +0000 Received: by mail-lf1-x12c.google.com with SMTP id c1so25348lfi.7 for ; Thu, 03 Nov 2022 01:45:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=cF+2GTcG8RhEiUO7+ueiIKvVpp/QCyIZtMhC3qkYOvI=; b=dA964BEld3ddxAc/K5Dlguq5tcTbhWi6DISlOIK59WJ3SgYsm61A7RLeq/698CjtpF wzKy9MZ6kpv1gDCinrhJp1YYL0tYATg6T4e/uDWf31bOgsRfFkaNauCdHqE2/xMw0V7v dLNm8HCGW1N6upmN5XUrMahcZM5SXdK6BdjJsJjSYxeLWandS4LRf6aiSfpvF4v8YFHU G2ULUfjrVwz60QPxLSt4y5oG4xoNJX3yn4kZZiUgytVTenOtU5DmmphwZX+4dpk2cpDe RxrcsO3M6K1EuPNW4/+dCSC56VLu1Z25979wwUz9lFKFl7SqW3xSyeXlPnlsEUxwR22m 1NPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=cF+2GTcG8RhEiUO7+ueiIKvVpp/QCyIZtMhC3qkYOvI=; b=Vd4vMthD0vw+X5NfsOT5A4ys/TlTEMJXLziUPOLXgXENh5XNL/dqA5ku+o9bU/iW+P oKSOj3AxTs8qzQlVWjjzWMbZOO5Ma8Y6/HArMnfULtO8TWBMuEMxkwTa5s5k3q6Gd1gS 91lJF0MhWw3nBOZQTIs/quQvxi9ZNcCMNdoHUme22ciIhhX4hPLNA81gVKds4MshiAMp qu7eo93FMEepzUW+cKiWqWtyyvxsJBHzl6T72pEYZHlRTX2xLtMsBSEYXw2t4BAzVEsE nYEiuIv8S4gieCow9MTU2s4YoGLY+lGvkW0TcolSaSfPjCuLHvw3GGDJiZiUgAwH/L31 F/lw== X-Gm-Message-State: ACrzQf03y07F3c50gA15HwzsvghXS3a0Z1daU6/Sckb7ZXZxV49gfqvw VUUJSgyLQ2NXRW+iZ4VlK5I= X-Google-Smtp-Source: AMsMyM4cx11A6DSG3HLr4o0Eu3wqp+SXrZ3odORSd2Vc/A1loke0XSof4evExctIwC3juae/42S4Jw== X-Received: by 2002:a05:6512:6d4:b0:4a2:f89:db7d with SMTP id u20-20020a05651206d400b004a20f89db7dmr10527498lff.125.1667465112275; Thu, 03 Nov 2022 01:45:12 -0700 (PDT) Received: from [192.168.28.144] (cyclops.postgrespro.ru. [93.174.131.138]) by smtp.gmail.com with ESMTPSA id t27-20020a19911b000000b004a95d5098f2sm45212lfd.226.2022.11.03.01.45.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Nov 2022 01:45:11 -0700 (PDT) Message-ID: <83d682e61ee79925db600bbbd9f62182471f49b4.camel@gmail.com> Subject: Re: Segfault on logical replication to partitioned table with foreign children From: Ilya Gladyshev To: Tom Lane Cc: "shiy.fnst@fujitsu.com" , Dilip Kumar , "pgsql-hackers@lists.postgresql.org" Date: Thu, 03 Nov 2022 12:45:08 +0400 In-Reply-To: <1787918.1667407062@sss.pgh.pa.us> References: <6b93e3748ba43298694f376ca8797279d7945e29.camel@gmail.com> <188734.1667137161@sss.pgh.pa.us> <04b5212cd549ee3c8efc63f6a92d85d5463bfdf1.camel@gmail.com> <1361869.1667329814@sss.pgh.pa.us> <1787918.1667407062@sss.pgh.pa.us> Content-Type: multipart/mixed; boundary="=-BCTAYhEkTmRz8GNdBsrG" User-Agent: Evolution 3.38.3-1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-BCTAYhEkTmRz8GNdBsrG Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit On Wed, 2022-11-02 at 12:37 -0400, Tom Lane wrote: > Since we're getting pretty close to the next set of back-branch > releases, > I went ahead and pushed a minimal fix along the lines suggested by > Shi Yu. > (I realized that there's a second ExecFindPartition call in worker.c > that > also needs a check.)  We still can at leisure think about refactoring > CheckSubscriptionRelkind to avoid unnecessary lookups.  I think that > is something we should do only in HEAD; it'll just be a marginal > savings, > not worth the risks of API changes in stable branches.  The other > loose > end is whether to worry about a regression test case.  I'm inclined > not > to bother.  The only thing that isn't getting exercised is the actual > ereport, which probably isn't in great need of routine testing. > >                         regards, tom lane I agree that early checks limit some of the functionality that was available before, so I guess the only way to preserve it is to do only the last-minute checks after routing, fair enough. As for the refactoring of the premature lookup, I have done some work on that in the previous patch, I think we can just use it. Attached a separate patch with the refactoring. --=-BCTAYhEkTmRz8GNdBsrG Content-Disposition: attachment; filename="0001-Delay-namespace-and-relname-lookups-until-error.patch" Content-Type: text/x-patch; name="0001-Delay-namespace-and-relname-lookups-until-error.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAwMDRjNjNhOGViYTc3N2JlNzM5ZjA2MmNkYzliN2RkY2YyZWFjMjUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbHlhIEdsYWR5c2hldiA8aWx5YS52LmdsYWR5c2hldkBnbWFp bC5jb20+CkRhdGU6IFRodSwgMyBOb3YgMjAyMiAxMTozOToyNCArMDQwMApTdWJqZWN0OiBbUEFU Q0hdIERlbGF5IG5hbWVzcGFjZSBhbmQgcmVsbmFtZSBsb29rdXBzIHVudGlsIGVycm9yCgotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICB8IDEyICsrKysrKysr LS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgICAgIHwgMTMgKysr KysrKysrKy0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIHwg IDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICB8ICA4ICsr LS0tLS0tCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAgfCAgMiAr LQogNSBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggZjBjZWMyYWQ1ZS4uMGMz YWQ2OThlYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21k cy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNzAw LDEyICs3MDAsMTQgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3Jl YXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCXsKIAkJCQlSYW5nZVZhciAgICpydiA9IChS YW5nZVZhciAqKSBsZmlyc3QobGMpOwogCQkJCU9pZAkJCXJlbGlkOworCQkJCVJlbGF0aW9uIHN1 Yl9yZWw7CiAKIAkJCQlyZWxpZCA9IFJhbmdlVmFyR2V0UmVsaWQocnYsIEFjY2Vzc1NoYXJlTG9j aywgZmFsc2UpOworCQkJCXN1Yl9yZWwgPSBSZWxhdGlvbklkR2V0UmVsYXRpb24ocmVsaWQpOwog CiAJCQkJLyogQ2hlY2sgZm9yIHN1cHBvcnRlZCByZWxraW5kLiAqLwotCQkJCUNoZWNrU3Vic2Ny aXB0aW9uUmVsa2luZChnZXRfcmVsX3JlbGtpbmQocmVsaWQpLAotCQkJCQkJCQkJCSBydi0+c2No ZW1hbmFtZSwgcnYtPnJlbG5hbWUpOworCQkJCUNoZWNrU3Vic2NyaXB0aW9uUmVsa2luZChzdWJf cmVsLCBydi0+c2NoZW1hbmFtZSwgcnYtPnJlbG5hbWUpOworCQkJCVJlbGF0aW9uQ2xvc2Uoc3Vi X3JlbCk7CiAKIAkJCQlBZGRTdWJzY3JpcHRpb25SZWxTdGF0ZShzdWJpZCwgcmVsaWQsIHRhYmxl X3N0YXRlLAogCQkJCQkJCQkJCUludmFsaWRYTG9nUmVjUHRyKTsKQEAgLTg2MSwxMiArODYzLDE0 IEBAIEFsdGVyU3Vic2NyaXB0aW9uX3JlZnJlc2goU3Vic2NyaXB0aW9uICpzdWIsIGJvb2wgY29w eV9kYXRhLAogCQl7CiAJCQlSYW5nZVZhciAgICpydiA9IChSYW5nZVZhciAqKSBsZmlyc3QobGMp OwogCQkJT2lkCQkJcmVsaWQ7CisJCQlSZWxhdGlvbiBzdWJfcmVsOwogCiAJCQlyZWxpZCA9IFJh bmdlVmFyR2V0UmVsaWQocnYsIEFjY2Vzc1NoYXJlTG9jaywgZmFsc2UpOworCQkJc3ViX3JlbCA9 IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihyZWxpZCk7CiAKIAkJCS8qIENoZWNrIGZvciBzdXBwb3J0 ZWQgcmVsa2luZC4gKi8KLQkJCUNoZWNrU3Vic2NyaXB0aW9uUmVsa2luZChnZXRfcmVsX3JlbGtp bmQocmVsaWQpLAotCQkJCQkJCQkJIHJ2LT5zY2hlbWFuYW1lLCBydi0+cmVsbmFtZSk7CisJCQlD aGVja1N1YnNjcmlwdGlvblJlbGtpbmQoc3ViX3JlbCwgcnYtPnNjaGVtYW5hbWUsIHJ2LT5yZWxu YW1lKTsKKwkJCVJlbGF0aW9uQ2xvc2Uoc3ViX3JlbCk7CiAKIAkJCXB1YnJlbF9sb2NhbF9vaWRz W29mZisrXSA9IHJlbGlkOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCmlu ZGV4IDYwMTRmMmUyNDguLmEwYTJkMzI2ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBs aWNhdGlvbi5jCkBAIC02NDksMTYgKzY0OSwyMyBAQCBDaGVja0NtZFJlcGxpY2FJZGVudGl0eShS ZWxhdGlvbiByZWwsIENtZFR5cGUgY21kKQogLyoKICAqIENoZWNrIGlmIHdlIHN1cHBvcnQgd3Jp dGluZyBpbnRvIHNwZWNpZmljIHJlbGtpbmQuCiAgKgotICogVGhlIG5zcG5hbWUgYW5kIHJlbG5h bWUgYXJlIG9ubHkgbmVlZGVkIGZvciBlcnJvciByZXBvcnRpbmcuCisgKiBJZiBuc3BuYW1lIGFu ZCByZWxuYW1lIGFyZSBub3QgTlVMTCwgdGhleSBhcmUgdXNlZCBmb3IgZXJyb3IgcmVwb3J0aW5n LCBvdGhlcndpc2UgdGhlc2UgdmFsdWVzIGFyZSBmZXRjaGVkIGZyb20gcmVsY2FjaGUuCiAgKi8K IHZvaWQKLUNoZWNrU3Vic2NyaXB0aW9uUmVsa2luZChjaGFyIHJlbGtpbmQsIGNvbnN0IGNoYXIg Km5zcG5hbWUsCi0JCQkJCQkgY29uc3QgY2hhciAqcmVsbmFtZSkKK0NoZWNrU3Vic2NyaXB0aW9u UmVsa2luZChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKm5zcG5hbWUsIGNvbnN0IGNoYXIgKnJl bG5hbWUpCiB7CisJY2hhcgkJcmVsa2luZCA9IHJlbC0+cmRfcmVsLT5yZWxraW5kOworCiAJaWYg KHJlbGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTiAmJiByZWxraW5kICE9IFJFTEtJTkRfUEFSVElU SU9ORURfVEFCTEUpCisJeworCQlpZiAocmVsbmFtZSA9PSBOVUxMKQorCQkJcmVsbmFtZSA9IFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCk7CisJCWlmIChuc3BuYW1lID09IE5VTEwpCisJCQlu c3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCkpOwog CQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUp LAogCQkJCSBlcnJtc2coImNhbm5vdCB1c2UgcmVsYXRpb24gXCIlcy4lc1wiIGFzIGxvZ2ljYWwg cmVwbGljYXRpb24gdGFyZ2V0IiwKIAkJCQkJCW5zcG5hbWUsIHJlbG5hbWUpLAogCQkJCSBlcnJk ZXRhaWxfcmVsa2luZF9ub3Rfc3VwcG9ydGVkKHJlbGtpbmQpKSk7CisJfQogfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCmluZGV4IGU5ODkwNDc2ODEuLmU5ODAz MWUyNzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRp b24uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAg LTM5Myw3ICszOTMsNyBAQCBsb2dpY2FscmVwX3JlbF9vcGVuKExvZ2ljYWxSZXBSZWxJZCByZW1v dGVpZCwgTE9DS01PREUgbG9ja21vZGUpCiAJCWVudHJ5LT5sb2NhbHJlbG9pZCA9IHJlbGlkOwog CiAJCS8qIENoZWNrIGZvciBzdXBwb3J0ZWQgcmVsa2luZC4gKi8KLQkJQ2hlY2tTdWJzY3JpcHRp b25SZWxraW5kKGVudHJ5LT5sb2NhbHJlbC0+cmRfcmVsLT5yZWxraW5kLAorCQlDaGVja1N1YnNj cmlwdGlvblJlbGtpbmQoZW50cnktPmxvY2FscmVsLAogCQkJCQkJCQkgcmVtb3RlcmVsLT5uc3Bu YW1lLCByZW1vdGVyZWwtPnJlbG5hbWUpOwogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYwppbmRleCBlNDhhM2Y1ODlhLi5lMDBlMzgzOTY4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTIxODEsOSArMjE4MSw3IEBAIGFw cGx5X2hhbmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJICog dW5zdXBwb3J0ZWQgcmVsa2luZHM7IGFuZCB0aGUgc2V0IG9mIHBhcnRpdGlvbnMgY2FuIGNoYW5n ZSwgc28gY2hlY2tpbmcKIAkgKiBhdCBDUkVBVEUvQUxURVIgU1VCU0NSSVBUSU9OIHdvdWxkIGJl IGluc3VmZmljaWVudC4KIAkgKi8KLQlDaGVja1N1YnNjcmlwdGlvblJlbGtpbmQocGFydHJlbC0+ cmRfcmVsLT5yZWxraW5kLAotCQkJCQkJCSBnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXRO YW1lc3BhY2UocGFydHJlbCkpLAotCQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJ0 cmVsKSk7CisJQ2hlY2tTdWJzY3JpcHRpb25SZWxraW5kKHBhcnRyZWwsIE5VTEwsIE5VTEwpOwog CiAJLyoKIAkgKiBUbyBwZXJmb3JtIGFueSBvZiB0aGUgb3BlcmF0aW9ucyBiZWxvdywgdGhlIHR1 cGxlIG11c3QgbWF0Y2ggdGhlCkBAIC0yMzM0LDkgKzIzMzIsNyBAQCBhcHBseV9oYW5kbGVfdHVw bGVfcm91dGluZyhBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCQkJCQlwYXJ0cmVsX25ldyA9 IHBhcnRyZWxpbmZvX25ldy0+cmlfUmVsYXRpb25EZXNjOwogCiAJCQkJCS8qIENoZWNrIHRoYXQg bmV3IHBhcnRpdGlvbiBhbHNvIGhhcyBzdXBwb3J0ZWQgcmVsa2luZC4gKi8KLQkJCQkJQ2hlY2tT dWJzY3JpcHRpb25SZWxraW5kKHBhcnRyZWxfbmV3LT5yZF9yZWwtPnJlbGtpbmQsCi0JCQkJCQkJ CQkJCSBnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2UocGFydHJlbF9uZXcp KSwKLQkJCQkJCQkJCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcnRyZWxfbmV3KSk7CisJ CQkJCUNoZWNrU3Vic2NyaXB0aW9uUmVsa2luZChwYXJ0cmVsX25ldywgTlVMTCwgTlVMTCk7CiAK IAkJCQkJLyogREVMRVRFIG9sZCB0dXBsZSBmb3VuZCBpbiB0aGUgb2xkIHBhcnRpdGlvbi4gKi8K IAkJCQkJYXBwbHlfaGFuZGxlX2RlbGV0ZV9pbnRlcm5hbChlZGF0YSwgcGFydHJlbGluZm8sCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCBlZDk1ZWQxMTc2Li4xODhlNzgzYjVlIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTY0Niw3ICs2NDYsNyBAQCBleHRlcm4gdm9pZCBFeGVjU2lt cGxlUmVsYXRpb25EZWxldGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCQkJCQkJ CSBUdXBsZVRhYmxlU2xvdCAqc2VhcmNoc2xvdCk7CiBleHRlcm4gdm9pZCBDaGVja0NtZFJlcGxp Y2FJZGVudGl0eShSZWxhdGlvbiByZWwsIENtZFR5cGUgY21kKTsKIAotZXh0ZXJuIHZvaWQgQ2hl Y2tTdWJzY3JpcHRpb25SZWxraW5kKGNoYXIgcmVsa2luZCwgY29uc3QgY2hhciAqbnNwbmFtZSwK K2V4dGVybiB2b2lkIENoZWNrU3Vic2NyaXB0aW9uUmVsa2luZChSZWxhdGlvbiByZWwsIGNvbnN0 IGNoYXIgKm5zcG5hbWUsCiAJCQkJCQkJCQkgY29uc3QgY2hhciAqcmVsbmFtZSk7CiAKIC8qCi0t IAoyLjMwLjIKCg== --=-BCTAYhEkTmRz8GNdBsrG--