BUG #19484: Segmentation fault triggered by FDW
PG Bug reporting form <noreply@postgresql.org>
From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: 798604270@qq.com
Date: 2026-05-18T06:38:34Z
Lists: pgsql-bugs
The following bug has been logged on the website: Bug reference: 19484 Logged by: Chi Zhang Email address: 798604270@qq.com PostgreSQL version: 18.4 Operating system: Ubuntu 24.04 Description: Hi, I found the following test case triggers a segmentation fault: ``` \set ON_ERROR_STOP on CREATE EXTENSION postgres_fdw; CREATE SERVER loopback FOREIGN DATA WRAPPER postgres_fdw OPTIONS ( host '/path/to/pg_socket', port '5432', dbname :'dbname' ); CREATE USER MAPPING FOR postgres SERVER loopback OPTIONS (user 'postgres'); CREATE SCHEMA r; CREATE TABLE r.remote_p2 (a int NOT NULL, b int); CREATE TABLE pt (a int NOT NULL, b int) PARTITION BY LIST (a); CREATE TABLE pt_p1 PARTITION OF pt FOR VALUES IN (1); CREATE FOREIGN TABLE pt_p2 PARTITION OF pt FOR VALUES IN (2) SERVER loopback OPTIONS (schema_name 'r', table_name 'remote_p2'); INSERT INTO pt_p1 VALUES (1, 10); INSERT INTO r.remote_p2 VALUES (2, 20); SET plan_cache_mode = force_generic_plan; PREPARE upd(int) AS UPDATE pt SET b = b + 1 WHERE a = $1 RETURNING tableoid::regclass, a, b; EXPLAIN (costs off) EXECUTE upd(2); EXECUTE upd(2); SELECT * FROM r.remote_p2 ORDER BY a; ``` This is the log: ``` 2026-05-18 13:40:41.888 CST [21729] LOG: database system is ready to accept connections 2026-05-18 13:41:03.317 CST [21932] LOG: unexpected EOF on client connection with an open transaction 2026-05-18 13:41:03.317 CST [21729] LOG: client backend (PID 21931) was terminated by signal 11: Segmentation fault 2026-05-18 13:41:03.317 CST [21729] DETAIL: Failed process was running: EXECUTE upd(2); 2026-05-18 13:41:03.317 CST [21729] LOG: terminating any other active server processes 2026-05-18 13:41:03.319 CST [21729] LOG: all server processes terminated; reinitializing 2026-05-18 13:41:03.345 CST [21936] LOG: database system was interrupted; last known up at 2026-05-18 13:40:41 CST 2026-05-18 13:41:03.509 CST [21936] LOG: database system was not properly shut down; automatic recovery in progress 2026-05-18 13:41:03.513 CST [21936] LOG: redo starts at 0/98371040 2026-05-18 13:41:03.531 CST [21936] LOG: invalid record length at 0/987B6E68: expected at least 24, got 0 2026-05-18 13:41:03.531 CST [21936] LOG: redo done at 0/987B6E40 system usage: CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.01 s 2026-05-18 13:41:03.537 CST [21937] LOG: checkpoint starting: end-of-recovery fast wait 2026-05-18 13:41:03.654 CST [21937] LOG: checkpoint complete: end-of-recovery fast wait: wrote 975 buffers (6.0%), wrote 3 SLRU buffers; 0 WAL file(s) added, 0 removed, 0 recycled; write=0.081 s, sync=0.030 s, total=0.121 s; sync files=325, longest=0.005 s, average=0.001 s; distance=4375 kB, estimate=4375 kB; lsn=0/987B6E68, redo lsn=0/987B6E68 2026-05-18 13:41:03.660 CST [21729] LOG: database system is ready to accept connections ``` I built the Postgres from source code 901ed9b352b41f034e17bc540725082a488fce31 of github commit.
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Avoid ABI break in ModifyTableState from the FDW pruning fix
- bba4e095d250 18 (unreleased) landed
-
Re-index ModifyTable FDW arrays when pruning result relations
- b43f8aa4cb30 19 (unreleased) landed
- 1ef917e3a61a 18 (unreleased) landed
-
Fix universal builds on MacOS
- 901ed9b352b4 19 (unreleased) cited
-
Track unpruned relids to avoid processing pruned relations
- cbc127917e04 18.0 cited