Status
Integration — pglite boot has never passed on main (failures back to 2026-05-18, predating the v1.2.5 tag). Embedded Postgres does not boot on any platform. This is a real product defect, not CI flake.
Current failure
pglite exited unexpectedly: error while executing at wasm backtrace:
0: 0x59fed6 - <wasm function 11139>
1: 0x2408f9 - <wasm function 3146>
2: 0x23e95c - <wasm function 3144>
3: 0x50c033 - <wasm function 9716>
4: 0x50c1ae - <wasm function 9719>
5: 0x1c15ff - <wasm function 2534>
Root cause
pglite v0.2.17 is an Emscripten SIDE_MODULE. wasmtime_runtime.go defines the GOT.mem / GOT.func namespace globals but nothing performs the actual dynamic-linking relocation, so they keep their initial values and address computation lands outside linear memory.
Progress so far
What a real fix needs
Host-side Emscripten dynamic linking: process the dylink.0 custom section, allocate memory/table segments, apply GOT.mem and GOT.func relocations, and set __memory_base / __table_base / __heap_base before calling __main_argc_argv.
Alternatives worth pricing first:
- ship pglite built as MAIN_MODULE / standalone WASI instead of SIDE_MODULE
- pin a pglite build known to run under wasmtime
- use a runtime with Emscripten dynamic-linking support
Prior work
Unmerged local branches carry earlier attempts: wip/pglite-got, wip/pglite-got-relocation, fix/pglite-trampoline-t11.
Why this issue exists
The four internal/embedded integration tests are being quarantined with t.Skip referencing this issue, so that main can go green for the v1.2.6 patch release. Per the CI/CD-100%-Green doctrine, skipping is only permitted with a linked issue — this is that issue. The skip must be removed as part of fixing this.
Status
Integration — pglite boothas never passed on main (failures back to 2026-05-18, predating the v1.2.5 tag). Embedded Postgres does not boot on any platform. This is a real product defect, not CI flake.Current failure
Root cause
pglite v0.2.17 is an Emscripten SIDE_MODULE.
wasmtime_runtime.godefines theGOT.mem/GOT.funcnamespace globals but nothing performs the actual dynamic-linking relocation, so they keep their initial values and address computation lands outside linear memory.Progress so far
__stack_pointerto the top of memory. This moved the failure from a single-frame trap at0xfffffef0to a 6-frame deep call stack, i.e. pglite now boots substantially further before trapping.What a real fix needs
Host-side Emscripten dynamic linking: process the
dylink.0custom section, allocate memory/table segments, apply GOT.mem and GOT.func relocations, and set__memory_base/__table_base/__heap_basebefore calling__main_argc_argv.Alternatives worth pricing first:
Prior work
Unmerged local branches carry earlier attempts:
wip/pglite-got,wip/pglite-got-relocation,fix/pglite-trampoline-t11.Why this issue exists
The four
internal/embeddedintegration tests are being quarantined witht.Skipreferencing this issue, so that main can go green for the v1.2.6 patch release. Per the CI/CD-100%-Green doctrine, skipping is only permitted with a linked issue — this is that issue. The skip must be removed as part of fixing this.