Soteria_rust_lib.Errortype t = [ | `DoubleFreeTried freeing the same allocation twice
*)| `InvalidFreeTried freeing memory at a non-0 offset
*)| `MemoryLeakDynamically allocated memory was not freed
*)| `MisalignedPointer of
Soteria_rust_lib.Typed.T.nonzero Typed.t
* Soteria_rust_lib.Typed.T.nonzero Typed.t
* Soteria_rust_lib.Typed.T.sint Typed.tTried accessing memory with a misaligned pointer (expected, received, offset)
| `NullDereferenceDereferenced a null pointer
*)| `OutOfBoundsTried accessing memory outside the allocation bounds
*)| `UninitializedMemoryAccessAccessed uninitialised memory
*)| `UseAfterFreeUse a location in memory after it was freed
*)| `MisalignedFnPointerTried calling a function pointer with a non-0 offset
*)| `NotAFnPointerTried calling a function pointer, but it doesn't represent a function
*)| `AccessedFnPointerTried accessing a function pointer's pointee
*)| `InvalidFnArgCount of int * intInvalid argument count for function (function pointers only) (expected, received)
| `InvalidFnArgTys of Charon.Types.ty * Charon.Types.tyInvalid arguments for function (function pointers only) (expected, received)
| `DivisionByZeroInteger division by zero
*)| `InvalidShiftBinary shift that is less than 0 or that exceeds the bit size of the type
*)| `OverflowArithmetic over or underflow
*)| `RefToUninhabited of Charon.Types.tyAttempt to have a reference to an uninhabited value
*)| `InvalidRef of tAttempt to have a reference that is not valid, e.g. because it points to uninitialised memory. Keeps track of the inner error
*)| `StdErr of stringError caused by the std library (mainly intrinsics); kind of equivalent to `Panic
*)| `UBAbortAbort caused by an UB trap being triggered
*)| `UBDanglingPointerPointer was offset outside of its allocation
*)| `UBPointerArithmeticArithmetics on two pointers
*)| `UBPointerComparisonComparison of pointers with different provenance
*)| `UBIntToPointerNoProvenance of Soteria_rust_lib.Typed.T.sint Typed.tInteger to pointer cast with no provenance
*)| `UBIntToPointerStrictInteger to pointer cast with strict provenance
*)| `UBTransmute of stringInvalid transmute, e.g. null reference, wrong enum discriminant
*)| `AliasingErrorTree borrow violation that lead to UB
*)| `RefInvalidatedEarlyA protected reference was invalidated before the end of the function
*)| `InvalidFreeStrongProtectorTried freeing an allocation when a strongly protected reference to it still exists
*)| `FailedAssert of string optionFailed assert!(cond)
*)| `Panic of string optionRegular panic, with a message
*)| `UnwindTerminateUnwinding terminated
*)| `DeadVariableLocal was not initialised (impossible without `mir!`)
*)| `BreakpointBreakpoint intrinsic
*)| `MetaExpectedErrorFunction was marked as expecting an error; none happened
*)| `InvalidLayout of Charon.Types.tyType is too large for memory
*)| `InvalidAllocError in alloc/realloc; a wrong alignment or size was provided
*) ]val hash_warn_reason : warn_reason -> intval is_unwindable : [> t ] -> boolval pp : Stdlib.Format.formatter -> t -> unitval severity : t -> Soteria.Terminal.Diagnostic.severitytype with_trace = t * Charon.Meta.span_data Soteria.Terminal.Call_trace.tval pp_with_trace :
Stdlib.Format.formatter ->
(t * Charon.Meta.span_data Soteria.Terminal.Call_trace.element list) ->
unitval add_to_call_trace :
with_trace ->
Charon.Meta.span_data Soteria.Terminal.Call_trace.element ->
t * Charon.Meta.span_data Soteria.Terminal.Call_trace.element listval decorate : Trace.t -> t -> with_tracemodule Diagnostic : sig ... end