Closed
Description
One thing that doesn't seem to work quite right is the current .NET implementation of cabi_realloc
. It doesn't seem to start the runtime correctly. So, if you're exporting a function that accepts a string, and the very first call into your preview2 component is to that method, the very first thing it will do is call cabi_realloc
which will fail with something like this:
Caused by:
0: failed to invoke `run` function
1: error while executing at wasm backtrace:
0: 0x18fa7d7 - wit-component:shim!indirect-wasi:cli/[email protected]
1: 0x18ef789 - wit-component:adapter:wasi_snapshot_preview1!wasi_snapshot_preview1::State::get_environment::h3923f56a626a4100
2: 0x18ef996 - wit-component:adapter:wasi_snapshot_preview1!environ_sizes_get
3: 0x18fa80d - wit-component:shim!adapt-wasi_snapshot_preview1-environ_sizes_get
4: 0x145aac8 - <unknown>!__wasi_environ_sizes_get
5: 0x145b358 - <unknown>!__wasilibc_initialize_environ
6: 0x145b3f8 - <unknown>!__wasilibc_initialize_environ_eagerly
7: 0xcc784c - <unknown>!__wasm_call_ctors
8: 0xcc787f - <unknown>!_initialize
9: 0xccb10c - <unknown>!InitializeRuntime()
10: 0xccb4c6 - <unknown>!Thread::ReversePInvokeAttachOrTrapThread(ReversePInvokeFrame*)
11: 0xccb5e1 - <unknown>!RhpReversePInvokeAttachOrTrapThread2
12: 0xccb658 - <unknown>!RhpReversePInvoke
13: 0x13a86eb - Adder_wit_computer_Intrinsics__cabi_realloc
As a workaround, if you first call any other export that only deals with int
or other non-heap-objects, that will initialize the runtime correctly, and then cabi_realloc
will no longer crash so you can then call exports that accept string
.
Originally posted by @SteveSandersonMS in #760 (comment)