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 1vi9i7-00Ghc6-2x for pgsql-bugs@arkaria.postgresql.org; Tue, 20 Jan 2026 11:15:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vi9i6-000hDV-2f for pgsql-bugs@arkaria.postgresql.org; Tue, 20 Jan 2026 11:15:47 +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.96) (envelope-from ) id 1vi9i6-000hDM-1h for pgsql-bugs@lists.postgresql.org; Tue, 20 Jan 2026 11:15:46 +0000 Received: from mail-lj1-x230.google.com ([2a00:1450:4864:20::230]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vi9i4-001ViQ-0q for pgsql-bugs@lists.postgresql.org; Tue, 20 Jan 2026 11:15:46 +0000 Received: by mail-lj1-x230.google.com with SMTP id 38308e7fff4ca-37fd6e91990so52083181fa.3 for ; Tue, 20 Jan 2026 03:15:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1768907742; cv=none; d=google.com; s=arc-20240605; b=YxMHARRwHKnQO5mqIgpjlzYWOP0+clOORwo0+HGpAHZoYNPvuh4/+9G2PQqJSBOx6t 4VWhkSyIvdd3VQfTwdzI+MrsFGmknmFcwnjjd3BDITtI0yXd4roCc6lESxxJUYub81gc 9t8c+LbSxvYz0yA6649nyGRlBDc0e7pNrx0IOtQ5vMs677Tzv5A3LVfx2WFlr7GdvNxB PdDr/pK4nqOlQfPjn+hhd0oNAD+Iq287Y/Fj/tekCaDPx32yLYYnw7/jwqESepzfLrs9 fTsJqq7V+RGXlKXKISEgQ9ELSkQiz0lRuy0Roa2S7ay2BVfUgQfJcPEQchKuAgVwfXDC aqIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=iLyU6DFsHBLkGT+Gyzcp/VQrtsXHzys1ecRxUGF7BHw=; fh=Tbfv4g2BdrrwvAmuoW7gi/HxS7g1OG/lkQGYVXPHtXE=; b=ThqCMBdCx+iZ085S5iim/pMLzmoH5JXJWYFLzmhK1jfgRu4QqIj/9QUkjGSNu20+cY yrqJZosaYSs1ofRq3HsqPMruHLTtwzoeJPDBXE//wQAZDeViUdiqw9fYALGkXsxBEGbf dATQFg3+IGsaCK3UFnACm2xPKEpcd14T5ucnczmw8kKrV9FRqE8q+V5CGibdggVh/tme RowqtrUSQLiFnC2UL45/YC0KbWkRVSQylDRU7Ts7Fpz854SSyGI2KFBaKsRa9ktJAgYb 0As6idDepuwSGDzyYqRTLYYs4o97duj/ieyW/JxMdNpGeV+cLdUfOWAIAV5cvJXwMhd7 +kQQ==; 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=20230601; t=1768907742; x=1769512542; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=iLyU6DFsHBLkGT+Gyzcp/VQrtsXHzys1ecRxUGF7BHw=; b=njxU9zbiAIJrQ3Rod5uFsdhYGj7wuMZ4HtOfXmAC1SW1fThd3OTm7STSzzpQOR7/f0 4bl2Vp/D3lPmFeVcGv3dv8ePQjRR8yvTABVtjQE1ZNhT6rCw8A2lc8W1ejrYbT3QkEbF vlICtv2+eOkkXHpb5Gaocl8ukuN/2tg96+tcwnRbOqrCyJh1zCVN2kcuCj7WYx4lCK6n qpKn8VKkSnlgaSs9OdQkW4cyafAQNxlvN8etyPXGmh2+B2+Y3iYUQlAopw79AlW6NHDN 4841jPIC11GwVuZZbVUpgZf0oOUceqjeVf27hBj+Vk6/r8sN7HPWiNG211y6BXt42FcS Nx2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768907742; x=1769512542; h=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=iLyU6DFsHBLkGT+Gyzcp/VQrtsXHzys1ecRxUGF7BHw=; b=s35PubqfzVt1gfpOjuYHzyIlve622wDV/hgY2Yl1Ns4Jq+RY1l0TEfvZ9cokjmPAip hEnzqS5qNgOS8yiGlpOwbPwfZVX0xfbsLG3tpO7afr320lW0vxhfDWaWYAIC5jzvkoL3 bQuYr/fDav66GDkAOnhTlYHvyUBNWNFDozBzvKU9nTcVaVC00pRKQJ1KOOKUqYCRXhah 9E1pwWvsE1Hv4HLLabVaUpPrVnbcepZgWT5x/RkKZ4e1bFaD02RaRu5SbMIeQU5TyR8O zIuCvsjMdaO1CBRs5f+jb8piVI12sGem7XO8vi7gKZG0fKKaBs39Wiad4/NKFMIO84gy 4CiA== X-Forwarded-Encrypted: i=1; AJvYcCVW9KlYmypXC8Az17OyJDfXswiaHZ6dpylUkmTBvPWqjP1dA1UARGwViRUeSkuTPf29z7WxyNLpFuZ9@lists.postgresql.org X-Gm-Message-State: AOJu0YyJvGueBXhq8QLa+Z3OJdTbrh8eFBUTf6RaRy9UWK6AXlZ0hrKk iGCkTOMyBTBS0SLmgXHVeX58S01VwbS08fUD9SgIgmZaJwBNNhOxZN5DyLijsGpzjAZ0lHXHC7k X/jiQebPbSiuci/kFvwliTYenErx/7/0oOevX X-Gm-Gg: AZuq6aIk921toSZX0uxC954Z/KeSLXoXXWhlrFI9kFqeEN7UKSoDjsMkaYxHcOiCJhv vD/NfdVSPZH97bsXXW6Q/2wKewd27tM+6dq6Q8dMtvjhPiJO5xjz5gQafAWWeQnPKnHkQM8g9E0 PZLCZOdSUiOhZGjPFr2psOSQ0YKinMlu2spk9fbU5QaGPVzGbbWsawaPwksDR88pKNPwt3RjhZy 0FYZwRzfsmitIi3jDs4JjcmHmj+ZfOQSa+ab347WXW8EJmMkkIZKQjcrwqvGrhJgvtdbExNZaB1 XTKxJ3bUPBJypfWd26zF8l3MezWaaKeQGov0ej6db2xuA958nHJpv2TOcIR0Od4S4nCxLOd2dJH fjWnvAdsm3g== X-Received: by 2002:a2e:a983:0:b0:380:989:f623 with SMTP id 38308e7fff4ca-383866b01e9mr43939181fa.9.1768907741339; Tue, 20 Jan 2026 03:15:41 -0800 (PST) MIME-Version: 1.0 References: <19384-65ff412feef17f06@postgresql.org> In-Reply-To: <19384-65ff412feef17f06@postgresql.org> From: Rahila Syed Date: Tue, 20 Jan 2026 16:45:31 +0530 X-Gm-Features: AZwV_QhJyeVXyUOJLA3FzpLHoVztDmDZNDXBUWh4qSmqJH-2yfjd1oPiwC2ZLYk Message-ID: Subject: Re: BUG #19384: Server crash at textout To: dllggyx@outlook.com, pgsql-bugs@lists.postgresql.org Content-Type: multipart/alternative; boundary="0000000000009025bc0648cfed3f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009025bc0648cfed3f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Tue, Jan 20, 2026 at 2:29=E2=80=AFPM PG Bug reporting form < noreply@postgresql.org> wrote: > The following bug has been logged on the website: > > Bug reference: 19384 > Logged by: Yuxiao Guo > Email address: dllggyx@outlook.com > PostgreSQL version: 17.7 > Operating system: Ubuntu 20.04 x86-64, docker image postgres:17.7 > Description: > > Hi, I found a crash in PostgreSQL. Here are the details: > > PoC: > DROP TYPE IF EXISTS foo CASCADE; > CREATE TYPE foo AS (a INT, b INT); > BEGIN; > DECLARE c CURSOR FOR SELECT (i, power(2, 30))::foo FROM > generate_series(1,10) i; > FETCH c; > ALTER TYPE foo ALTER ATTRIBUTE b TYPE TEXT; > FETCH c; > > > Stacktrace: > #0 0x7ae1c818a00b (gsignal+0xcb) > #1 0x7ae1c8169859 (abort+0x12b) > #2 0x542fa7 (_ZN11__sanitizer5AbortEv+0x47) > #3 0x5414d1 (_ZN11__sanitizer3DieEv+0xc1) > #4 0x528a14 (_ZN6__asan19ScopedInErrorReportD2Ev+0x1c4) > #5 0x52a5da (_ZN6__asan18ReportGenericErrorEmmmmbmjb+0x5ba) > #6 0x523ef6 (__asan_memcpy+0x1d6) > #7 0x17772d5 (textout+0x1b5) > #8 0x1835834 (OutputFunctionCall+0x174) > #9 0x167a568 (record_out+0x828) > #10 0x1835834 (OutputFunctionCall+0x174) > #11 0x595848 (printtup+0x958) > #12 0x1336280 (RunFromStore+0x1d0) > #13 0x1333ec0 (PortalRunSelect+0x150) > #14 0x133321d (PortalRun+0x51d) > #15 0x132f1de (exec_simple_query+0x146e) > #16 0x1328627 (PostgresMain+0x2c57) > #17 0x13192e4 (BackendMain+0xe4) > #18 0x10a26c3 (postmaster_child_launch+0x193) > #19 0x10adb91 (ServerLoop+0x4821) > #20 0x10a76ec (PostmasterMain+0x241c) > #21 0xd5c2b8 (main+0x458) > #22 0x7ae1c816b083 (__libc_start_main+0xf3) > #23 0x4a9c6e (_start+0x2e) > > > This problem is reproducible, also the issue seems to be linked to cursors since the type cast with only SELECT statements runs fine. CREATE TYPE foo AS (a INT, b INT); ALTER TYPE foo ALTER ATTRIBUTE b TYPE TEXT; postgres=3D# SELECT (i, power(2, 30))::foo FROM generate_series(1,10) i; row ----------------- (1,1073741824) (2,1073741824) (3,1073741824) (4,1073741824) (5,1073741824) (6,1073741824) (7,1073741824) (8,1073741824) (9,1073741824) (10,1073741824) (10 rows) Also, it happens only if ALTER TYPE to TEXT is run after DECLARING the cursor. Another observation is that when I lower the exponent to 10, the crash no longer occurs, but the output is different. CREATE TYPE foo AS (a INT, b INT); BEGIN; DECLARE c CURSOR FOR SELECT (i, power(2, 10))::foo FROM generate_series(1,10) i; DECLARE CURSOR FETCH c; row ---------- (1,1024) (1 row) ALTER TYPE foo ALTER ATTRIBUTE b TYPE TEXT; FETCH c; row ---------- (2,\x10) (1 row) Thank you, Rahila Syed --0000000000009025bc0648cfed3f Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

On Tue, Jan 20, = 2026 at 2:29=E2=80=AFPM PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been logged on= the website:

Bug reference:=C2=A0 =C2=A0 =C2=A0 19384
Logged by:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Yuxiao Guo
Email address:=C2=A0 =C2=A0 =C2=A0 dllggyx@outlook.com
PostgreSQL version: 17.7
Operating system:=C2=A0 =C2=A0Ubuntu 20.04 x86-64, docker image postgres:17= .7
Description:=C2=A0 =C2=A0 =C2=A0 =C2=A0

Hi, I found a crash in PostgreSQL. Here are the details:

PoC:
DROP TYPE IF EXISTS foo CASCADE;
CREATE TYPE foo AS (a INT, b INT);
BEGIN;
DECLARE c CURSOR FOR SELECT (i, power(2, 30))::foo FROM
generate_series(1,10) i;
FETCH c;
ALTER TYPE foo ALTER ATTRIBUTE b TYPE TEXT;
FETCH c;


Stacktrace:
#0 0x7ae1c818a00b (gsignal+0xcb)
#1 0x7ae1c8169859 (abort+0x12b)
#2 0x542fa7 (_ZN11__sanitizer5AbortEv+0x47)
#3 0x5414d1 (_ZN11__sanitizer3DieEv+0xc1)
#4 0x528a14 (_ZN6__asan19ScopedInErrorReportD2Ev+0x1c4)
#5 0x52a5da (_ZN6__asan18ReportGenericErrorEmmmmbmjb+0x5ba)
#6 0x523ef6 (__asan_memcpy+0x1d6)
#7 0x17772d5 (textout+0x1b5)
#8 0x1835834 (OutputFunctionCall+0x174)
#9 0x167a568 (record_out+0x828)
#10 0x1835834 (OutputFunctionCall+0x174)
#11 0x595848 (printtup+0x958)
#12 0x1336280 (RunFromStore+0x1d0)
#13 0x1333ec0 (PortalRunSelect+0x150)
#14 0x133321d (PortalRun+0x51d)
#15 0x132f1de (exec_simple_query+0x146e)
#16 0x1328627 (PostgresMain+0x2c57)
#17 0x13192e4 (BackendMain+0xe4)
#18 0x10a26c3 (postmaster_child_launch+0x193)
#19 0x10adb91 (ServerLoop+0x4821)
#20 0x10a76ec (PostmasterMain+0x241c)
#21 0xd5c2b8 (main+0x458)
#22 0x7ae1c816b083 (__libc_start_main+0xf3)
#23 0x4a9c6e (_start+0x2e)



This problem is reproducible, also the= issue seems to be linked to cursors
since the type cast with only SELEC= T statements runs fine.

CREATE TYPE foo AS (a INT, b INT);
ALTER = TYPE foo ALTER ATTRIBUTE b TYPE TEXT;

postgres=3D# SELECT (i,= power(2, 30))::foo FROM
generate_series(1,10) i;
=C2=A0 =C2=A0 =C2= =A0 =C2=A0row
-----------------
=C2=A0(1,1073741824)
=C2=A0(2,1073= 741824)
=C2=A0(3,1073741824)
=C2=A0(4,1073741824)
=C2=A0(5,1073741= 824)
=C2=A0(6,1073741824)
=C2=A0(7,1073741824)
=C2=A0(8,1073741824= )
=C2=A0(9,1073741824)
=C2=A0(10,1073741824)
(10 rows)

Also= , it happens only=C2=A0 if ALTER TYPE to TEXT is run after DECLARING the cu= rsor.

Another observation is that when I lower the exponent t= o 10, the crash no longer occurs,
but the output is different.

C= REATE TYPE foo AS (a INT, b INT);
BEGIN;
DECLARE c CURSOR FOR = SELECT (i, power(2, 10))::foo FROM
generate_series(1,10) i;
DECLARE C= URSOR
FETCH c;
=C2=A0 =C2=A0row
----------
=C2=A0(1,1024)
(1= row)

ALTER TYPE foo ALTER ATTRIBUTE b TYPE TEXT;
FETCH c;
=C2= =A0 =C2=A0row
----------
=C2=A0(2,\x10)
(1 row)

Than= k you,
Rahila Syed

--0000000000009025bc0648cfed3f--