Skip to content
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

Open
lewing opened this issue Aug 30, 2024 · 7 comments
Open

[wasi] Failures in wit-bindgen runtime tests on mono #107212

lewing opened this issue Aug 30, 2024 · 7 comments
Labels
arch-wasm WebAssembly architecture area-Interop-mono os-wasi Related to WASI variant of arch-wasm
Milestone

Comments

@lewing
Copy link
Member

lewing commented Aug 30, 2024

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 mono

running 27 tests
test flavorful::run ... ok
test other_dependencies::run ... ok
test ownership::run ... ok
test lists::run has been running for over 60 seconds
test many_arguments::run has been running for over 60 seconds
test numbers::run has been running for over 60 seconds
test options::run has been running for over 60 seconds
test records::run has been running for over 60 seconds
test resource_aggregates::run has been running for over 60 seconds
test resource_alias::run has been running for over 60 seconds
test resource_alias_redux::run has been running for over 60 seconds
test resource_borrow_export::run has been running for over 60 seconds
test resource_borrow_import::run has been running for over 60 seconds
test resource_borrow_in_record::run has been running for over 60 seconds
test resource_borrow_simple::run has been running for over 60 seconds
test resource_floats::run has been running for over 60 seconds
test resource_import_and_export::run has been running for over 60 seconds
test resource_into_inner::run has been running for over 60 seconds
test resource_with_lists::run has been running for over 60 seconds
test resource_borrow_simple::run ... ok
TODO: cabi_post_test:resource-borrow-in-record/test#[constructor]thing
TODO: cabi_post_test:resource-borrow-in-record/test#[constructor]thing
TODO: cabi_post_test:resource-with-lists/test#[constructor]thing
TODO: cabi_post_test:resource-with-lists/test#[method]thing.foo
TODO: cabi_post_test:resource-borrow-in-record/test#test
TODO: cabi_post_test:resource-with-lists/test#[method]thing.foo
TODO: cabi_post_test:resource-borrow-in-record/test#[method]thing.get
TODO: cabi_post_test:resource-with-lists/test#[static]thing.baz
TODO: cabi_post_test:resource-borrow-in-record/test#[method]thing.get
test resource_borrow_in_record::run ... ok
test resource_with_lists::run ... ok
TODO: cabi_post_test:records/test#multiple-results
TODO: cabi_post_test:records/test#swap-tuple
TODO: cabi_post_test:records/test#roundtrip-flags1
TODO: cabi_post_test:records/test#roundtrip-flags1
TODO: cabi_post_test:records/test#roundtrip-flags1
TODO: cabi_post_test:records/test#roundtrip-flags1
TODO: cabi_post_test:records/test#roundtrip-flags2
TODO: cabi_post_test:records/test#roundtrip-flags2
TODO: cabi_post_test:records/test#roundtrip-flags2
TODO: cabi_post_test:records/test#roundtrip-flags2
TODO: cabi_post_test:records/test#roundtrip-record1
TODO: cabi_post_test:resource-alias/e1#[constructor]x
TODO: cabi_post_test:records/test#roundtrip-record1
TODO: cabi_post_test:records/test#tuple1
TODO: cabi_post_test:resource-alias/e1#a
TODO: cabi_post_test:resource-alias/e1#[constructor]x
TODO: cabi_post_test:resource-alias/e1#[constructor]x
TODO: cabi_post_test:resource-alias/e1#[constructor]x
TODO: cabi_post_test:resource-alias/e2#a
test records::run ... ok
test resource_alias::run ... ok
test rust_xcrate::run ... ok
test type_section_suffix::run ... ok
TODO: cabi_post_test:resource-import-and-export/test#[constructor]thing
TODO: cabi_post_test:resource-import-and-export/test#[method]thing.foo
TODO: cabi_post_test:resource-import-and-export/test#[method]thing.foo
TODO: cabi_post_test:resource-import-and-export/test#[constructor]thing
TODO: cabi_post_test:resource-import-and-export/test#[static]thing.baz
TODO: cabi_post_test:resource-import-and-export/test#[method]thing.foo
test resource_import_and_export::run ... ok
TODO: cabi_post_test:resource-aggregates/test#[constructor]thing
TODO: cabi_post_test:resource-aggregates/test#[constructor]thing
TODO: cabi_post_test:resource-aggregates/test#[constructor]thing
TODO: cabi_post_test:resource-aggregates/test#[constructor]thing
TODO: cabi_post_test:resource-aggregates/test#[constructor]thing
TODO: cabi_post_test:resource-aggregates/test#[constructor]thing
TODO: cabi_post_test:resource-aggregates/test#[constructor]thing
TODO: cabi_post_test:resource-aggregates/test#[constructor]thing
TODO: cabi_post_test:resource-aggregates/test#[constructor]thing
TODO: cabi_post_test:resource-aggregates/test#[constructor]thing
TODO: cabi_post_test:resource-aggregates/test#[constructor]thing
TODO: cabi_post_test:resource-aggregates/test#[constructor]thing
TODO: cabi_post_test:resource-aggregates/test#[constructor]thing
TODO: cabi_post_test:resource-aggregates/test#[constructor]thing
TODO: cabi_post_test:resource-aggregates/test#[constructor]thing
TODO: cabi_post_test:resource-aggregates/test#[constructor]thing
TODO: cabi_post_test:resource-aggregates/test#[constructor]thing
test many_arguments::run ... FAILED
TODO: deallocate buffer for indirect parameters
TODO: cabi_post_test:resource-aggregates/test#foo
test resource_into_inner::run ... ok
test resource_aggregates::run ... ok
TODO: cabi_post_allocated-bytes
hello!
hello,
world!
0
65535
-32768
32767
TODO: cabi_post_test:lists/test#empty-list-result
TODO: cabi_post_test:lists/test#empty-string-result
TODO: cabi_post_test:lists/test#list-result
TODO: cabi_post_test:lists/test#list-result2
TODO: cabi_post_test:lists/test#list-result3
TODO: cabi_post_test:lists/test#string-roundtrip
TODO: cabi_post_test:lists/test#string-roundtrip
TODO: cabi_post_test:lists/test#string-roundtrip
TODO: cabi_post_allocated-bytes
test lists::run ... ok
TODO: cabi_post_exports#[constructor]float
TODO: cabi_post_exports#[method]float.get
TODO: cabi_post_test
TODO: cabi_post_exports#[static]float.add
TODO: cabi_post_exports#[method]float.get
TODO: cabi_post_test:resource-alias-redux/resource-alias1#[constructor]thing
TODO: cabi_post_test:resource-alias-redux/resource-alias1#a
TODO: cabi_post_test:resource-alias-redux/resource-alias1#[method]thing.get
TODO: cabi_post_test:resource-alias-redux/resource-alias1#[constructor]thing
TODO: cabi_post_test:resource-alias-redux/resource-alias1#[constructor]thing
test resource_floats::run ... okTODO: cabi_post_test:resource-alias-redux/resource-alias2#b

