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.