BUG #19056: ExecInitPartitionExecPruning segfault due to NULL es_part_prune_infos

From: PG Bug reporting form <noreply(at)postgresql(dot)org>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Cc: feichanghong(at)qq(dot)com
Subject: BUG #19056: ExecInitPartitionExecPruning segfault due to NULL es_part_prune_infos
Date: 2025-09-17 15:08:40
Message-ID: 19056-a677cef9b54d76a0@postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 19056
Logged by: Fei Changhong
Email address: feichanghong(at)qq(dot)com
PostgreSQL version: 18rc1
Operating system: Operating system: centos 8,Kernel version: 5.10.13
Description:

Hi all,

I recently encountered a crash when executing a DELETE on PG18. The issue
can be reproduced on the HEAD branch with the following steps:

session1:
```sql
CREATE TABLE test_hash (
id int,
data text
) PARTITION BY HASH (id);

CREATE TABLE test_hash_0 PARTITION OF test_hash
FOR VALUES WITH (MODULUS 2, REMAINDER 0);

CREATE TABLE test_hash_1 PARTITION OF test_hash
FOR VALUES WITH (MODULUS 2, REMAINDER 1);

insert into test_hash select 1, '1';

begin ;
update test_hash set data = '2';
```

session2:
```sql
set plan_cache_mode to force_generic_plan;
prepare s as delete from test_hash where id = $1;
execute s(1);
```

session1:
```sql
commit;
```

The following stack trace was observed:
```
(gdb) bt 10
#0 0x000000000079de74 in list_nth (list=0x0, n=0) at
../../../src/include/nodes/pg_list.h:301
#1 0x00000000007a0eeb in ExecInitPartitionExecPruning (planstate=0x1884f40,
n_total_subplans=2, part_prune_index=0,
relids=0x18720a8, initially_valid_subplans=0x7ffc6d56b198) at
execPartition.c:1891
#2 0x00000000007bc8d0 in ExecInitAppend (node=0x1863bb0, estate=0x1884ca0,
eflags=0) at nodeAppend.c:147
#3 0x00000000007a2300 in ExecInitNode (node=0x1863bb0, estate=0x1884ca0,
eflags=0) at execProcnode.c:182
#4 0x000000000079af67 in EvalPlanQualStart (epqstate=0x186adf8,
planTree=0x1863bb0) at execMain.c:3143
#5 0x000000000079a8ab in EvalPlanQualBegin (epqstate=0x186adf8) at
execMain.c:2930
#6 0x00000000007e18e1 in ExecDelete (context=0x7ffc6d56b480,
resultRelInfo=0x186af20, tupleid=0x7ffc6d56b402,
oldtuple=0x0, processReturning=true, changingPart=false, canSetTag=true,
tmresult=0x0, tupleDeleted=0x0,
epqreturnslot=0x0) at nodeModifyTable.c:1709
#7 0x00000000007e61e2 in ExecModifyTable (pstate=0x186ad10) at
nodeModifyTable.c:4518
#8 0x00000000007a29a1 in ExecProcNodeFirst (node=0x186ad10) at
execProcnode.c:469
#9 0x00000000007959cb in ExecProcNode (node=0x186ad10) at
../../../src/include/executor/executor.h:316
```

Likely cause: EvalPlanQualStart creates a new EState without setting
es_part_prune_infos.

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Masahiko Sawada 2025-09-17 16:00:36 Re: Read Replica termination occurs when its max_active_replication_origins setting is lower than the primary
Previous Message PG Bug reporting form 2025-09-17 14:34:23 BUG #19055: Server crash at ExecInterpExpr