TODO: cabi_post_test:resource-alias-redux/resource-alias1#[method]thing.get
TODO: cabi_post_test:resource-alias-redux/resource-alias1#[method]thing.get
test resource_alias_redux::run ... ok
TODO: cabi_post_test:numbers/test#roundtrip-u8
TODO: cabi_post_test:numbers/test#roundtrip-u8
TODO: cabi_post_test:numbers/test#roundtrip-u8
TODO: cabi_post_test:numbers/test#roundtrip-s8
TODO: cabi_post_test:numbers/test#roundtrip-s8
TODO: cabi_post_test:numbers/test#roundtrip-s8
TODO: cabi_post_test:numbers/test#roundtrip-u16
TODO: cabi_post_test:numbers/test#roundtrip-u16
TODO: cabi_post_test:numbers/test#roundtrip-u16
TODO: cabi_post_test:numbers/test#roundtrip-s16
TODO: cabi_post_test:numbers/test#roundtrip-s16
TODO: cabi_post_test
TODO: cabi_post_test:numbers/test#roundtrip-s16
TODO: cabi_post_test:numbers/test#roundtrip-u32
TODO: cabi_post_test:numbers/test#roundtrip-u32
TODO: cabi_post_test:numbers/test#roundtrip-u32
TODO: cabi_post_test:options/test#option-none-result
TODO: cabi_post_test:numbers/test#roundtrip-s32
TODO: cabi_post_test:numbers/test#roundtrip-s32
TODO: cabi_post_test:numbers/test#roundtrip-s32
TODO: cabi_post_test:options/test#option-some-result
TODO: cabi_post_test:numbers/test#roundtrip-u64
TODO: cabi_post_test:numbers/test#roundtrip-u64
TODO: cabi_post_test:numbers/test#roundtrip-u64
TODO: cabi_post_test:numbers/test#roundtrip-s64
TODO: cabi_post_test:numbers/test#roundtrip-s64
TODO: cabi_post_test:options/test#option-roundtrip
TODO: cabi_post_test:numbers/test#roundtrip-s64
TODO: cabi_post_test:numbers/test#roundtrip-f32
TODO: cabi_post_test:numbers/test#roundtrip-f32
TODO: cabi_post_test:options/test#double-option-roundtrip
TODO: cabi_post_test:numbers/test#roundtrip-f32
TODO: cabi_post_test:options/test#double-option-roundtrip
TODO: cabi_post_test:numbers/test#roundtrip-f32
TODO: cabi_post_test:options/test#double-option-roundtrip
TODO: cabi_post_test:numbers/test#roundtrip-f64
TODO: cabi_post_test:numbers/test#roundtrip-f64
TODO: cabi_post_test:numbers/test#roundtrip-f64
TODO: cabi_post_test:numbers/test#roundtrip-f64
TODO: cabi_post_test:numbers/test#roundtrip-char
TODO: cabi_post_test:numbers/test#roundtrip-char
TODO: cabi_post_test:numbers/test#roundtrip-char
TODO: cabi_post_test:numbers/test#get-scalar
TODO: cabi_post_test:numbers/test#get-scalar
test resource_borrow_import::run ... ok
TODO: cabi_post_test:resource-borrow-export/test#[constructor]thing
TODO: cabi_post_test:resource-borrow-export/test#foo
test options::run ... ok
test numbers::run ... ok
test resource_borrow_export::run ... ok
test resources::run has been running for over 60 seconds
test results::run has been running for over 60 seconds
test smoke::run has been running for over 60 seconds
test strings::run has been running for over 60 seconds
test variants::run has been running for over 60 seconds
test versions::run has been running for over 60 seconds
test versions::run ... FAILED
TODO: cabi_post_test:results/test#string-error
TODO: cabi_post_test:results/test#string-error
TODO: cabi_post_test:results/test#enum-error
TODO: cabi_post_test:results/test#enum-error
TODO: cabi_post_test:results/test#record-error
TODO: cabi_post_test:results/test#record-error
TODO: cabi_post_test:results/test#record-error
TODO: cabi_post_test:results/test#variant-error
TODO: cabi_post_test:results/test#variant-error
TODO: cabi_post_test:results/test#variant-error
TODO: cabi_post_test:results/test#empty-error
TODO: cabi_post_test:results/test#empty-error
TODO: cabi_post_test:results/test#empty-error
TODO: cabi_post_test:results/test#double-error
TODO: cabi_post_test:results/test#double-error
TODO: cabi_post_test:results/test#double-error
test smoke::run ... ok
test results::run ... ok
TODO: cabi_post_return-empty
TODO: cabi_post_roundtrip
TODO: cabi_post_exports#test-imports
TODO: cabi_post_roundtrip
TODO: cabi_post_exports#[constructor]x
TODO: cabi_post_exports#[method]x.get-a
TODO: cabi_post_exports#[method]x.get-a
TODO: cabi_post_exports#[constructor]z
TODO: cabi_post_exports#[method]z.get-a
TODO: cabi_post_exports#[constructor]z
TODO: cabi_post_exports#[method]z.get-a
TODO: cabi_post_exports#[static]x.add
TODO: cabi_post_exports#[method]x.get-a
TODO: cabi_post_exports#add
TODO: cabi_post_exports#[method]z.get-a
TODO: cabi_post_exports#[static]z.num-dropped
TODO: cabi_post_exports#[static]z.num-dropped
test strings::run ... ok
test resources::run ... ok
test variants::run ... FAILED

