Enum flowistry_pdg::rustc::mir::interpret::UndefinedBehaviorInfo
source · pub enum UndefinedBehaviorInfo<'a> {
Show 30 variants
Ub(String),
Unreachable,
BoundsCheckFailed {
len: u64,
index: u64,
},
DivisionByZero,
RemainderByZero,
DivisionOverflow,
RemainderOverflow,
PointerArithOverflow,
InvalidMeta(InvalidMetaKind),
UnterminatedCString(Pointer<AllocId>),
PointerUseAfterFree(AllocId, CheckInAllocMsg),
PointerOutOfBounds {
alloc_id: AllocId,
alloc_size: Size,
ptr_offset: i64,
ptr_size: Size,
msg: CheckInAllocMsg,
},
DanglingIntPointer(u64, CheckInAllocMsg),
AlignmentCheckFailed {
required: Align,
has: Align,
},
WriteToReadOnly(AllocId),
DerefFunctionPointer(AllocId),
DerefVTablePointer(AllocId),
InvalidBool(u8),
InvalidChar(u32),
InvalidTag(Scalar<AllocId>),
InvalidFunctionPointer(Pointer<AllocId>),
InvalidVTablePointer(Pointer<AllocId>),
InvalidStr(Utf8Error),
InvalidUninitBytes(Option<(AllocId, BadBytesAccess)>),
DeadLocal,
ScalarSizeMismatch(ScalarSizeMismatch),
UninhabitedEnumVariantWritten(VariantIdx),
UninhabitedEnumVariantRead(VariantIdx),
ValidationError(ValidationErrorInfo<'a>),
Custom(CustomSubdiagnostic<'a>),
}
Expand description
Error information for when the program caused Undefined Behavior.
Variants§
Ub(String)
Free-form case. Only for errors that are never caught! Used by miri
Unreachable
Unreachable code was executed.
BoundsCheckFailed
A slice/array index projection went out-of-bounds.
DivisionByZero
Something was divided by 0 (x / 0).
RemainderByZero
Something was “remainded” by 0 (x % 0).
DivisionOverflow
Signed division overflowed (INT_MIN / -1).
RemainderOverflow
Signed remainder overflowed (INT_MIN % -1).
PointerArithOverflow
Overflowing inbounds pointer arithmetic.
InvalidMeta(InvalidMetaKind)
Invalid metadata in a wide pointer
UnterminatedCString(Pointer<AllocId>)
Reading a C string that does not end within its allocation.
PointerUseAfterFree(AllocId, CheckInAllocMsg)
Using a pointer after it got freed.
PointerOutOfBounds
Used a pointer outside the bounds it is valid for.
(If ptr_size > 0
, determines the size of the memory range that was expected to be in-bounds.)
DanglingIntPointer(u64, CheckInAllocMsg)
Using an integer as a pointer in the wrong way.
AlignmentCheckFailed
Used a pointer with bad alignment.
WriteToReadOnly(AllocId)
Writing to read-only memory.
DerefFunctionPointer(AllocId)
Trying to access the data behind a function pointer.
DerefVTablePointer(AllocId)
Trying to access the data behind a vtable pointer.
InvalidBool(u8)
Using a non-boolean u8
as bool.
InvalidChar(u32)
Using a non-character u32
as character.
InvalidTag(Scalar<AllocId>)
The tag of an enum does not encode an actual discriminant.
InvalidFunctionPointer(Pointer<AllocId>)
Using a pointer-not-to-a-function as function pointer.
InvalidVTablePointer(Pointer<AllocId>)
Using a pointer-not-to-a-vtable as vtable pointer.
InvalidStr(Utf8Error)
Using a string that is not valid UTF-8,
InvalidUninitBytes(Option<(AllocId, BadBytesAccess)>)
Using uninitialized data where it is not allowed.
DeadLocal
Working with a local that is not currently live.
ScalarSizeMismatch(ScalarSizeMismatch)
Data size is not equal to target size.
UninhabitedEnumVariantWritten(VariantIdx)
A discriminant of an uninhabited enum variant is written.
UninhabitedEnumVariantRead(VariantIdx)
An uninhabited enum variant is projected.
ValidationError(ValidationErrorInfo<'a>)
Validation error.
Custom(CustomSubdiagnostic<'a>)
A custom (free-form) error, created by err_ub_custom!
.