Preserve full native stack traces in errors (#823)
* Preserve full native stack traces in errors This commit builds on #759 by performing a few refactorings: * The `backtrace` crate is updated to 0.3.42 which incorporates the Windows-specific stack-walking code, so that's no longer needed. * A full `backtrace::Backtrace` type is held in a trap at all times. * The trap structures in the `wasmtime-*` internal crates were refactored a bit to preserve more information and deal with raw values rather than converting between various types and strings. * The `wasmtime::Trap` type has been updated with these various changes. Eventually I think we'll want to likely render full stack traces (and/or partial wasm ones) into error messages, but for now that's left as-is and we can always improve it later. I suspect the most relevant thing we need to do is to implement function name symbolication for wasm functions first, and then afterwards we can incorporate native function names! * Fix some test suite assertions
This commit is contained in:
@@ -128,9 +128,12 @@ mod tests {
|
||||
{
|
||||
println!("calling read_out_of_bounds...");
|
||||
let trap = invoke_export(&instance, "read_out_of_bounds").unwrap_err();
|
||||
assert!(trap
|
||||
.message()
|
||||
.starts_with("call error: wasm trap: out of bounds memory access"));
|
||||
assert!(
|
||||
trap.message()
|
||||
.starts_with("wasm trap: out of bounds memory access"),
|
||||
"bad trap message: {:?}",
|
||||
trap.message()
|
||||
);
|
||||
}
|
||||
|
||||
// these invoke wasmtime_call_trampoline from callable.rs
|
||||
@@ -151,7 +154,7 @@ mod tests {
|
||||
let trap = read_out_of_bounds_func.call(&[]).unwrap_err();
|
||||
assert!(trap
|
||||
.message()
|
||||
.starts_with("call error: wasm trap: out of bounds memory access"));
|
||||
.starts_with("wasm trap: out of bounds memory access"));
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user