failures:

---- many_arguments::run stdout ----
building MONO
testing "D:\\bytcodealliance\\wit-bindgen\\target\\runtime-tests\\many_arguments\\csharp-mono-many-arguments\\bin\\Debug\\net9.0\\AppBundle\\csharp-wasm.wasm"
Error: error while executing at wasm backtrace:
    0: 0x742d - many_arguments
                    at D:\bytcodealliance\wit-bindgen\target\runtime-tests\many_arguments\csharp-mono-many-arguments\D:/bytcodealliance/wit-bindgen/target/runtime-tests/many_arguments/csharp-mono-many-arguments/obj/Debug/net9.0/wasm/for-publish\pinvoke-table.h:241:3

Caused by:
    wasm trap: indirect call type mismatch

---- versions::run stdout ----
building MONO
testing "D:\\bytcodealliance\\wit-bindgen\\target\\runtime-tests\\versions\\csharp-mono-foo\\bin\\Debug\\net9.0\\AppBundle\\csharp-wasm.wasm"
Error: error while executing at wasm backtrace:
    0: 0x7b17 - test_3A_dep_2F_test_40_0_1_0_23_x
                    at D:\bytcodealliance\wit-bindgen\target\runtime-tests\versions\csharp-mono-foo\D:/bytcodealliance/wit-bindgen/target/runtime-tests/versions/csharp-mono-foo/obj/Debug/net9.0/wasm/for-publish\pinvoke-table.h:301:3

