Enum wasmtime_runtime::TrapReason
source · pub enum TrapReason {
User {
error: Error,
needs_backtrace: bool,
},
Jit {
pc: usize,
faulting_addr: Option<usize>,
trap: Trap,
},
Wasm(Trap),
}
Expand description
Enumeration of different methods of raising a trap.
Variants§
User
A user-raised trap through raise_user_trap
.
Fields
Jit
A trap raised from Cranelift-generated code.
Fields
pc: usize
The program counter where this trap originated.
This is later used with side tables from compilation to translate the trapping address to a trap code.
faulting_addr: Option<usize>
If the trap was a memory-related trap such as SIGSEGV then this field will contain the address of the inaccessible data.
Note that wasm loads/stores are not guaranteed to fill in this
information. Dynamically-bounds-checked memories, for example, will
not access an invalid address but may instead load from NULL or may
explicitly jump to a ud2
instruction. This is only available for
fault-based traps which are one of the main ways, but not the only
way, to run wasm.
Wasm(Trap)
A trap raised from a wasm libcall
Implementations§
source§impl TrapReason
impl TrapReason
sourcepub fn user_without_backtrace(error: Error) -> Self
pub fn user_without_backtrace(error: Error) -> Self
Create a new TrapReason::User
that does not have a backtrace yet.
sourcepub fn user_with_backtrace(error: Error) -> Self
pub fn user_with_backtrace(error: Error) -> Self
Create a new TrapReason::User
that already has a backtrace.