Repository navigation
[wasm][CoreCLR][R2R] Composite WebCIL images request an unsupported loaded PE layout #131767
Description
Activity
- addedarch-wasmWebAssembly architectureWebAssembly architectureos-browserBrowser variant of arch-wasmBrowser variant of arch-wasm
on Aug 3, 2026 dotnet-policy-service commented
on Aug 3, 2026 ContributorMore actionsTagging subscribers to 'arch-wasm': @lewing, @pavelsavara
See info in area-owners.md if you want to be subscribed.- addeduntriagedNew issue has not been triaged by the area ownerNew issue has not been triaged by the area owner
on Aug 3, 2026 dotnet-policy-service commented
on Aug 3, 2026 ContributorMore actionsTagging subscribers to this area: @agocke
See info in area-owners.md if you want to be subscribed.- added a commit that references this issue
on Aug 4, 2026 - unmarked [ci-scan] Test failure: browser-wasm R2R genericsload asserts bIsFlatLayoutSuitable (callgenericctor/usegenericfield) #131842 as a duplicate of this issue
on Aug 5, 2026 Failed in https://dev.azure.com/dnceng-public/public/_build/results?buildId=1540634.
coreclr browser wasm Checked @ (Ubuntu.2604.Amd64.Open)AzureLinux.3.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-26.04-helix-webassembly-amd64@sha256:0be8725e08b6d0f58ec0290f3f3b70c449123e78b2b33853e9049df84b912fa8 - readytorun/tests/genericsload/callgenericctor/callgenericctor.cmd - readytorun/tests/genericsload/usegenericfield/usegenericfield.cmd - Regressions/coreclr/GitHub_49826/test49826/test49826.cmd- addedblocking-outerloopBlocking the 'runtime-coreclr outerloop' and 'runtime-libraries-coreclr outerloop' runsBlocking the 'runtime-coreclr outerloop' and 'runtime-libraries-coreclr outerloop' runs
on Aug 5, 2026 - added a commit that references this issue
on Aug 5, 2026 - removeduntriagedNew issue has not been triaged by the area ownerNew issue has not been triaged by the area owner
on Aug 6, 2026 Likely fixed by #131354
Verified fixed by #131354.
The Aug 5 failure report above predates the fix. Build 1540634 queued at 09:00 UTC on
c8f97975ab0d8ff84aebf176829e17f7c7052f03; #131354 merged at 09:25 UTC asc8e00c97835aa8278551ec51afed831a1987d462. That commit is not an ancestor of the build's source version, so the run did not contain the fix.Current state on
main— outerloop build 1565369 (113dfc84608caa4b9a87a302c952bf7f35617240),coreclr browser wasm Checked: both Helix jobs green at 85/85 work items, zero failures. NobIsFlatLayoutSuitableassert anywhere in the logs.The three tests reported above now pass, each genuinely going through the previously-broken path (
crossgen2 ... --composite -f wasmemittingcomposite-r2r.wasm, then executed under node against a Checked runtime):Test Result readytorun/tests/genericsload/callgenericctor/callgenericctor.cmdPassed 19:21:42.679readytorun/tests/genericsload/usegenericfield/usegenericfield.cmdPassed 19:21:42.725Regressions/coreclr/GitHub_49826/test49826/test49826.cmdPassed 19:23:49.806The original repro from the issue description also passes —
baseservices/TieredCompilation/BasicTest_DefaultMode_R2remitscomposite-r2r.wasmand reportsExpected: 100 / Actual: 100 — END EXECUTION - PASSED.No exclusion referencing this issue exists in the test tree, so none of the above is masked by a disabled test.
For the record, one unrelated browser-wasm failure appeared in build 1564131: work item
Regression_PdbOnly_r_2hit the 900-second timeout inglobal::A.B.TestEntryPoint(). That is a hang with no layout assert, it is not this issue, and it did not reproduce in the latest run.Closing.
Note
This analysis was performed with GitHub Copilot assistance.
- locked and limited conversation to collaborators
on Sep 24, 2026
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsNo status
Description
Composite ReadyToRun WebCIL images generated successfully by Crossgen2 cannot be loaded by a Checked CoreCLR browser-WASM runtime.
NativeImage::OpenrequestsPEImageLayout::LAYOUT_LOADEDfor the composite image even though WebAssembly definesPEIMAGE_FLAT_LAYOUT_ONLY. The loaded layout cannot be created, and the fallback reachesPEImage::GetOrCreateLayoutInternalwithoutLAYOUT_FLATbeing permitted.Reproduction Steps
Build a Checked CoreCLR browser-WASM runtime and generate
Core_Root.Build and run the existing composite ReadyToRun test:
Crossgen2 emits and validates
composite-r2r.wasmand its component images.CoreCLR fails when loading the composite image.
This was reproduced on current
mainat3241014d5a2d09d044d112af0b5bed2d2ad94e96.Expected behavior
A valid composite WebCIL ReadyToRun image should load and execute on CoreCLR browser-WASM.
Actual behavior
The runtime fails with:
Crossgen2 generation and component validation complete successfully; the failure occurs when CoreCLR loads the emitted composite image.
Regression?
No known regression. The defect was exposed as composite ReadyToRun runtime-test coverage was enabled for CoreCLR browser-WASM.
Known Workarounds
Disable composite ReadyToRun execution for affected CoreCLR browser-WASM tests until the runtime requests
LAYOUT_FLATon flat-layout-only targets.Configuration
Other information
Open PR #131354 addresses this exact flat-layout failure. Issue #130524 tracks the broader CoreCLR browser-WASM ReadyToRun effort.
The eager-fixup lock-order failure previously observed after bypassing this assertion has already been fixed on
mainby PR #131355 and is not part of this issue.Note
This issue was drafted with GitHub Copilot assistance.