pcbjam/scripts/common
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Viktor Vaczi a4ad69412e fix(wasm): bind dynCall_* to real DYNCALLS=1 exports; refactor shim into files
The shim bound bare dynCall_* names to JS getWasmTableEntry() calls, bypassing
the asyncify-instrumented dynCall_* wasm trampolines that -sDYNCALLS=1 provides.
That broke Asyncify unwind/rewind through indirect calls -> "indirect call
signature mismatch" (caught every frame in Firefox; fatal renderer crash in
Chrome). Bind the bare names to wasmExports["dynCall_<sig>"] instead.

Result: the PCBnew "select draw lines" e2e is green in Firefox (tool selects and
draws, zero page errors). Dropped the fiber-stabilization block, the shipped
diagnostic block, and the exportCallStack JS hack (all compensated for the wrong
binding); shim shrank 521 -> ~250 lines.

- scripts/common/inject-dyncall-shims.sh: orchestrator only; injected JS extracted
  to scripts/common/shims/
- scripts/common/shims/dyncall-binding.js.tmpl: per-signature binding template
- scripts/common/shims/handlesleep.js: nested-Asyncify handleSleep fix (#9153)
- scripts/common/shims/diagnostics.js: logging-only, opt-in via SHIM_DIAGNOSTICS=1
- tests/package.json: add test:kicad:firefox / test:kicad:chrome scripts

Known issue (tracked separately): Chrome still renderer-crashes on the first
coroutine resume. Asyncify.doRewind replays the deep main-context call stack and
exceeds V8's execution-stack limit (Firefox tolerates the same wasm). Proper fix
is JSPI.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 15:07:10 +02:00
..
shims fix(wasm): bind dynCall_* to real DYNCALLS=1 exports; refactor shim into files 2026-05-25 15:07:10 +02:00
apply-asyncify.sh wip: nested-asyncify fix, wxAuiToolBar registration, tests, research docs 2026-04-21 13:58:16 +02:00
apply-finalize.sh Fix clean build issues 2025-12-27 15:28:20 +01:00
env.sh fix(docker): Replace emsdk image with Ubuntu + emsdk from source 2026-03-19 12:44:26 +01:00
functions.sh fix(wasm): Fix asyncify rewind with asyncify-aware dynCall shims 2026-03-13 12:26:48 +01:00
get-wasm-opt.sh fix(wasm): Fix asyncify rewind with asyncify-aware dynCall shims 2026-03-13 12:26:48 +01:00
inject-dyncall-shims.sh fix(wasm): bind dynCall_* to real DYNCALLS=1 exports; refactor shim into files 2026-05-25 15:07:10 +02:00
logging.sh fix(wasm): Fix Emscripten empty callback functions for pthreads builds 2026-01-12 14:19:13 +01:00
versions.sh fix(wasm): Fix asyncify rewind with asyncify-aware dynCall shims 2026-03-13 12:26:48 +01:00