pub enum Error {
Unsat,
LoopBoundExceeded(usize),
NullPointerDereference,
FunctionNotFound(String),
SolverError(String),
UnsupportedInstruction(String),
MalformedInstruction(String),
UnreachableInstruction,
FailedToResolveFunctionPointer(u64),
HookReturnValueMismatch(String),
OtherError(String),
}
Expand description
Error types used throughout this crate.
The Display
impl for Error
will provide information about the error
itself. For more detailed information about the error, including the program
context in which it occurred, see
State.full_error_message_with_context()
.
Variants§
Unsat
While performing an operation, we discovered the current path is unsat.
This error type is used internally, but (by default) isn’t exposed to consumers of ExecutionManager
;
see Config.squash_unsats
.
LoopBoundExceeded(usize)
The current path has exceeded the configured loop_bound
(see Config
).
(The usize
here indicates the value of the configured loop_bound
.)
NullPointerDereference
The current path has attempted to dereference a null pointer (or
more precisely, a pointer for which NULL
is a possible value)
FunctionNotFound(String)
Processing a call of a function with the given name, but failed to find an LLVM definition, a function hook, or a built-in handler for it
SolverError(String)
The solver returned this processing error while evaluating a query.
Often, this is a timeout; see Config.solver_query_timeout
UnsupportedInstruction(String)
Encountered an LLVM instruction which is not currently supported
MalformedInstruction(String)
Encountered an LLVM instruction which was malformed, or at least didn’t conform to our expected invariants
UnreachableInstruction
Reached an LLVM Unreachable
instruction
FailedToResolveFunctionPointer(u64)
Failed to interpret some symbolic value (BV
) as a function pointer,
because it has a possible solution (the u64
here) which points to
something that’s not a function
HookReturnValueMismatch(String)
The hook for some function returned a value which didn’t match the
function return type: for instance, a value of the wrong size.
The String
here just describes the error
OtherError(String)
Some kind of error which doesn’t fall into one of the above categories.
The String
here describes the error