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

[lightbeam] debug assertion failed in microwasm.rs #736

Closed
pventuzelo opened this issue Dec 18, 2019 · 1 comment
Closed

[lightbeam] debug assertion failed in microwasm.rs #736

pventuzelo opened this issue Dec 18, 2019 · 1 comment
Labels
fuzz-bug Bugs found by a fuzzer lightbeam Issues related to the Lightbeam compiler

Comments

@pventuzelo
Copy link
Contributor

pventuzelo commented Dec 18, 2019

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:

debug_assert_eq!(ty, stack_ty);
}

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: 31472fb

@pepyakin pepyakin added lightbeam Issues related to the Lightbeam compiler fuzz-bug Bugs found by a fuzzer labels Jan 6, 2020
@alexcrichton
Copy link
Member

Lightbeam was removed in #3390 as explained in RFC 14, so I'm going to close this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
fuzz-bug Bugs found by a fuzzer lightbeam Issues related to the Lightbeam compiler
Projects
None yet
Development

No branches or pull requests

3 participants