Help needed debugging a storage issue - Mailing list pgsql-general

From Tudor Zaharia
Subject Help needed debugging a storage issue
Date
Msg-id DU2PR09MB54089FABC3436B094AE69B94CFA2A@DU2PR09MB5408.eurprd09.prod.outlook.com
Whole thread Raw
List pgsql-general
Hi, my name is Tudor and I am one of the maintainers of PGlite - PostgreSQL in WASM. I am doing a major refactoring of our codebase and I am a bit stuck in the last step of initdb. 

IIUC, my problem is related to the storage layer. I see this in the logs: 

2025-12-08 21:38:42.741 +01 [42] WARNING:  invalid page in block 0 of relation base/1/1259_fsm; zeroing out page
2025-12-08 21:38:42.882 +01 [42] WARNING:  invalid page in block 2 of relation base/1/1259_fsm; zeroing out page
2025-12-08 21:38:42.903 +01 [42] FATAL:  invalid page in block 1 of relation base/1/2600
2025-12-08 21:38:42.903 +01 [42] STATEMENT:  CREATE VIEW pg_stats_ext WITH (security_barrier) AS <ommited>

base/1/1259_fsm is 1MB
base/1/2600 is 16KB

Looking through the logs ("boot" stage):

DEBUG:  building index "pg_toast_2600_index" on table "pg_toast_2600" serially
DEBUG:  index "pg_toast_2600_index" can safely use deduplication
...
LOG:  checkpoint complete: wrote 227 buffers (1.4%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.003 s, sync=0.000 s, total=0.004 s; sync files=0, longest=0.000 s, average=0.000 s; distance=711 kB, estimate=711 kB; lsn=0/1B1D38, redo lsn=0/1B1D38

I am using PostgreSQL v17.5 (also did some test on v17.7).

I would appreciate some pointers in debugging this further.

PS: I have been trying various "-c" flags, which got the initialization process further, but invariably fails with 'FATAL: invalid page in block ...' error. These are the flags I am using right now in "boot" stage: '--boot', '-F', '-c', 'log_checkpoints=true', '-X', '1048576', '-d', '4', '-D', '/pglite/data', '-c', 'checkpoint_flush_after=1', '-c', 'fsync=on', '-c', 'synchronous_commit=on', '-c', 'effective_io_concurrency=1', '-c', 'maintenance_io_concurrency=1', '-c','backend_flush_after=1', '-c', 'io_combine_limit=1', '-c', 'ignore_invalid_pages=on', '-c', 'ignore_system_indexes=on', '-c', 'ignore_checksum_failure=on', '-c', 'backend_flush_after=1' that got me to the "VACUUM FREEZE" step of the "single" stage.
 

pgsql-general by date:

Previous
From: Bernice Southey
Date:
Subject: Advent of Code Day 8
Next
From: Igor Korot
Date:
Subject: How do I check for NULL