You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
OpenOMF cross-compiled to WebAssembly (via the openomf-web port) traps at startup inside cfg_free() whenever a mod manifest is parsed. Root cause is a return-type mismatch in the vendored libconfuse dependency, not OpenOMF code.
Root cause
libconfuse ships:
// src/confuse.cexternvoidcfg_yylex_destroy(void); // declaration
...
cfg_yylex_destroy(); // called from cfg_free()
On native ABIs the mismatched return type is harmless. On WebAssembly the runtime enforces exact signatures, so the call traps (RuntimeError: unreachable). Every modmanager manifest parse hits this during engine_init(), so the game never reaches the main menu.
Reproduction
WASM build with any .zip mod present under data/mods/. Startup log stops at:
Found 6 system mods.
Found 0 user mods.
RuntimeError: unreachable
Fix
Upstream libconfuse PR aligns the declaration with the generated definition:
Activity
katajakasa commentedon Sep 10, 2026
Noted. Looks like this simply requires a version update for libconfuse from our side, when libconfuse gets v3.5.