Skip to content

[Mono WASM] CoreCLR tests on WASM: function signature mismatch #41470

@fanyang-mono

Description

@fanyang-mono

Description

CoreCLR runtime tests failed with this syndrome:

JS exception: RuntimeError: function signature mismatch 
RuntimeError: function signature mismatch 
    at ves_icall_System_Environment_Exit (<anonymous>:wasm-function[6022]:0xe8e77) 
    at do_icall (<anonymous>:wasm-function[10574]:0x196666) 
    at do_icall_wrapper (<anonymous>:wasm-function[3296]:0x7af61) 
    at interp_exec_method (<anonymous>:wasm-function[2145]:0x45773) 
    at interp_runtime_invoke (<anonymous>:wasm-function[7843]:0x130852) 
    at mono_jit_runtime_invoke (<anonymous>:wasm-function[7325]:0x11a2c8) 
    at do_runtime_invoke (<anonymous>:wasm-function[3295]:0x7aeaa) 
    at mono_runtime_try_invoke (<anonymous>:wasm-function[665]:0x14814) 
    at mono_runtime_invoke (<anonymous>:wasm-function[7096]:0x10fe95) 
    at mono_wasm_invoke_method (<anonymous>:wasm-function[6902]:0x10a18e) 

Affected tests are:

  • JIT/HardwareIntrinsics/Arm/AdvSimd/*
  • JIT/Methodical/tailcall/_il_reltest_void/_il_reltest_void.sh
  • JIT/Methodical/tailcall/_il_dbgtest_void/_il_dbgtest_void.sh
  • JIT/Methodical/tailcall/_il_dbgrecurse_ep_void/_il_dbgrecurse_ep_void.sh
  • JIT/Methodical/tailcall/_il_relrecurse_ep_void/_il_relrecurse_ep_void.sh
  • JIT/Methodical/switch/switch6/switch6.sh
  • JIT/Methodical/switch/switch5/switch5.sh

Repo

  1. Get dotnet/runtime repo
  2. Remove the test(s) that you would like to reproduce from <repo_root>/src/coreclr/tests/issues.targets
  3. Build WASM: ./build.sh --os Browser --arch wasm --subset mono+libs -c Release
  4. Build runtime tests: cd src/coreclr/ && ./build-test.sh -skipstressdependencies -excludemonofailures os Browser wasm Release
  5. To run all runtime tests, at the end of the runtime tests build log, there is "Example runtest.sh command". Use that command plus wasm. For example, for me it was
    ./tests/runtest.sh --coreOverlayDir=/Users/fanyang/Documents/work/dotnet_naricc/runtime/artifacts/tests/coreclr/Browser.wasm.Release/Tests/Core_Root --testNativeBinDir=/Users/fanyang/Documents/work/dotnet_naricc/runtime/artifacts/obj/coreclr/Browser.wasm.Release/tests --testRootDir=/Users/fanyang/Documents/work/dotnet_naricc/runtime/artifacts/tests/coreclr/Browser.wasm.Release --copyNativeTestBin Release wasm
  6. To run a single test, you could do
set CORE_ROOT=<repo_root>/artifacts/tests/coreclr/Browser.wasm.Release/Tests/Core_Root     
<repo_root>/artifacts/tests/coreclr/Browser.wasm.Release/JIT/Methodical/switch/switch5/switch5.sh

Regression?

No. WASM is a new product.

Other information

All of the tests mentioned in this issue were failing with the same syndrome. If the root cause of them are different, feel free to split this issue into multiple ones.

Metadata

Metadata

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions