dotnet / dotnet/runtime

[wasm][wasi] CoreCLR-WASI runtime-test exclusions tracking issue

Open
#130,064 1 comment 0 reactions 0 assignees View on GitHub
arch-wasm area-Codegen-Interpreter-mono os-wasi
Dominant language
C#
Stars
18.3k
Forks
5.6k
PR merge metrics
PR metrics pending

Description

## Summary

Tracking issue for the runtime-tests currently excluded via `true` in the CoreCLR-WASI bring-up (PR #130051).

24 `.ilproj` tests are excluded because they trip specific WASI/interpreter gaps that are independent of the umbrella browser-CoreCLR runtime-tests work in #120708. Grouping them by root cause so each cluster can be tracked / fixed independently:

## Root-cause groups

### Vararg calling convention (13)

The interpreter has no `arglist` / vararg-signature dispatch on WASM; every vararg-using IL test traps with `wasm trap: unreachable` at `DispatchManagedException`.

- `JIT/Directed/Misc/function_pointer/MutualThdRecur-fptr.ilproj`
- `JIT/Methodical/Coverage/arglist_pos.ilproj`
- `JIT/Methodical/refany/seq_d.ilproj`
- `JIT/Methodical/refany/seq_r.ilproj`
- `JIT/Regression/CLR-x86-EJIT/V1-M12-Beta2/b26323/b26323.ilproj`
- `JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b26324/b26324a.ilproj`
- `JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b26324/b26324b.ilproj`
- `JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b28901/b28901.ilproj`
- `JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b30838/b30838.ilproj`
- `JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b30864/b30864.ilproj`
- `JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b32374/b32374.ilproj`
- `JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b35784/b35784.ilproj`
- `JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b409748/b409748.ilproj`

### EH clause dispatch gap (3)

Second-pass unwind through `calli`, and the `HndIndex_10_*` handler-ordering pair from Dev11_468598. Same family as the `GitHub_89834`-style unwind bugs but distinct enough to warrant a separate diagnosis.

- `JIT/Directed/pinvoke/calli_excep.ilproj`
- `JIT/Regression/Dev11/Dev11_468598/Test_HndIndex_10_Plain.ilproj`
- `JIT/Regression/Dev11/Dev11_468598/Test_HndIndex_10_Reordered.ilproj`

### Threading (4)

`Thread.Start` on single-threaded WASI raises `PlatformNotSupportedException` from `RuntimeFeature.ThrowIfMultithreadingIsNotSupported()` before the cctor race can be observed. Structurally the same as the Browser+CoreCLR CircularCctor exclusions from #126120, but not covered by that PR's WASI-side gate.

- `Loader/classloader/TypeInitialization/CircularCctors/CircularCctorFourThreadsBFI.ilproj`
- `Loader/classloader/TypeInitialization/CircularCctors/CircularCctorThreeThreads01BFI.ilproj`
- `Loader/classloader/TypeInitialization/CircularCctors/CircularCctorThreeThreads02BFI.ilproj`
- `Loader/classloader/TypeInitialization/CircularCctors/CircularCctorThreeThreads03BFI.ilproj`

### Tailcall + IL verification (2)

- `JIT/Methodical/tailcall_v4/hijacking.ilproj` — tailcall hijacking probe (interpreter tailcall handling)
- `JIT/opt/Tailcall/TailcallVerifyWithPrefix.ilproj` — IL verifier expectations on `.tail` prefix; test expects a specific verification outcome the WASM interpreter doesn't emit

### MethodImpl self-override on PortableEntryPoint (1)

Fixed on `main` by #126124 (`[wasm] Fix interpreter crash with MethodImpl .override on PortableEntryPoints`). Kept excluded on the bring-up branch pending re-verification once the branch rebases past that fix.

- `Loader/classloader/MethodImpl/self_override5.ilproj`

### NoPIA type equivalence (1)

The WASM interpreter doesn't support the NoPIA type-equivalence signature path.

- `baseservices/typeequivalence/signatures/nopiatestil.ilproj`

## Notes

* Each per-project marker in PR #130051 currently points at #120708 (Radek's Browser-CoreCLR runtime-tests umbrella). Once this issue is filed we'll migrate the WASI-only markers to point at this issue instead, so #120708 keeps browser-specific scope.
* Nothing here is a build-time regression: all excluded tests are documented in `src/coreclr/wasi/tests/known-failures.txt` and reproduce with the same signatures under the local `run.cs` sweep.

/cc @radekdoulik @pavelsavara

Contributor guide

Open the contributing guide

Research direction

Start with src/coreclr/wasi/tests/known-failures.txt, the listed .ilproj tests, and the local run.cs sweep. Choose one root-cause group, reproduce its WASI failure, and trace the relevant interpreter or runtime behavior. Done means the affected tests no longer need their WASI exclusions and pass verification on the bring-up branch.

Written by the indexing model from the issue text.

Assessment

Tech stack
wasm
Domain
compilers, operating-systems, testing-qa
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.