Skip to content

[wasm] Pin linux/win V8 to 15.1.103 for exnref support#130084

Open
DrewScoggins wants to merge 1 commit into
dotnet:mainfrom
DrewScoggins:wasm-perf-v8-exnref-bump
Open

[wasm] Pin linux/win V8 to 15.1.103 for exnref support#130084
DrewScoggins wants to merge 1 commit into
dotnet:mainfrom
DrewScoggins:wasm-perf-v8-exnref-bump

Conversation

@DrewScoggins

Copy link
Copy Markdown
Member

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

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 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.

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>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_V8Version from 14.9.20715.1.103.
  • Update win_V8Version from 14.9.20715.1.103.
  • Keep macos_V8Version at 15.1.103 (now all OSes match).

@DrewScoggins DrewScoggins requested a review from ilonatommy July 1, 2026 15:39
@DrewScoggins DrewScoggins assigned lewing and pavelsavara and unassigned lewing and pavelsavara Jul 1, 2026
@ilonatommy

Copy link
Copy Markdown
Member

@DrewScoggins we added #129974 to prevent any downgrades of this kind in the future.

@DrewScoggins

Copy link
Copy Markdown
Member Author

I see that there are three failures. One the job got deadlettered. One has this error:

  • rm -rf /var/folders/pj/9qcdcssn0jd88t59py0n9jnc0000gr/T/tmp.3YydGWXjNw
  • dotnet dev-certs https
    There was an error saving the HTTPS developer certificate to the current user personal certificate store.
  • export _commandExitCode=2
  • _commandExitCode=2`

And the last seems to have a bad docker image. Are these known issues for WASM?

@DrewScoggins

Copy link
Copy Markdown
Member Author

Re-running the failed jobs, to see if they pass. Most of the failures looked unrelated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants