[wasm] Pin linux/win V8 to 15.1.103 for exnref support#130084
Conversation
PR dotnet#129851 switched WASM exception handling to the standardized exnref proposal, which requires V8 with --experimental-wasm-exnref (V8 15.1+). The subsequent chrome-for-testing bump (dotnet#129934) recomputed the V8 version from Chrome 149 and reverted linux_V8Version/win_V8Version from 15.1.103 back to 14.9.207, which does not understand exnref. As a result the wasm perf leg (which installs V8 via jsvu using linux_V8Version) and other V8 shell legs abort at startup: Warning: unknown flag --experimental-wasm-exnref. MONO_WASM: Assert failed: This browser/engine doesn't support WASM exception handling. Restore linux/win V8 to 15.1.103 (matching macos_V8Version), which is available on the V8 canary CDN that jsvu downloads from and supports exnref behind the flag already passed by WasmRunnerTemplate.sh and the perf harness. See dotnet#129849. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR updates the WASM test/perf tooling configuration to pin the Linux and Windows V8 versions back to 15.1.103, aligning them with macOS, so V8-based legs can run with the --experimental-wasm-exnref flag required by the standardized WASM exception-handling (exnref) path.
Changes:
- Update
linux_V8Versionfrom14.9.207→15.1.103. - Update
win_V8Versionfrom14.9.207→15.1.103. - Keep
macos_V8Versionat15.1.103(now all OSes match).
|
@DrewScoggins we added #129974 to prevent any downgrades of this kind in the future. |
|
I see that there are three failures. One the job got deadlettered. One has this error:
And the last seems to have a bad docker image. Are these known issues for WASM? |
|
Re-running the failed jobs, to see if they pass. Most of the failures looked unrelated. |
|
Thank you! |
|
Tagging subscribers to 'arch-wasm': @lewing, @pavelsavara |
## Problem WASM perf runs (and other V8 shell-engine legs) abort at startup: ``` Warning: unknown flag --experimental-wasm-exnref. MONO_WASM: Assert failed: This browser/engine doesn't support WASM exception handling. main.mjs: Error: Top-level await promise never resolved ``` ## Root cause - #129851 (`[browser] WASM exception handling to use the standardized exnref`) switched the runtime to the **exnref** exception-handling proposal, which requires a V8 that understands `--experimental-wasm-exnref` (V8 15.1+). That PR set `linux/macos/win_V8Version` to `15.1.103`. - The later automated chrome-for-testing bump #129934 recomputed the V8 version from the pinned Chrome (149 → V8 14.9) and **reverted** `linux_V8Version` and `win_V8Version` back to `14.9.207` (leaving only `macos_V8Version` at `15.1.103`). `14.9.207` predates exnref, so it rejects the flag and the runtime's startup feature check (`featureWasmFinalEh`) asserts. The wasm perf leg is hit because [`dotnet/performance` `run_performance_job.py`](https://github.com/dotnet/performance/blob/main/scripts/run_performance_job.py) reads `linux_V8Version` and installs exactly that build via `jsvu`. ## Fix Restore `linux_V8Version` and `win_V8Version` to `15.1.103` (matching `macos_V8Version`). The `v8-linux64-rel-15.1.103.zip` and `v8-win32-rel-15.1.103.zip` binaries exist on the V8 canary CDN that `jsvu` / `DownloadAndInstallV8` use (verified 200 OK), and `15.1.103` supports exnref behind the `--experimental-wasm-exnref` flag already emitted by `eng/testing/WasmRunnerTemplate.sh` and the perf harness (dotnet/performance#5247). ## Note on the auto-updater The chrome-for-testing auto-bump derives the V8 version from the Chrome milestone, so a future run will revert this to `14.9.x` again unless the pinned Chrome is advanced to a milestone whose V8 is 15.1+ (Chrome 151) or the updater is taught not to downgrade V8 below the exnref floor. Tracking: #129849. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Problem
WASM perf runs (and other V8 shell-engine legs) abort at startup:
Root cause
[browser] WASM exception handling to use the standardized exnref) switched the runtime to the exnref exception-handling proposal, which requires a V8 that understands--experimental-wasm-exnref(V8 15.1+). That PR setlinux/macos/win_V8Versionto15.1.103.linux_V8Versionandwin_V8Versionback to14.9.207(leaving onlymacos_V8Versionat15.1.103).14.9.207predates exnref, so it rejects the flag and the runtime's startup feature check (featureWasmFinalEh) asserts. The wasm perf leg is hit becausedotnet/performancerun_performance_job.pyreadslinux_V8Versionand installs exactly that build viajsvu.Fix
Restore
linux_V8Versionandwin_V8Versionto15.1.103(matchingmacos_V8Version). Thev8-linux64-rel-15.1.103.zipandv8-win32-rel-15.1.103.zipbinaries exist on the V8 canary CDN thatjsvu/DownloadAndInstallV8use (verified 200 OK), and15.1.103supports exnref behind the--experimental-wasm-exnrefflag already emitted byeng/testing/WasmRunnerTemplate.shand the perf harness (dotnet/performance#5247).Note on the auto-updater
The chrome-for-testing auto-bump derives the V8 version from the Chrome milestone, so a future run will revert this to
14.9.xagain unless the pinned Chrome is advanced to a milestone whose V8 is 15.1+ (Chrome 151) or the updater is taught not to downgrade V8 below the exnref floor. Tracking: #129849.