Control: reassign -1 rustc 1.68.2+dfsg1-1
Control: retitle -1 Builds invalid wasm32 binaries (1.67->1.68 regression)
On Tue, Sep 12, 2023 at 10:56:57PM +0100, Peter Green wrote:
> The autopkgtests for wasmedge fail with rustc 1.68, I have observed this with
> both testing and unstable's versions of wasmedge, and with both testing and
> unstable's versions of wasi-lib.
Thanks for the report. Actually, I think the WasmEdge autopkgtests are
catching a rustc 1.68 regression, whereas rustc compiles wasm32 binaries
that do not work with neither WasmEdge, nor Wasmtime (the latter is not
in Debian).
Very simple test case:
$ podman run --rm -it debian:sid # or bookworm to test with rustc 1.67
root@ad697f1c195f:~# apt install rustc libstd-rust-dev-wasm32
[...]
root@ad697f1c195f:~# rustc -V
rustc 1.68.2
root@ad697f1c195f:~# cat > hello.rs <<EOF
fn main() {
println!("Hello World!");
}
EOF
root@ad697f1c195f:~# rustc --target=wasm32-wasi hello.rs
root@ad697f1c195f:~#
# execute the code with WasmEdge
root@ad697f1c195f:~# apt install wasmedge
[...]
root@ad697f1c195f:~# wasmedge ./hello.wasm
[2023-09-12 22:12:41.190] [error] execution failed: unreachable, Code: 0x89
[2023-09-12 22:12:41.190] [error] In instruction: unreachable (0x00) ,
Bytecode offset: 0x00009cd6
[2023-09-12 22:12:41.190] [error] When executing function name: "_start"
# test with Wasmtime
root@ad697f1c195f:~# apt install xz-utils wget
[...]
root@ad697f1c195f:~# wget -qO-
https://github.com/bytecodealliance/wasmtime/releases/download/v12.0.1/wasmtime-v12.0.1-x86_64-linux.tar.xz
| tar --wildcards --strip-components=1 -xJ '*/wasmtime'
root@ad697f1c195f:~# ./wasmtime hello.wasm
Error: failed to run main module `hello.wasm`
Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x9cd6 - <unknown>!__stack_chk_fail
1: 0x9d3c - <unknown>!__wasilibc_init_ssp
2: 0x320 - <unknown>!__wasm_call_ctors
3: 0x342 - <unknown>!_start
note: using the `WASMTIME_BACKTRACE_DETAILS=1` environment variable may
show more debugging information
2: wasm trap: wasm `unreachable` instruction executed
Thanks,
Faidon