-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[wasi] Failures in wit-bindgen runtime tests on mono #107212
Comments
Tagging subscribers to this area: @directhex, @matouskozak |
Tagging subscribers to 'arch-wasm': @lewing |
cc @kg |
I don't really know what to make of this since i know nothing about WIT and very little about WASI. But if someone wants help investigating it they can feel free to tag me in to help them. To me it looks like unsupported p/invoke scenarios? |
The first two are UCO issues, for example: typedef void (*WasmInterpEntrySig_4) (int*, int*);
__attribute__((export_name("test:dep/[email protected]#x")))
float test_3A_dep_2F_test_40_0_1_0_23_x () {
float res;
initialize_runtime();
if (!(WasmInterpEntrySig_4)wasm_native_to_interp_ftndescs [4].func) {
mono_wasm_marshal_get_managed_wrapper ("csharp-wasm","FooWorld.wit.exports.test.dep.v0_1_0", "TestInterop", "wasmExportX", 0);
}
((WasmInterpEntrySig_4)wasm_native_to_interp_ftndescs [4].func) ((int*)&res, wasm_native_to_interp_ftndescs [4].arg);
return res;
} [UnmanagedCallersOnly(EntryPoint = "test:dep/[email protected]#x")]
public static unsafe float wasmExportX() {
float ret;
ret = TestImpl.X();
return ret;
} looks like it isn't finding the wrapper in mono_wasm_marshal_get_managed_wrapper |
yeah the lookup logic is still too simple and there are collisions in the function lookup |
I think #107113 handles (will retest once it lands) the method resolution in every important case, there are some corner cases around trimmed assemblies with overloaded methods that it doesn't address (but could do slightly better with when EntryPoint is defined). And #107194 will allow us to use LinkerArg in wit-bindgen. |
Make the association between the wasm_native_to_interp_ftndescs generation and the lookup from unmanaged more robust so that we don't see problems like #107212 where the same slot was being reused for multiple methods with different signatures. To do this we change the Key(s) we use and fix the string escaping it relies on, and attempt to lookup by token first. Next , we rewrite the C code generation to make it easier to read and modify and mitigate some potentially negative memory side effects of that we introduce a gratuitous custom text writer that understands the idea of concatenated strings and use that where possible when building the output. Next, we change the import code generation to use binary rather than linear search for both the module and symbol. And finally, we update the ICall table generation to use the extensions. part of #104391 and #107212
commit 7ae87de Author: Larry Ewing <[email protected]> Date: Mon Sep 9 22:11:12 2024 -0500 [wasm] more cases when looking up unmanaged delegates (dotnet#107113) Make the association between the wasm_native_to_interp_ftndescs generation and the lookup from unmanaged more robust so that we don't see problems like dotnet#107212 where the same slot was being reused for multiple methods with different signatures. To do this we change the Key(s) we use and fix the string escaping it relies on, and attempt to lookup by token first. Next , we rewrite the C code generation to make it easier to read and modify and mitigate some potentially negative memory side effects of that we introduce a gratuitous custom text writer that understands the idea of concatenated strings and use that where possible when building the output. Next, we change the import code generation to use binary rather than linear search for both the module and symbol. And finally, we update the ICall table generation to use the extensions. part of dotnet#104391 and dotnet#107212 commit 1808129 Author: Elinor Fung <[email protected]> Date: Mon Sep 9 20:03:34 2024 -0700 Remove FCThrowRes from AssemblyNative::IsDynamic (dotnet#107574) commit 5cb6a06 Author: Aman Khalid <[email protected]> Date: Tue Sep 10 02:38:23 2024 +0000 JIT: Add simple late layout pass (dotnet#107483) commit c762b75 Author: Martin Costello <[email protected]> Date: Tue Sep 10 03:15:53 2024 +0100 Add [DebuggerDisplay] to CancellationTokenSource (dotnet#105764) * Add [DebuggerDisplay] to CancellationTokenSource Add `[DebuggerDisplay]` to `CancellationTokenSource` to show whether cancelled or disposed. Relates to dotnet#105698. * Update src/libraries/System.Private.CoreLib/src/System/Threading/CancellationTokenSource.cs --------- Co-authored-by: Stephen Toub <[email protected]> commit b77b71e Author: Katelyn Gadd <[email protected]> Date: Mon Sep 9 17:40:14 2024 -0700 [wasm] Clean up some FIXMEs in the jiterpreter (dotnet#107562) * Cleanup some fixmes in the jiterpreter * Flow through size of the var in MINT_LDLOCA_S so jiterpreter can do accurate invalidation commit c21d90e Author: Pavel Savara <[email protected]> Date: Tue Sep 10 02:40:00 2024 +0200 [WASI] improve single-threaded threadpool (dotnet#107395) * fix dotnet#104803 * PollWasiEventLoopUntilResolvedVoid * more * wip * CPU-bound work to do * fix exit * Update src/mono/sample/wasi/http-p2/Program.cs Co-authored-by: Larry Ewing <[email protected]> * feedback --------- Co-authored-by: Larry Ewing <[email protected]> commit 61de5df Author: Elinor Fung <[email protected]> Date: Mon Sep 9 17:14:07 2024 -0700 Make DAC and ProfToEEInterfaceImpl stop using BaseDomain (dotnet#107570) `BaseDomain` should no longer be needed now that we only have one `AppDomain` and the `SystemDomain` can be treated as separate. This makes the DAC and ProfToEEInterfaceImpl use `AppDomain` directly and check against `SystemDomain::System()` to determine if a pointer is the system domain. commit 76dbb27 Author: Stephen Toub <[email protected]> Date: Mon Sep 9 19:59:54 2024 -0400 Use SearchValues in Uri.CheckForUnicodeOrEscapedUnreserved (dotnet#107357) commit 149d4bb Author: Miha Zupan <[email protected]> Date: Mon Sep 9 16:54:00 2024 -0700 Extend the list of recognized SearchValues<char> field names in Regex (dotnet#107402) commit e591fbf Author: Kunal Pathak <[email protected]> Date: Mon Sep 9 16:38:42 2024 -0700 Arm: Fix the base register used for restoring register from stack (dotnet#107564) * Use correct baseReg for vstr, similar to vldr * add test cases * Mark internal test methods private commit 51c350c Author: Elinor Fung <[email protected]> Date: Mon Sep 9 16:35:02 2024 -0700 Make missing framework error message list other architectures that were found (dotnet#107156) When erroring on a missing framework, check if there are versions of the framework for other architectures and list them for the user. commit 2ed43b6 Author: Alan Hayward <[email protected]> Date: Mon Sep 9 23:53:45 2024 +0100 ARM64-SVE: Allow op inside conditionalselect to be non HWintrinsic (dotnet#107180) * ARM64-SVE: Allow op inside conditionselect to be non HWintrinsic * Add Sve.IsSupported check to test commit ac4b7c6 Author: Kunal Pathak <[email protected]> Date: Mon Sep 9 15:52:00 2024 -0700 Arm: Consider the fact that targetReg can be second half during resolution (dotnet#107493) * Arm: Consider the fact that targetReg can be second half during resolution * add test case * Make sure we only handle float registers * fix test case's public methods commit 18eedbe Author: Aaron Robinson <[email protected]> Date: Mon Sep 9 14:02:51 2024 -0700 Convert Thread FCalls to QCalls (dotnet#107495) * Convert Thread.IsAlive property * Convert Thread.GetCurrentThread() * Convert Thread.ThreadState property * Convert Thread.Initialize() commit d45ccfd Author: Michal Strehovský <[email protected]> Date: Tue Sep 10 05:28:57 2024 +0900 Fix reflection-calling `Set` method on arrays (dotnet#107529) The test added in dotnet#106787 found an issue in the implementation of reflection calls to array `Set` methods. We used to throw the wrong exception type. There were probably other corner case bugs (like what exception is thrown when both element type is wrong and index is out of range and when/how value coercion should happen). This should fix that. commit c534080 Author: Tom McDonald <[email protected]> Date: Mon Sep 9 15:21:41 2024 -0400 Avoid using OpenThread for out of process SetThreadContext debugging (dotnet#107511) * Avoid using OpenThread in out of process thread context scenarios * Add comments * Update src/coreclr/debug/di/process.cpp Co-authored-by: mikelle-rogers <[email protected]> * Update src/coreclr/debug/di/process.cpp Co-authored-by: mikelle-rogers <[email protected]> * Update src/coreclr/debug/di/process.cpp Co-authored-by: Noah Falk <[email protected]> --------- Co-authored-by: mikelle-rogers <[email protected]> Co-authored-by: Noah Falk <[email protected]> commit d2c7db0 Author: Tanner Gooding <[email protected]> Date: Mon Sep 9 11:06:45 2024 -0700 Disable TensorExtensionsTwoSpanInFloatOut due to dotnet#107254 (dotnet#107555) commit b7b91cb Author: Aaron Robinson <[email protected]> Date: Mon Sep 9 09:08:31 2024 -0700 Convert some handle APIs to QCalls (dotnet#107513) Convert RuntimeTypeHandle.GetAssembly() Convert RuntimeTypeHandle.GetModule() Convert RuntimeAssembly.GetManifestModule() commit 600f6bd Author: David Wrighton <[email protected]> Date: Mon Sep 9 09:04:51 2024 -0700 Fix thread static cleanup paths (dotnet#107438) * Fix thread static cleanup paths - Do not destroy GC handles while holding the spin lock - Free the pLoaderHandle array when the thread is terminated * When using a ThreadStatics stress test on collectible assemblies, a few more issues were found - Fix issue where the LoaderAllocator's SegmentedHandleIndex wasn't being freed - Fix issue where the logic to re-use TLSIndex values wasn't working properly commit fe7a52d Author: Linus Hamlin <[email protected]> Date: Mon Sep 9 17:57:31 2024 +0200 Remove ActiveIssue for solved issues in Vector tests (dotnet#107127) commit 0c33c6f Author: Elinor Fung <[email protected]> Date: Mon Sep 9 08:21:16 2024 -0700 Fix module being set as tenured too early (dotnet#107489) commit 2fb3629 Author: Elinor Fung <[email protected]> Date: Mon Sep 9 08:03:27 2024 -0700 Remove `BaseDomain` use in `LoaderAllocator` and event tracing helpers (dotnet#107481) - Remove `BaseDomain` member on `LoaderAllocator` - Add asserts in functions using `AppDomain` that the loader allocator is collectible and the type is `LAT_Assembly` (so `AssemblyLoaderAllocator` which always had `AppDomain`) - Remove unnecessary `BaseDomain`/`AppDomain` parameters from event tracing helpers - They were always being called with the current app domain commit 62133e0 Author: dotnet-maestro[bot] <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon Sep 9 16:56:30 2024 +0200 [main] Update dependencies from dotnet/xharness (dotnet#107291) * Update dependencies from https://github.com/dotnet/xharness build 20240902.2 Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Common , Microsoft.DotNet.XHarness.TestRunners.Xunit From Version 9.0.0-prerelease.24452.1 -> To Version 9.0.0-prerelease.24452.2 * Update dependencies from https://github.com/dotnet/xharness build 20240903.1 Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Common , Microsoft.DotNet.XHarness.TestRunners.Xunit From Version 9.0.0-prerelease.24452.2 -> To Version 9.0.0-prerelease.24453.1 * Update dependencies from https://github.com/dotnet/xharness build 20240904.2 Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Common , Microsoft.DotNet.XHarness.TestRunners.Xunit From Version 9.0.0-prerelease.24453.1 -> To Version 10.0.0-prerelease.24454.2 * Update dependencies from https://github.com/dotnet/xharness build 20240906.1 Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Common , Microsoft.DotNet.XHarness.TestRunners.Xunit From Version 10.0.0-prerelease.24454.2 -> To Version 10.0.0-prerelease.24456.1 * Update dependencies from https://github.com/dotnet/xharness build 20240909.1 Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Common , Microsoft.DotNet.XHarness.TestRunners.Xunit From Version 10.0.0-prerelease.24456.1 -> To Version 10.0.0-prerelease.24459.1 --------- Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> Co-authored-by: Ilona Tomkowicz <[email protected]> commit 4c0973e Author: Jeremi Kurdek <[email protected]> Date: Mon Sep 9 17:53:45 2024 +0300 Fix passing assemblies using relative path (dotnet#107536) commit 67e5768 Author: Katelyn Gadd <[email protected]> Date: Mon Sep 9 06:19:10 2024 -0700 [wasm] Implement MINT_NEWARR in jiterpreter (dotnet#107430) commit 176754d Author: Matous Kozak <[email protected]> Date: Mon Sep 9 13:35:01 2024 +0200 [mono][infra] decrease CPU count for fullAOT CI build (dotnet#107531) commit 49bf719 Author: Pavel Savara <[email protected]> Date: Mon Sep 9 12:30:47 2024 +0200 [browser][MT] fix feature detection on webworker (dotnet#107452) commit aa418fc Author: Preeyan Parmar <[email protected]> Date: Sun Sep 8 22:44:27 2024 +0100 Remove unused declarations from clsload.hpp (dotnet#107509) * Remove unused declarations from clsload.hpp * also remove unused ClassLoader::TryEnsureLoaded commit 7d68c7f Author: Steve <[email protected]> Date: Mon Sep 9 06:36:18 2024 +0900 Implement getClassAssemblyName (dotnet#106959) * Add getClassAssemblyName * Handle nullptrs * Remove CORINFO_ASSEMBLY_HANDLE * Address feedbacks Co-authored-by: Jan Kotas <[email protected]> commit 39c84a3 Author: Jan Kotas <[email protected]> Date: Sun Sep 8 11:24:13 2024 -0700 Fix corner-case accounting bug in new codeheap allocation (dotnet#107492) The size of internal CodeHeap structures was not included in codeheap memory reservation. It caused false OOM exception to be thrown when JITed method code size was near 64kB multiple commit 10f6c4c Author: Aaron Robinson <[email protected]> Date: Sun Sep 8 11:02:41 2024 -0700 Convert WaitHandle FCalls to QCalls (dotnet#107488) commit b523ec5 Author: Aman Khalid <[email protected]> Date: Sun Sep 8 14:42:04 2024 +0000 JIT: Simplify block insertion logic during loop canonicalization (dotnet#107371)
Make the association between the wasm_native_to_interp_ftndescs generation and the lookup from unmanaged more robust so that we don't see problems like dotnet#107212 where the same slot was being reused for multiple methods with different signatures. To do this we change the Key(s) we use and fix the string escaping it relies on, and attempt to lookup by token first. Next , we rewrite the C code generation to make it easier to read and modify and mitigate some potentially negative memory side effects of that we introduce a gratuitous custom text writer that understands the idea of concatenated strings and use that where possible when building the output. Next, we change the import code generation to use binary rather than linear search for both the module and symbol. And finally, we update the ICall table generation to use the extensions. part of dotnet#104391 and dotnet#107212
Make the association between the wasm_native_to_interp_ftndescs generation and the lookup from unmanaged more robust so that we don't see problems like dotnet#107212 where the same slot was being reused for multiple methods with different signatures. To do this we change the Key(s) we use and fix the string escaping it relies on, and attempt to lookup by token first. Next , we rewrite the C code generation to make it easier to read and modify and mitigate some potentially negative memory side effects of that we introduce a gratuitous custom text writer that understands the idea of concatenated strings and use that where possible when building the output. Next, we change the import code generation to use binary rather than linear search for both the module and symbol. And finally, we update the ICall table generation to use the extensions. part of dotnet#104391 and dotnet#107212
Make the association between the wasm_native_to_interp_ftndescs generation and the lookup from unmanaged more robust so that we don't see problems like dotnet#107212 where the same slot was being reused for multiple methods with different signatures. To do this we change the Key(s) we use and fix the string escaping it relies on, and attempt to lookup by token first. Next , we rewrite the C code generation to make it easier to read and modify and mitigate some potentially negative memory side effects of that we introduce a gratuitous custom text writer that understands the idea of concatenated strings and use that where possible when building the output. Next, we change the import code generation to use binary rather than linear search for both the module and symbol. And finally, we update the ICall table generation to use the extensions. part of dotnet#104391 and dotnet#107212
Using bytecodealliance/wit-bindgen#958
to run
cargo test -p wit-bindgen-cli --no-default-features -F csharp-mono
we see the following errors on monoThe text was updated successfully, but these errors were encountered: