Stream: git-wasmtime

Topic: wasmtime / issue #736 [lightbeam] debug assertion failed ...


view this post on Zulip Wasmtime GitHub notifications bot (Sep 27 2021 at 17:29):

alexcrichton commented on issue #736:

Lightbeam was removed in https://github.com/bytecodealliance/wasmtime/pull/3390 as explained in RFC 14, so I'm going to close this.

view this post on Zulip Wasmtime GitHub notifications bot (Sep 27 2021 at 17:29):

alexcrichton closed issue #736:

Issue description

A call to debug_assert_eq make lightbeam to panic when compiled in debug mode.

$ ./target/debug/debug_lightbeam debug_assert_type_min.wasm
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `Int(_32)`,
 right: `Int(_64)`',
XXX/wasmtime/crates/lightbeam/src/microwasm.rs:1443:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.

This issue is related to the following piece of code:

https://github.com/bytecodealliance/wasmtime/blob/31472fbb5a6417ea3d9eb10417ff5ea49712998a/crates/lightbeam/src/microwasm.rs#L1442-L1444

Reproduction

Download: debug_assert_type_min.zip

or wasm2wat --enable-sign-extension debug_assert_type_min.wasm :

(module
  (type (;0;) (func))
  (func (;0;) (type 0)
    i64.const 0
    i64.extend8_s
    i64.extend16_s
    unreachable)
  (memory (;0;) 1 1)
  (export "inc" (func 0))
  (start 0))

Testing program (need to be compiled in debug mode i.e. RUSTFLAGS=-g cargo build):

use std::env;
use std::fs::{File};
use std::io;
use std::io::Read;
use std::path::PathBuf;

use wasmtime_fuzzing::oracles;
use wasmtime_jit::CompilationStrategy;
use lightbeam;

/// Read the contents of a file
fn read_contents(path: &PathBuf) -> Result<Vec<u8>, io::Error> {
    let mut buffer: Vec<u8> = Vec::new();
    let mut file = File::open(path)?;
    file.read_to_end(&mut buffer)?;
    drop(file);
    Ok(buffer)
}

fn main() {
    let args: Vec<String> = env::args().collect();
    let wasm_path = std::path::PathBuf::from(&args[1]);
    let wasm_binary: Vec<u8> = read_contents(&wasm_path).unwrap();

    let _res_compile = oracles::compile(&wasm_binary[..], CompilationStrategy::Lightbeam);
    let _res_instantiate = oracles::instantiate(&wasm_binary[..], CompilationStrategy::Lightbeam);
    let _res_translate = lightbeam::translate(&wasm_binary[..]);
}

wasmtime commit: 31472fbb5a6417ea3d9eb10417ff5ea49712998a


Last updated: Nov 22 2024 at 16:03 UTC