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.96) (envelope-from ) id 1wB6Pd-000jlW-37 for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Apr 2026 07:36:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wB6Pc-00AIp1-1F for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Apr 2026 07:36:21 +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.96) (envelope-from ) id 1wB6Pb-00AIol-2l for pgsql-hackers@lists.postgresql.org; Fri, 10 Apr 2026 07:36:21 +0000 Received: from mail-ed1-x533.google.com ([2a00:1450:4864:20::533]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wB6Pa-00000000IIa-2aIR for pgsql-hackers@postgresql.org; Fri, 10 Apr 2026 07:36:19 +0000 Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-66feeb8ff41so3058747a12.3 for ; Fri, 10 Apr 2026 00:36:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775806577; cv=none; d=google.com; s=arc-20240605; b=OczLEp8rLgWLAeQvn9FY40KdTAFAURCi8S5duyW3zF/RpaOhAoT6SE1qvOOgLkYgOH mW1cEDjN9rFUL1i/ZWhw7iZ2bjlK+K/4u4bc9BdvHzQOUesFxZYsFnzz2LrHhLrZgx9u RMuj/uNMXXIU/0H7Ol7Tr/ICWDC6+YvqlkX/J/gZbmp7QxaICvduR/je7Nz2iTghS3Uy VXMtCrgOCIv88Y5JXabI/8VwDgNgu2I1b323fLsVKdCYyMYPPO8FSFulgsOSRvC4QhvY RE8brXNxxNSDLnlv27B+VeHS84mOi2XZ933tbHXqQ9f+aDV4/0xzZcrt6U7SeWnSyFuy EzCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=3DTusVYuBqB0RXN3rZ3zHFMRD7RYr3mWpPXVw14f8Fo=; fh=AtqhBSvbYvHlvijoYsaZz2x9/v4dT6B2gJEs2sY8VCI=; b=gaXBfPOD4HyXGCeAua4oCecDl54tY6lJlt4ZDlm93njQb4Em264xI0AylJbG+j6a+J 7SRw/7CSahNQ+57a4z9bjGO4PRAo/t7pTP5627EAYA8JDg6SJRiuXGIRdU9u2yMW9MKc VFuaHbB8cSUbwKg7iCfiar83zUbXOh0uUSzSStgmnIi0J/1A8tOgmYrZxtdK4bRdn53N UDhWsXbMWpilTGAEJbSn1ZVTrHgAfUcUvrXb1rwO53MtO1ywmAOQi44yAY3Ajhw73Czk zwXXf5j3ceWoYnbX0Cvjccy7qcqda7OW+x0NWykgUqVHOSJkkDTozn7QAawzBB0IoNqx 6IIQ==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775806577; x=1776411377; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=3DTusVYuBqB0RXN3rZ3zHFMRD7RYr3mWpPXVw14f8Fo=; b=l9K/qx79k2zc+OovRxdUIH77GQeqKGBttKkGr+UdYidkfzMbTMQO+BisvX+g4HVcQ/ G5eylqZdd3znTVx1AYvuO3VWwm8bBTJlILB1a3UcMe+p4RMIkEx7oSV0pbcK3I4tlM8L KrOB0biViCEKi5yEeYNOS2PtMZ3cp49/VrsjmAYAwsAzSousAmxpQAtdSKplD4xYCb+v AutcZ2Pn4L/XnFkm83J8gXyVG9PIZHFpF2ismD7OPf0s4Vv0AHpi33gCpBt+Ui8Rq69X nQA6l/Ge+KidW8/XV3sOOd4UELc+MJGLtV4C4Ad4j3MnSvFW+66IKoXfKrgoC1loB41S JFDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775806577; x=1776411377; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=3DTusVYuBqB0RXN3rZ3zHFMRD7RYr3mWpPXVw14f8Fo=; b=n6jbWLrQM+kVGf+7qNuGGWqm1qRIt85waAEYGLW5dgYC83Yjsq53JDcc+ZNQ6hualk DuMriQYXFr/gOpO53z2AtrgkPVUv2R8bLtYjxmSjajDnB2lWLnHcCKyPuyvOmjuI93RO e+AEh8nH93DQka+bSAFLUOFzizVZyTMGDvdVzLlZBeYTq2xXgVvOhh0bNIMAEgqlNSLi juJpW/gCtM/2CzKf3uY8DDopC3ltyrwJ0CKwpCqZLyMDcyLwgzRGk951/S5+HRDqbd36 h1/xTnh32RjpgjE8WPmHrzTBAZYwgANnjJUHnPxkCdowxORIlZ2VZe9p6i88hiIy9Hvm GbyQ== X-Forwarded-Encrypted: i=1; AJvYcCVb2fcOm5FzY8QcfyQcDr6DtUslbGFzTmZXbRTxoDnctaIs4xTJzBLTMgIrmpOOgJpr67iZDUn6wVtpxgB3@postgresql.org X-Gm-Message-State: AOJu0YzwCSMdchzdPaKCVGQ6OyX1NdfTHbXhZVyXgzKobRxxf4fw10q/ BHNVFn9L5AGYrKGEqh1O+GvfzVV3/nApO5ESJ8aXAd+IhP2C68J50Ds8vsM8z5bil6oyi/TNae6 dd8AuFhS4QNQHSNyq+rhA88hUFDGrArRj57I4 X-Gm-Gg: AeBDies5DIYaxmvo6BO8qpENRf1VqLCAJFGA8Ucwud8Eo0pZ6Ayukg0baFqWse7zSJV yullq8/iy+t7YdC4ARSaRXT7m490y08pSw/ZfypdgL0BSG0sZ1FDYnlEyWlfw8S/55ZYP1iHCuD 1MnIu2dshOI8wFtyavrwBNaZm6o4Fhg8Tuv6+wzbMTMS+3jMaPktfWcrJVaaad8O37XuPWrS+JY 04ZPTCE+Nb3sjmglD85Ezax84GsulmVsG1+KM8wDMcee6qbEVIcVbbxvNp23wEnkvezD8yO52RZ /AOjg4k6A9iX2L35d1zmUm2Ovemng88osreE0CPmB9tVoJ7KQjVFCatTR+lm2WHt9lzoOouCiYu mkIWTqQ== X-Received: by 2002:a05:6402:e99:b0:66e:6c4f:30d5 with SMTP id 4fb4d7f45d1cf-6707889a4abmr853318a12.9.1775806577162; Fri, 10 Apr 2026 00:36:17 -0700 (PDT) MIME-Version: 1.0 References: <3cc93f9.1ab.19d74a26acf.Coremail.wxp_728@163.com> In-Reply-To: <3cc93f9.1ab.19d74a26acf.Coremail.wxp_728@163.com> From: Xuneng Zhou Date: Fri, 10 Apr 2026 15:36:04 +0800 X-Gm-Features: AQROBzCiZlHG9KPWZD7uUTuSN39lcWKc3G0b-O9kILI6aiaVAkEpabTSkOEPAS4 Message-ID: Subject: Re: Re: Bug: WAIT FOR LSN crashes with assertion failure inside PL/pgSQL DO blocks and procedures To: "wang.xiao.peng" Cc: Alexander Korotkov , SATYANARAYANA NARLAPURAM , PostgreSQL Hackers , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000390ad6064f16308e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000390ad6064f16308e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Apr 10, 2026 at 7:45=E2=80=AFAM wang.xiao.peng wr= ote: > > > > > > > > > At 2026-04-09 20:28:16, "Alexander Korotkov" wrote= : > >On Thu, Apr 9, 2026 at 10:27=E2=80=AFAM SATYANARAYANA NARLAPURAM > > wrote: > >> On Wed, Apr 8, 2026 at 11:00=E2=80=AFPM Alexander Korotkov wrote: > >>> On Thu, Apr 9, 2026 at 5:03=E2=80=AFAM SATYANARAYANA NARLAPURAM > >>> wrote: > >>> > An assertion failure (server crash in assert-enabled builds) occurs= when WAIT FOR LSN ... INTO is used inside PL/pgSQL DO blocks or within voi= d procedures. > >>> > > >>> > Repro: > >>> > > >>> > -- Run this on a standby > >>> > > >>> > CREATE PROCEDURE test_wait() > >>> > LANGUAGE plpgsql AS $$ > >>> > DECLARE > >>> > result text; > >>> > BEGIN > >>> > WAIT FOR LSN '0/1234' INTO result; > >>> > RAISE NOTICE '%', result; > >>> > END; > >>> > $$; > >>> > CALL test_wait(); > >>> > > >>> > > >>> > The WAIT FOR itself succeeds, but the very next PL/pgSQL statement = that requires a snapshot crashes the backend with: > >>> > > >>> > TRAP: failed Assert("portal->portalSnapshot =3D=3D NULL"), > >>> > File: "pquery.c", Line: 1776 > >>> > > >>> > Attached patches for both the test case and a potential fix. Please= review. > >>> > >>> Thank you for reporting. But I doubt the fix is correct. Even that > >>> this particular might work OK, I don't think it's safe to release > >>> snapshots belonging to functions/procedures: it might affect them. I > >>> tend to think we must forbid wrapping WAIT FOR LSN with > >>> functions/procedures. I'll explore more on this today. > >> > >> > >> Agreed, attached a v2 patch with your suggestion on preventing it runn= ing > >> from procedures. > > > >Thank you. I've slightly revised your patch. I'm going to push it if > >no objections. > > > >------ > >Regards, > >Alexander Korotkov > >Supabase > > Hi, > This patch looks good to me overall. I spotted a typo in the commit messa= ge: > > "it could pass this check causing an error elsewhere. This commit implme= nts" > > implments -> implements, missing an "e". > I=E2=80=99ve revised the patch. Moving the non=E2=80=93top-level rejection = to the beginning of the function may help avoid unnecessary parsing and validation work, although it could make the reasoning slightly less localized. Since this is user-facing, should we explicitly document this constraint to make the behavior less surprising? The rejection applies not only to wrapping the command in a procedure or function, but also within a DO block. It might also be worth adding a regression test and refining the error message accordingly. With this new constraint, some existing comments were outdated and have been updated as well. -- Best, Xuneng --000000000000390ad6064f16308e Content-Type: application/x-patch; name="v4-0001-Explicitly-forbid-non-top-level-WAIT-FOR-executio.patch" Content-Disposition: attachment; filename="v4-0001-Explicitly-forbid-non-top-level-WAIT-FOR-executio.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnsl6sem0 RnJvbSBjOTgzNTFkMjhiMTU4ZmMwYjM0ZTYwYTE2NjM5ZDM1ZTdmMzU4ZjcyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog RnJpLCAxMCBBcHIgMjAyNiAxNDo0NjozMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjRdIEV4cGxp Y2l0bHkgZm9yYmlkIG5vbi10b3AtbGV2ZWwgV0FJVCBGT1IgZXhlY3V0aW9uCgpQcmV2aW91c2x5 IHdlIHdlcmUgcmVseWluZyBvbiBhIHNuYXBzaG90LWJhc2VkIGNoZWNrIHRvIGRldGVjdCBpbnZh bGlkCmV4ZWN1dGlvbiBjb250ZXh0cy4gIEhvd2V2ZXIsIHdoZW4gV0FJVCBGT1IgaXMgd3JhcHBl ZCBpbnRvIGEgc3RvcmVkCnByb2NlZHVyZSBvciBhIERPIGJsb2NrLCBpdCBjb3VsZCBwYXNzIHRo aXMgY2hlY2ssIGNhdXNpbmcgYW4gZXJyb3IKZWxzZXdoZXJlLgoKVGhpcyBjb21taXQgaW1wbGVt ZW50cyBhbiBleHBsaWNpdCBpc1RvcExldmVsIGNoZWNrIHRvIHJlamVjdCBXQUlUIEZPUgp3aGVu IGNhbGxlZCBmcm9tIHdpdGhpbiBhIGZ1bmN0aW9uLCBwcm9jZWR1cmUsIG9yIERPIGJsb2NrLiAg VGhlCmlzVG9wTGV2ZWwgY2hlY2sgY2F0Y2hlcyB0aGVzZSBjYXNlcyBlYXJseSB3aXRoIGEgY2xl YXIgZXJyb3IgbWVzc2FnZSwKbWF0Y2hpbmcgdGhlIHBhdHRlcm4gdXNlZCBieSBvdGhlciB1dGls aXR5IGNvbW1hbmRzIGxpa2UgVkFDVVVNIGFuZApSRUlOREVYLiAgVGhlIHNuYXBzaG90IGNoZWNr IGlzIHJldGFpbmVkIGZvciB0aGUgcmVtYWluaW5nIGNhc2U6CnRvcC1sZXZlbCBleGVjdXRpb24g d2l0aGluIGEgdHJhbnNhY3Rpb24gYmxvY2sgdXNpbmcgYW4gaXNvbGF0aW9uIGxldmVsCmhpZ2hl ciB0aGFuIFJFQUQgQ09NTUlUVEVELgoKQWxzbyBhZGRzIHRlc3RzIGZvciBXQUlUIEZPUiBMU04g d3JhcHBlZCBpbiBhIHByb2NlZHVyZSBhbmQgRE8gYmxvY2ssCmNvbXBsZW1lbnRpbmcgdGhlIGV4 aXN0aW5nIHRlc3QgdGhhdCB1c2VzIGEgZnVuY3Rpb24gd3JhcHBlci4KClJlcG9ydGVkLWJ5OiBT YXR5YW5hcmF5YW5hIE5hcmxhcHVyYW0gPHNhdHlhbmFybGFwdXJhbUBnbWFpbC5jb20+CkRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FIZyUyQlFEY04tbjNOVXFnUnRqJTNEQlFiOWZG UW1IOC1EZUVST0NyJTNEUERid19CQlJLT1lBJTQwbWFpbC5nbWFpbC5jb20KQXV0aG9yOiBTYXR5 YW5hcmF5YW5hIE5hcmxhcHVyYW0gPHNhdHlhbmFybGFwdXJhbUBnbWFpbC5jb20+ClJldmlld2Vk LWJ5OiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwuY29tPgotLS0KIGRvYy9z cmMvc2dtbC9yZWYvd2FpdF9mb3Iuc2dtbCAgICAgICAgICB8ICA4ICsrKysrKysKIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3dhaXQuYyAgICAgICAgICAgICB8IDIyICsrKysrKysrKysrKystLS0tLQog c3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgICAgICAgICAgIHwgIDMgKystCiBzcmMvaW5j bHVkZS9jb21tYW5kcy93YWl0LmggICAgICAgICAgICAgfCAgMyArKy0KIHNyYy90ZXN0L3JlY292 ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5wbCB8IDMwICsrKysrKysrKysrKysrKysrKysrKystLS0K IDUgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi93YWl0X2Zvci5zZ21sIGIvZG9jL3NyYy9zZ21sL3Jl Zi93YWl0X2Zvci5zZ21sCmluZGV4IGMzMGZiYTZmMDVhLi45YmE3ODVlYTMyMSAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3JlZi93YWl0X2Zvci5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv d2FpdF9mb3Iuc2dtbApAQCAtMjIxLDYgKzIyMSwxNCBAQCBXQUlUIEZPUiBMU04gJzxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5sc248L3JlcGxhY2VhYmxlPicKIAogIDxyZWZzZWN0MT4K ICAgPHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgPHBhcmE+CisgICA8Y29tbWFuZD5XQUlUIEZPUjwv Y29tbWFuZD4gbXVzdCBiZSBleGVjdXRlZCBhcyBhIHRvcC1sZXZlbCBjb21tYW5kLgorICAgSXQg Y2Fubm90IGJlIGV4ZWN1dGVkIGZyb20gYSBmdW5jdGlvbiwgcHJvY2VkdXJlLCBvcgorICAgPGNv bW1hbmQ+RE88L2NvbW1hbmQ+IGJsb2NrLiBJdCBhbHNvIHJlcXVpcmVzIHRoYXQgbm8gYWN0aXZl IG9yCisgICByZWdpc3RlcmVkIHNuYXBzaG90IGJlIGhlbGQsIGFuZCB0aGVyZWZvcmUgY2Fubm90 IGJlIHVzZWQgaW4gY29udGV4dHMKKyAgIHdoZXJlIHN1Y2ggYSBzbmFwc2hvdCBtdXN0IHJlbWFp biBhY3RpdmUsIGluY2x1ZGluZyB0cmFuc2FjdGlvbnMgcnVubmluZworICAgYXQgaXNvbGF0aW9u IGxldmVscyBoaWdoZXIgdGhhbiA8bGl0ZXJhbD5SRUFEIENPTU1JVFRFRDwvbGl0ZXJhbD4uCisg IDwvcGFyYT4KIAogICA8cGFyYT4KICAgIDxjb21tYW5kPldBSVQgRk9SPC9jb21tYW5kPiB3YWl0 cyB1bnRpbCB0aGUgc3BlY2lmaWVkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy93 YWl0LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMKaW5kZXggODVmY2Q0NjNiNGMuLjEy ODg4MjgxZDliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5jCkBAIC0zMSw3ICszMSw4IEBACiAKIAogdm9pZAot RXhlY1dhaXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2FpdFN0bXQgKnN0bXQsIERlc3RSZWNl aXZlciAqZGVzdCkKK0V4ZWNXYWl0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFdhaXRTdG10ICpz dG10LCBib29sIGlzVG9wTGV2ZWwsCisJCQkgRGVzdFJlY2VpdmVyICpkZXN0KQogewogCVhMb2dS ZWNQdHIJbHNuOwogCWludDY0CQl0aW1lb3V0ID0gMDsKQEAgLTQ1LDYgKzQ2LDE2IEBAIEV4ZWNX YWl0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFdhaXRTdG10ICpzdG10LCBEZXN0UmVjZWl2ZXIg KmRlc3QpCiAJYm9vbAkJbm9fdGhyb3dfc3BlY2lmaWVkID0gZmFsc2U7CiAJYm9vbAkJbW9kZV9z cGVjaWZpZWQgPSBmYWxzZTsKIAorCS8qCisJICogV0FJVCBGT1IgbXVzdCBub3QgYmUgcnVuIGFz IGEgbm9uLXRvcC1sZXZlbCBzdGF0ZW1lbnQgKGUuZy4sIGluc2lkZSBhCisJICogZnVuY3Rpb24s IHByb2NlZHVyZSwgb3IgRE8gYmxvY2spLiBGb3JiaWQgdGhpcyBjYXNlIHVwZnJvbnQuCisJICov CisJaWYgKCFpc1RvcExldmVsKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCIlcyBjYW4gb25seSBiZSBl eGVjdXRlZCBhcyBhIHRvcC1sZXZlbCBzdGF0ZW1lbnQiLAorCQkJCQkJIldBSVQgRk9SIikpKTsK KwogCS8qIFBhcnNlIGFuZCB2YWxpZGF0ZSB0aGUgbWFuZGF0b3J5IExTTiAqLwogCWxzbiA9IERh dHVtR2V0TFNOKERpcmVjdEZ1bmN0aW9uQ2FsbDEocGdfbHNuX2luLAogCQkJCQkJCQkJCSAgQ1N0 cmluZ0dldERhdHVtKHN0bXQtPmxzbl9saXRlcmFsKSkpOwpAQCAtMTQyLDEwICsxNTMsOSBAQCBF eGVjV2FpdFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXYWl0U3RtdCAqc3RtdCwgRGVzdFJlY2Vp dmVyICpkZXN0KQogCSAqIGltcGx5aW5nIGEga2luZCBvZiBzZWxmLWRlYWRsb2NrLiAgVGhpcyBp cyB0aGUgcmVhc29uIHdoeSBXQUlUIEZPUiBpcyBhCiAJICogY29tbWFuZCwgbm90IGEgcHJvY2Vk dXJlIG9yIGZ1bmN0aW9uLgogCSAqCi0JICogQXQgZmlyc3QsIHdlIHNob3VsZCBjaGVjayB0aGVy ZSBpcyBubyBhY3RpdmUgc25hcHNob3QuICBBY2NvcmRpbmcgdG8KLQkgKiBQbGFubmVkU3RtdFJl cXVpcmVzU25hcHNob3QoKSwgZXZlbiBpbiBhbiBhdG9taWMgY29udGV4dCwgQ2FsbFN0bXQgaXMK LQkgKiBwcm9jZXNzZWQgd2l0aCBhIHNuYXBzaG90LiAgVGhhbmtmdWxseSwgd2UgY2FuIHBvcCB0 aGlzIHNuYXBzaG90LAotCSAqIGJlY2F1c2UgUG9ydGFsUnVuVXRpbGl0eSgpIGNhbiB0b2xlcmF0 ZSB0aGlzLgorCSAqIE5vbi10b3AtbGV2ZWwgY29udGV4dHMgYXJlIHJlamVjdGVkIGFib3ZlLCBi dXQgYmUgZGVmZW5zaXZlIGFuZCBwb3AKKwkgKiBhbnkgYWN0aXZlIHNuYXBzaG90IGlmIG9uZSBp cyBwcmVzZW50LiAgUG9ydGFsUnVuVXRpbGl0eSgpIGNhbgorCSAqIHRvbGVyYXRlIHV0aWxpdHkg Y29tbWFuZHMgdGhhdCByZW1vdmUgdGhlIGFjdGl2ZSBzbmFwc2hvdC4KIAkgKi8KIAlpZiAoQWN0 aXZlU25hcHNob3RTZXQoKSkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKQEAgLTE2MSw3ICsxNzEs NyBAQCBFeGVjV2FpdFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXYWl0U3RtdCAqc3RtdCwgRGVz dFJlY2VpdmVyICpkZXN0KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUoRVJSQ09ERV9P QkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJZXJybXNnKCJXQUlUIEZPUiBt dXN0IGJlIGNhbGxlZCB3aXRob3V0IGFuIGFjdGl2ZSBvciByZWdpc3RlcmVkIHNuYXBzaG90Iiks Ci0JCQkJZXJyZGV0YWlsKCJXQUlUIEZPUiBjYW5ub3QgYmUgZXhlY3V0ZWQgZnJvbSBhIGZ1bmN0 aW9uIG9yIHByb2NlZHVyZSwgbm9yIHdpdGhpbiBhIHRyYW5zYWN0aW9uIHdpdGggYW4gaXNvbGF0 aW9uIGxldmVsIGhpZ2hlciB0aGFuIFJFQUQgQ09NTUlUVEVELiIpKTsKKwkJCQllcnJkZXRhaWwo IldBSVQgRk9SIGNhbm5vdCBiZSBleGVjdXRlZCB3aXRoaW4gYSB0cmFuc2FjdGlvbiB3aXRoIGFu IGlzb2xhdGlvbiBsZXZlbCBoaWdoZXIgdGhhbiBSRUFEIENPTU1JVFRFRC4iKSk7CiAKIAkvKgog CSAqIEFzIHRoZSByZXN1bHQgd2Ugc2hvdWxkIGhvbGQgbm8gc25hcHNob3QsIGFuZCBjb3JyZXNw b25kaW5nbHkgb3VyIHhtaW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5j IGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggMWQzNGMxOTkxM2UuLjczYTU2ZjFk ZjFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFj a2VuZC90Y29wL3V0aWxpdHkuYwpAQCAtMTA2Miw3ICsxMDYyLDggQEAgc3RhbmRhcmRfUHJvY2Vz c1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCiAJCWNhc2UgVF9XYWl0U3RtdDoKIAkJCXsK LQkJCQlFeGVjV2FpdFN0bXQocHN0YXRlLCAoV2FpdFN0bXQgKikgcGFyc2V0cmVlLCBkZXN0KTsK KwkJCQlFeGVjV2FpdFN0bXQocHN0YXRlLCAoV2FpdFN0bXQgKikgcGFyc2V0cmVlLCBpc1RvcExl dmVsLAorCQkJCQkJCSBkZXN0KTsKIAkJCX0KIAkJCWJyZWFrOwogCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jb21tYW5kcy93YWl0LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0LmgKaW5k ZXggNTIxYTMxMjkwOGQuLmE1NjM1Nzk2OTVjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21t YW5kcy93YWl0LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdC5oCkBAIC0xNiw3ICsx Niw4IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX25vZGUuaCIKICNpbmNsdWRlICJ0Y29wL2Rl c3QuaCIKIAotZXh0ZXJuIHZvaWQgRXhlY1dhaXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2Fp dFN0bXQgKnN0bXQsIERlc3RSZWNlaXZlciAqZGVzdCk7CitleHRlcm4gdm9pZCBFeGVjV2FpdFN0 bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXYWl0U3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsLAor CQkJCQkJIERlc3RSZWNlaXZlciAqZGVzdCk7CiBleHRlcm4gVHVwbGVEZXNjIFdhaXRTdG10UmVz dWx0RGVzYyhXYWl0U3RtdCAqc3RtdCk7CiAKICNlbmRpZgkJCQkJCQkvKiBXQUlUX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5wbCBiL3NyYy90 ZXN0L3JlY292ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5wbAppbmRleCBiZjYxYjhjNDdjZi4uODM1 OGM1N2Y3YjcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xz bi5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0OV93YWl0X2Zvcl9sc24ucGwKQEAgLTIx NSw5ICsyMTUsMzMgQEAgJG5vZGVfc3RhbmRieS0+cHNxbCgKIAkncG9zdGdyZXMnLAogCSJTRUxF Q1QgcGdfd2FsX3JlcGxheV93YWl0X3dyYXAoJyR7bHNuM30nKTsiLAogCXN0ZGVyciA9PiBcJHN0 ZGVycik7Ci1vayggJHN0ZGVyciA9fgotCSAgL1dBSVQgRk9SIG11c3QgYmUgY2FsbGVkIHdpdGhv dXQgYW4gYWN0aXZlIG9yIHJlZ2lzdGVyZWQgc25hcHNob3QvLAotCSJnZXQgYW4gZXJyb3Igd2hl biBydW5uaW5nIHdpdGhpbiBhbm90aGVyIGZ1bmN0aW9uIik7Citvaygkc3RkZXJyID1+IC9XQUlU IEZPUiBjYW4gb25seSBiZSBleGVjdXRlZCBhcyBhIHRvcC1sZXZlbCBzdGF0ZW1lbnQvLAorCSJn ZXQgYW4gZXJyb3Igd2hlbiBydW5uaW5nIHdpdGhpbiBhIGZ1bmN0aW9uIik7CisKKyRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKK0NSRUFURSBQUk9DRURVUkUgcGdf d2FsX3JlcGxheV93YWl0X3Byb2ModGFyZ2V0X2xzbiBwZ19sc24pIEFTIFwkXCQKKyAgQkVHSU4K KyAgICBFWEVDVVRFIGZvcm1hdCgnV0FJVCBGT1IgTFNOICVMOycsIHRhcmdldF9sc24pOworICBF TkQKK1wkXCQKK0xBTkdVQUdFIHBscGdzcWw7CitdKTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9m b3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKKyRub2RlX3N0YW5kYnktPnBzcWwoCisJJ3Bvc3Rn cmVzJywKKwkiQ0FMTCBwZ193YWxfcmVwbGF5X3dhaXRfcHJvYygnJHtsc24zfScpOyIsCisJc3Rk ZXJyID0+IFwkc3RkZXJyKTsKK29rKCRzdGRlcnIgPX4gL1dBSVQgRk9SIGNhbiBvbmx5IGJlIGV4 ZWN1dGVkIGFzIGEgdG9wLWxldmVsIHN0YXRlbWVudC8sCisJImdldCBhbiBlcnJvciB3aGVuIHJ1 bm5pbmcgd2l0aGluIGEgcHJvY2VkdXJlIik7CisKKyRub2RlX3N0YW5kYnktPnBzcWwoCisJJ3Bv c3RncmVzJywKKwkiRE8gXCRcJCBCRUdJTiBFWEVDVVRFIGZvcm1hdCgnV0FJVCBGT1IgTFNOICVM OycsICcke2xzbjN9Jyk7IEVORCBcJFwkOyIsCisJc3RkZXJyID0+IFwkc3RkZXJyKTsKK29rKCRz dGRlcnIgPX4gL1dBSVQgRk9SIGNhbiBvbmx5IGJlIGV4ZWN1dGVkIGFzIGEgdG9wLWxldmVsIHN0 YXRlbWVudC8sCisJImdldCBhbiBlcnJvciB3aGVuIHJ1bm5pbmcgd2l0aGluIGEgRE8gYmxvY2si KTsKIAogIyA2LiBDaGVjayBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBlcnJvciBjYXNlcyBvbiBzdGFu ZGJ5IGJlZm9yZSBwcm9tb3Rpb24KIG15ICR0ZXN0X2xzbiA9Ci0tIAoyLjUxLjAKCg== --000000000000390ad6064f16308e--