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 1wAjnC-000HAF-2z for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Apr 2026 07:27:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wAjnB-004AtF-0s for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Apr 2026 07:27:10 +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 1wAjnA-004At4-2k for pgsql-hackers@lists.postgresql.org; Thu, 09 Apr 2026 07:27:09 +0000 Received: from mail-vk1-xa30.google.com ([2607:f8b0:4864:20::a30]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wAjn9-000000007sP-053h for pgsql-hackers@lists.postgresql.org; Thu, 09 Apr 2026 07:27:08 +0000 Received: by mail-vk1-xa30.google.com with SMTP id 71dfb90a1353d-56b8804f37cso246221e0c.3 for ; Thu, 09 Apr 2026 00:27:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775719626; cv=none; d=google.com; s=arc-20240605; b=jNL192l4EYZzig+eBqzwwEwknecd4TpP84DtLQqUZFDlxkEY9qR40JhYTLTQoB8tdP EdHc7i+U/t+/BZmzOUtXPfFAU+tTDHVILhzdl0GpOJ2bGAWiS+1ZVu2XbDulL0NfhrPd tAgmgiKILcqbencKspjUX99HRrkgS+/TEaoF2CMFlz8aZ8GIBvI/KbePoiabkzxfDDAV TftQGMWlm+A8g25jHN2d2x3KkpttvnqVdp2jZWmxfsJBhwZFtXgzHLMdIcLdfDlV0qqU D1EuuFNQWiN2t7s3A0JP3ZRCDe1HArXoAHBO89AQzuOfRcR+bGw6aeCQ8xHEYQtbNK30 Qthg== 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=xGSBXK+PPlQA/4Ml4AvWM2i9jgr8QRk66ut47Rx+dHY=; fh=AEn94vVuaVDPL1tB+86CCZZ+VgMW/1jGuhJ1FfBOHcs=; b=MeZHNGoxMG3Lf263sF82k1bN9tHSa6B4+yN6WopApLVuMoKXJB4wZStitl9Iw0S2Na 2HFd/GRnj8mEKOQ2qz3MSlT49l9AJjvdj2oNTH1qXKCfVkchsfYRuDCccmvyrZOdQXVa lmjbOHxKzWOaLnbWsmE1BRK/ZNAN7mpw7lrp6KhTFzKVBDvMNpFvJr78f6+dOEqJxThs oasc8wt2CmfMd0Vz3f0+7v/yZ5IvSknZKWah2UovxpfSncSuMcmNQBuFv8qwfaOjugXr iF64JicpdEGWuiypY3R/nJ/GQFXSagkYbTUqHU30oOAnuyUIC2ZT6QK0imN3X6ElhY7I G/Hg==; darn=lists.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=1775719626; x=1776324426; darn=lists.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=xGSBXK+PPlQA/4Ml4AvWM2i9jgr8QRk66ut47Rx+dHY=; b=SG2tK9yKHPYx8whdStYTHcyEhMC6I50j4Y6stCz10sn+oXxuZuUKSAUmeM7NO5Emzn x70EM67gBH421Qex1OF/LEqjorAykSrtjt6cIyiYxOCZLyMvDKtjbE6FDfs7xIV9rYMF n3KXHw+yy9Sl16i8Lve6mL077/qzFV7fau8j7A9ZpHVwpgDDX5XqLUWf7MOVEd1ZrL74 AcrtClM9m7mDJJia0kw69ap1KpPp8yr5+QJ9wBEzS8KUSKWuyg7yc5Bbv2t7Am7crZhH QdCYNRmGni+w9FKYsibQaq8M3lKDk33UHbgskS5ypZ5bS2XDuQDKUBy8GKQ0BMx+I6dV DKCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775719626; x=1776324426; 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=xGSBXK+PPlQA/4Ml4AvWM2i9jgr8QRk66ut47Rx+dHY=; b=hvn7gkYmkCWq9ydzNsahn1AC6WS4BtPbGzSUK+6bwKB/5b6yCOaqDsqQZQG7cxvMdh 9yv029Bx8V9l0Qwf0L/J5OqHkNtIv3xpJEIzrabqKAha0WtzSu8wb5Nj86+wVHU9Dud8 wddm4gAlDvXBxraoBAWVt2X+tWc7rcQ2VxYkWJedO0MAfBsAtYzVxNIepTvPjA6Kke2v cF9sdYN+27Nanz7/m1ElCYgoD3LHuFLe3TLIc6PhPlYgGOOZW9IeB8v/bLydok/evE0J Vnzct9BwKgNPiUgYZtv6Ur+KuUfcqfWiTw6xw9+/3XQed42EMM5u7M4R+RssIF8DaUj/ L8SA== X-Gm-Message-State: AOJu0YxgRrqjehux6jZ0GffPjRKbauOhcOGvQ6u71+IU3zJvq82SWjme aAZmWzH6cLLfgFtV3EzqrHKNknuLiGdVPILIGb4FiAxEN/csvda2LlutTp94VZQt3demmDyfA9P CPLyfH1z0WL17KZzepu6cDqGDDRCD1sw= X-Gm-Gg: AeBDievB6Qb8HVHmiCh1cFDjcnLwHJu2LApEUjeU42j5Xa2gvuAZIEl3w3pokZ/O5EG IteCeL0fvXrpA//ipzv6/wnWDyrOLUJNKBPC4vJHqJoWimCn7D8bY8RiEysZeh+oIwF2eT3f9C6 AwPMtoOubzSMD4VnjFcdSZOM3jsZsaXq38g2EjOgAWLptXCgeL6DHewUJcDiotB+UKu6tzvO+2O /b+LzexSt/P7536ojU6IBhZnJiyflX2euWWgRvQ89Q4obGroeFtgyehsRPWXl/i1WXg3JVhDB/o vouTIAo= X-Received: by 2002:a05:6102:2ad5:b0:609:5101:d668 with SMTP id ada2fe7eead31-6095101e0f9mr25597137.30.1775719626334; Thu, 09 Apr 2026 00:27:06 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: SATYANARAYANA NARLAPURAM Date: Thu, 9 Apr 2026 00:26:54 -0700 X-Gm-Features: AQROBzBZA-mbJXxh0FxsQkBPRdyYN_OjXXym74-94dGt1OyntKgslMm-1ImGN1g Message-ID: Subject: Re: Bug: WAIT FOR LSN crashes with assertion failure inside PL/pgSQL DO blocks and procedures To: Alexander Korotkov Cc: PostgreSQL Hackers , PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000008c85d4064f01f14e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008c85d4064f01f14e Content-Type: multipart/alternative; boundary="0000000000008c85d3064f01f14c" --0000000000008c85d3064f01f14c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Alexnader, On Wed, Apr 8, 2026 at 11:00=E2=80=AFPM Alexander Korotkov wrote: > Hi, Satya! > > On Thu, Apr 9, 2026 at 5:03=E2=80=AFAM SATYANARAYANA NARLAPURAM > wrote: > > An assertion failure (server crash in assert-enabled builds) occurs whe= n > WAIT FOR LSN ... INTO is used inside PL/pgSQL DO blocks or within void > 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 running from procedures. Thanks, Satya --0000000000008c85d3064f01f14c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Alexnader,

On Wed= , Apr 8, 2026 at 11:00=E2=80=AFPM Alexander Korotkov <aekorotkov@gmail.com> wrote:
Hi, Satya!

On Thu, Apr 9, 2026 at 5:03=E2=80=AFAM SATYANARAYANA NARLAPURAM
<satyanar= lapuram@gmail.com> wrote:
> An assertion failure (server crash in assert-enabled builds) occurs wh= en WAIT FOR LSN ... INTO is used inside PL/pgSQL DO blocks or within void p= rocedures.
>
> Repro:
>
> -- Run this on a standby
>
> CREATE PROCEDURE test_wait()
>=C2=A0 =C2=A0LANGUAGE plpgsql AS $$
>=C2=A0 =C2=A0DECLARE
>=C2=A0 =C2=A0 =C2=A0result text;
>=C2=A0 =C2=A0BEGIN
>=C2=A0 =C2=A0 =C2=A0WAIT FOR LSN '0/1234' INTO result;
>=C2=A0 =C2=A0 =C2=A0RAISE NOTICE '%', result;
>=C2=A0 =C2=A0END;
>=C2=A0 =C2=A0$$;
>=C2=A0 =C2=A0CALL test_wait();
>
>
> The WAIT FOR itself succeeds, but the very next PL/pgSQL statement tha= t requires a snapshot crashes the backend with:
>
>=C2=A0 =C2=A0TRAP: failed Assert("portal->portalSnapshot =3D=3D= NULL"),
>=C2=A0 =C2=A0File: "pquery.c", Line: 1776
>
> Attached patches for both the test case and a potential fix. Please re= view.

Thank you for reporting.=C2=A0 But I doubt the fix is correct.=C2=A0 Even t= hat
this particular might work OK, I don't think it's safe to release snapshots belonging to functions/procedures: it might affect them.=C2=A0 I<= br> tend to think we must forbid wrapping WAIT FOR LSN with
functions/procedures.=C2=A0 I'll explore more on this today.

Agreed, attached a v2 patch with your suggestion on p= reventing it running
from procedures.

Th= anks,
Satya=C2=A0
--0000000000008c85d3064f01f14c-- --0000000000008c85d4064f01f14e Content-Type: application/octet-stream; name="v2-0001-waitforlsn-forbid-in-functions.patch" Content-Disposition: attachment; filename="v2-0001-waitforlsn-forbid-in-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnr5lqog0 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3dhaXQuYwppbmRleCA4NWZjZDQ2My4uYjg0ZmE4MTUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3dhaXQuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMK QEAgLTMxLDcgKzMxLDggQEAKIAogCiB2b2lkCi1FeGVjV2FpdFN0bXQoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBXYWl0U3RtdCAqc3RtdCwgRGVzdFJlY2VpdmVyICpkZXN0KQorRXhlY1dhaXRTdG10KFBh cnNlU3RhdGUgKnBzdGF0ZSwgV2FpdFN0bXQgKnN0bXQsIGJvb2wgaXNUb3BMZXZlbCwKKwkJCSBE ZXN0UmVjZWl2ZXIgKmRlc3QpCiB7CiAJWExvZ1JlY1B0cglsc247CiAJaW50NjQJCXRpbWVvdXQg PSAwOwpAQCAtMTM1LDYgKzEzNiwxNiBAQCBFeGVjV2FpdFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRl LCBXYWl0U3RtdCAqc3RtdCwgRGVzdFJlY2VpdmVyICpkZXN0KQogCQl9CiAJfQogCisJLyoKKwkg KiBXQUlUIEZPUiBtdXN0IG5vdCBydW4gaW5zaWRlIGEgZnVuY3Rpb24gb3IgcHJvY2VkdXJlLgor CSAqIEZvcmJpZCB0aGlzIGNhc2UgdXBmcm9udC4KKwkgKi8KKwlpZiAoIWlzVG9wTGV2ZWwpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCSBlcnJtc2coIiVzIGNhbm5vdCBiZSBleGVjdXRlZCBmcm9tIGEgZnVuY3Rpb24g b3IgcHJvY2VkdXJlIiwKKwkJCQkJCSJXQUlUIEZPUiIpKSk7CisKIAkvKgogCSAqIFdlIGFyZSBn b2luZyB0byB3YWl0IGZvciB0aGUgTFNOLiAgV2Ugc2hvdWxkIGZpcnN0IGNhcmUgdGhhdCB3ZSBk b24ndAogCSAqIGhvbGQgYSBzbmFwc2hvdCBhbmQgY29ycmVzcG9uZGluZ2x5IG91ciBNeVByb2Mt PnhtaW4gaXMgaW52YWxpZC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5j IGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggMWQzNGMxOTkuLjczYTU2ZjFkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90 Y29wL3V0aWxpdHkuYwpAQCAtMTA2Miw3ICsxMDYyLDggQEAgc3RhbmRhcmRfUHJvY2Vzc1V0aWxp dHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCiAJCWNhc2UgVF9XYWl0U3RtdDoKIAkJCXsKLQkJCQlF eGVjV2FpdFN0bXQocHN0YXRlLCAoV2FpdFN0bXQgKikgcGFyc2V0cmVlLCBkZXN0KTsKKwkJCQlF eGVjV2FpdFN0bXQocHN0YXRlLCAoV2FpdFN0bXQgKikgcGFyc2V0cmVlLCBpc1RvcExldmVsLAor CQkJCQkJCSBkZXN0KTsKIAkJCX0KIAkJCWJyZWFrOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jb21tYW5kcy93YWl0LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0LmgKaW5kZXggNTIx YTMxMjkuLmQ3YjNlZTg1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0LmgK KysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdC5oCkBAIC0xNiw3ICsxNiw4IEBACiAjaW5j bHVkZSAicGFyc2VyL3BhcnNlX25vZGUuaCIKICNpbmNsdWRlICJ0Y29wL2Rlc3QuaCIKIAotZXh0 ZXJuIHZvaWQgRXhlY1dhaXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2FpdFN0bXQgKnN0bXQs IERlc3RSZWNlaXZlciAqZGVzdCk7CitleHRlcm4gdm9pZCBFeGVjV2FpdFN0bXQoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBXYWl0U3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsLAorCQkJCQkJRGVzdFJl Y2VpdmVyICpkZXN0KTsKIGV4dGVybiBUdXBsZURlc2MgV2FpdFN0bXRSZXN1bHREZXNjKFdhaXRT dG10ICpzdG10KTsKIAogI2VuZGlmCQkJCQkJCS8qIFdBSVRfSCAqLwo= --0000000000008c85d4064f01f14e Content-Type: application/octet-stream; name="v2-0001-waitforlsn-tests.patch" Content-Disposition: attachment; filename="v2-0001-waitforlsn-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnr5lqoo1 ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5wbCBiL3Ny Yy90ZXN0L3JlY292ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5wbAppbmRleCBiZjYxYjhjNC4uY2Ew Nzg3M2UgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5w bAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0OV93YWl0X2Zvcl9sc24ucGwKQEAgLTIxNiw3 ICsyMTYsNyBAQCAkbm9kZV9zdGFuZGJ5LT5wc3FsKAogCSJTRUxFQ1QgcGdfd2FsX3JlcGxheV93 YWl0X3dyYXAoJyR7bHNuM30nKTsiLAogCXN0ZGVyciA9PiBcJHN0ZGVycik7CiBvayggJHN0ZGVy ciA9fgotCSAgL1dBSVQgRk9SIG11c3QgYmUgY2FsbGVkIHdpdGhvdXQgYW4gYWN0aXZlIG9yIHJl Z2lzdGVyZWQgc25hcHNob3QvLAorCSAgL1dBSVQgRk9SIGNhbm5vdCBiZSBleGVjdXRlZCBmcm9t IGEgZnVuY3Rpb24gb3IgcHJvY2VkdXJlLywKIAkiZ2V0IGFuIGVycm9yIHdoZW4gcnVubmluZyB3 aXRoaW4gYW5vdGhlciBmdW5jdGlvbiIpOwogCiAjIDYuIENoZWNrIHBhcmFtZXRlciB2YWxpZGF0 aW9uIGVycm9yIGNhc2VzIG9uIHN0YW5kYnkgYmVmb3JlIHByb21vdGlvbgo= --0000000000008c85d4064f01f14e--