Caused by:
    wasm trap: uninitialized element

---- variants::run stdout ----
building MONO
testing "D:\\bytcodealliance\\wit-bindgen\\target\\runtime-tests\\variants\\csharp-mono-variants\\bin\\Debug\\net9.0\\AppBundle\\csharp-wasm.wasm"
Error: error while executing at wasm backtrace:
    0: 0xda7f5b - wit-component:adapter:wasi_snapshot_preview1!wasi_snapshot_preview1::bindings::wasi::cli::exit::exit::h75b515544c429a0a
    1: 0xda7ed0 - wit-component:adapter:wasi_snapshot_preview1!proc_exit
    2: 0xdab769 - wit-component:shim!adapt-wasi_snapshot_preview1-proc_exit
    3: 0x251d0a - __wasi_proc_exit
                    at C:\wasi-sdk\sysroot\wasi-libc-wasm32-wasip2\libc-bottom-half/sources\__wasilibc_real.c:574:5
    4: 0x250f82 - _Exit
                    at C:\wasi-sdk\sysroot\wasi-libc-wasm32-wasip2\libc-bottom-half/cloudlibc/src/libc/stdlib\_Exit.c:11:3
    5: 0x253cfc - exit
                    at C:\wasi-sdk\sysroot\wasi-libc-wasm32-wasip2\libc-top-half/musl/src/exit\exit.c:50:2
    6: 0x9825 - wasi_trace_logger
                    at C:\Users\lewing\AppData\Local\Microsoft\dotnet\packs\Microsoft.NETCore.App.Runtime.Mono.wasi-wasm\9.0.0-rc.2.24429.19\runtimes\wasi-wasm\native\src\driver.c:84:3
    7: 0x48bc0 - eglib_log_adapter
                    at /__w/1/s/src/mono/mono/utils/mono-logger.c:394:2
    8: 0x45e57 - monoeg_g_logstr
                    at /__w/1/s/src/mono/mono/eglib/goutput.c:151:2              - monoeg_g_logv_nofree
                    at /__w/1/s/src/mono/mono/eglib/goutput.c:166:2
    9: 0x45f64 - monoeg_g_logv
                    at /__w/1/s/src/mono/mono/eglib/goutput.c:173:10              - monoeg_g_log
                    at /__w/1/s/src/mono/mono/eglib/goutput.c:182:2
   10: 0x45fb2 - monoeg_g_log_disabled
                    at /__w/1/s/src/mono/mono/eglib/goutput.c:189:2
   11: 0x20ad4 - get_build_args_from_sig_info
                    at /__w/1/s/src/mono/mono/mini/interp/interp.c:1458:3
   12: 0x1f424 - ves_pinvoke_method
                    at /__w/1/s/src/mono/mono/mini/interp/interp.c:1756:27
   13: 0xf004 - mono_interp_exec_method
                    at /__w/1/s/src/mono/mono/mini/interp/interp.c:4259:4
   14: 0x1e794 - interp_entry
                    at /__w/1/s/src/mono/mono/mini/interp/interp.c:2320:2
   15: 0x21678 - interp_entry_static_0
                    at /__w/1/s/src/mono/mono/mini/interp/interp.c:3090:46
   16: 0x8c59 - test_imports
                    at D:\bytcodealliance\wit-bindgen\target\runtime-tests\variants\csharp-mono-variants\D:/bytcodealliance/wit-bindgen/target/runtime-tests/variants/csharp-mono-variants/obj/Debug/net9.0/wasm/for-publish\pinvoke-table.h:429:3

