Skip to content

Commit

Permalink
Disable cranelift's verifier by default (#882)
Browse files Browse the repository at this point in the history
The intention of the `wasmtime` crate was to disable this verifier by
default, but it looks like cranelift actually has it turned on by
default which was making our documentation incorrect!

This was discovered by seeing a number of timeouts when fuzzing. The
debug verifier is great for fuzzing, however, so fuzzing is updated to
enable this unconditionally, meaning we'll still have timeouts. For
general users though this should make the documentation correct that the
`wasmtime` crate, by default, disables the debug verifier.
  • Loading branch information
alexcrichton authored Feb 6, 2020
1 parent 8e06513 commit c860edc
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
5 changes: 5 additions & 0 deletions crates/api/src/runtime.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@ impl Config {
.enable("avoid_div_traps")
.expect("should be valid flag");

// Invert cranelift's default-on verification to instead default off.
flags
.set("enable_verifier", "false")
.expect("should be valid flag");

Config {
debug_info: false,
features: Default::default(),
Expand Down
10 changes: 8 additions & 2 deletions crates/fuzzing/src/oracles.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ use wasmtime::*;
pub fn instantiate(wasm: &[u8], strategy: Strategy) {
let mut config = Config::new();
config
.cranelift_debug_verifier(true)
.strategy(strategy)
.expect("failed to enable lightbeam");
instantiate_with_config(wasm, config);
Expand Down Expand Up @@ -70,7 +71,10 @@ pub fn instantiate_with_config(wasm: &[u8], config: Config) {
/// You can control which compiler is used via passing a `Strategy`.
pub fn compile(wasm: &[u8], strategy: Strategy) {
let mut config = Config::new();
config.strategy(strategy).unwrap();
config
.cranelift_debug_verifier(true)
.strategy(strategy)
.unwrap();
let engine = Engine::new(&config);
let store = Store::new(&engine);
let _ = Module::new(&store, wasm);
Expand Down Expand Up @@ -264,7 +268,9 @@ pub fn make_api_calls(api: crate::generators::api::ApiCalls) {
match call {
ApiCall::ConfigNew => {
assert!(config.is_none());
config = Some(Config::new());
let mut cfg = Config::new();
cfg.cranelift_debug_verifier(true);
config = Some(cfg);
}

ApiCall::ConfigDebugInfo(b) => {
Expand Down

0 comments on commit c860edc

Please sign in to comment.