Caused by:
    Exited with i32 exit status 1


failures:
    many_arguments::run
    variants::run
    versions::run

test result: FAILED. 24 passed; 3 failed; 0 ignored; 0 measured; 0 filtered out; finished in 391.68s
@lewing lewing added this to the 10.0.0 milestone Aug 30, 2024
@lewing lewing added the os-wasi Related to WASI variant of arch-wasm label Aug 30, 2024
Copy link
Contributor

Tagging subscribers to this area: @directhex, @matouskozak
See info in area-owners.md if you want to be subscribed.

Copy link
Contributor

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

@lewing
Copy link
Member Author

lewing commented Aug 30, 2024

cc @kg

@kg
Copy link
Contributor

kg commented Aug 30, 2024

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?

@lewing
Copy link
Member Author

lewing commented Aug 30, 2024

The first two are UCO issues, for example:

typedef void (*WasmInterpEntrySig_4) (int*, int*);
__attribute__((export_name("test:dep/test@0.1.0#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/test@0.1.0#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

@lewing
Copy link
Member Author

lewing commented Aug 30, 2024

yeah the lookup logic is still too simple and there are collisions in the function lookup

@lewing
Copy link
Member Author

lewing commented Sep 10, 2024

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.

lewing added a commit that referenced this issue Sep 10, 2024
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
lewing added a commit to lewing/runtime that referenced this issue Sep 10, 2024
commit 7ae87de
Author: Larry Ewing <lewing@microsoft.com>
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 <elfung@microsoft.com>
Date:   Mon Sep 9 20:03:34 2024 -0700

    Remove FCThrowRes from AssemblyNative::IsDynamic (dotnet#107574)

commit 5cb6a06
Author: Aman Khalid <amankhalid@microsoft.com>
Date:   Tue Sep 10 02:38:23 2024 +0000

    JIT: Add simple late layout pass (dotnet#107483)

commit c762b75
Author: Martin Costello <martin@martincostello.com>
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 <stoub@microsoft.com>

commit b77b71e
Author: Katelyn Gadd <kg@luminance.org>
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 <pavel.savara@gmail.com>
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 <lewing@microsoft.com>

    * feedback

    ---------

    Co-authored-by: Larry Ewing <lewing@microsoft.com>

commit 61de5df
Author: Elinor Fung <elfung@microsoft.com>
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 <stoub@microsoft.com>
Date:   Mon Sep 9 19:59:54 2024 -0400

    Use SearchValues in Uri.CheckForUnicodeOrEscapedUnreserved (dotnet#107357)

commit 149d4bb
Author: Miha Zupan <mihazupan.zupan1@gmail.com>
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 <Kunal.Pathak@microsoft.com>
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 <elfung@microsoft.com>
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 <a74nh@users.noreply.github.com>
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 <Kunal.Pathak@microsoft.com>
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 <arobins@microsoft.com>
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ý <MichalStrehovsky@users.noreply.github.com>
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 <tommcdon@microsoft.com>
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 <45022607+mikelle-rogers@users.noreply.github.com>

    * Update src/coreclr/debug/di/process.cpp

    Co-authored-by: mikelle-rogers <45022607+mikelle-rogers@users.noreply.github.com>

    * Update src/coreclr/debug/di/process.cpp

    Co-authored-by: Noah Falk <noahfalk@users.noreply.github.com>

    ---------

    Co-authored-by: mikelle-rogers <45022607+mikelle-rogers@users.noreply.github.com>
    Co-authored-by: Noah Falk <noahfalk@users.noreply.github.com>

commit d2c7db0
Author: Tanner Gooding <tagoo@outlook.com>
Date:   Mon Sep 9 11:06:45 2024 -0700

    Disable TensorExtensionsTwoSpanInFloatOut due to dotnet#107254 (dotnet#107555)

commit b7b91cb
Author: Aaron Robinson <arobins@microsoft.com>
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 <davidwr@microsoft.com>
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 <78953007+lilinus@users.noreply.github.com>
Date:   Mon Sep 9 17:57:31 2024 +0200

    Remove ActiveIssue for solved issues in Vector tests (dotnet#107127)

commit 0c33c6f
Author: Elinor Fung <elfung@microsoft.com>
Date:   Mon Sep 9 08:21:16 2024 -0700

    Fix module being set as tenured too early (dotnet#107489)

commit 2fb3629
Author: Elinor Fung <elfung@microsoft.com>
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 <32700855+ilonatommy@users.noreply.github.com>

commit 4c0973e
Author: Jeremi Kurdek <59935235+jkurdek@users.noreply.github.com>
Date:   Mon Sep 9 17:53:45 2024 +0300

    Fix passing assemblies using relative path (dotnet#107536)

commit 67e5768
Author: Katelyn Gadd <kg@luminance.org>
Date:   Mon Sep 9 06:19:10 2024 -0700

    [wasm] Implement MINT_NEWARR in jiterpreter (dotnet#107430)

commit 176754d
Author: Matous Kozak <55735845+matouskozak@users.noreply.github.com>
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 <pavel.savara@gmail.com>
Date:   Mon Sep 9 12:30:47 2024 +0200

    [browser][MT] fix feature detection on webworker (dotnet#107452)

commit aa418fc
Author: Preeyan Parmar <4997904+preeyan@users.noreply.github.com>
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 <hez2010@outlook.com>
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 <jkotas@microsoft.com>

commit 39c84a3
Author: Jan Kotas <jkotas@microsoft.com>
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 <arobins@microsoft.com>
Date:   Sun Sep 8 11:02:41 2024 -0700

    Convert WaitHandle FCalls to QCalls (dotnet#107488)

commit b523ec5
Author: Aman Khalid <amankhalid@microsoft.com>
Date:   Sun Sep 8 14:42:04 2024 +0000

    JIT: Simplify block insertion logic during loop canonicalization (dotnet#107371)
jtschuster pushed a commit to jtschuster/runtime that referenced this issue Sep 17, 2024
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
arch-wasm WebAssembly architecture area-Interop-mono os-wasi Related to WASI variant of arch-wasm
Projects
Status: No status
Development

No branches or pull requests

2 participants