Skip to main content

## MiriConfig

# Struct MiriConfig

Source

    pub struct MiriConfig {Show 38 fields
        pub env: Vec<(OsString, OsString)>,
        pub validation: ValidationMode,
        pub borrow_tracker: Option<BorrowTrackerMethod>,
        pub check_alignment: AlignmentCheck,
        pub isolated_op: IsolatedOp,
        pub ignore_leaks: bool,
        pub forwarded_env_vars: Vec<String>,
        pub set_env_vars: FxHashMap<String, String>,
        pub args: Vec<String>,
        pub seed: Option<u64>,
        pub tracked_pointer_tags: FxHashSet<BorTag>,
        pub tracked_alloc_ids: FxHashSet<AllocId>,
        pub track_alloc_accesses: bool,
        pub data_race_detector: bool,
        pub weak_memory_emulation: bool,
        pub genmc_config: Option<GenmcConfig>,
        pub track_outdated_loads: bool,
        pub cmpxchg_weak_failure_rate: f64,
        pub measureme_out: Option<String>,
        pub backtrace_style: BacktraceStyle,
        pub provenance_mode: ProvenanceMode,
        pub mute_stdout_stderr: bool,
        pub preemption_rate: f64,
        pub report_progress: Option<u32>,
        pub native_lib: Vec<PathBuf>,
        pub native_lib_enable_tracing: bool,
        pub gc_interval: u32,
        pub num_cpus: u32,
        pub page_size: Option<u64>,
        pub collect_leak_backtraces: bool,
        pub address_reuse_rate: f64,
        pub address_reuse_cross_thread_rate: f64,
        pub fixed_scheduling: bool,
        pub force_intrinsic_fallback: bool,
        pub float_nondet: bool,
        pub float_rounding_error: FloatRoundingErrorMode,
        pub short_fd_operations: bool,
        pub user_relevant_crates: Vec<String>,
    }

Expand description

Configuration needed to spawn a Miri instance.

## Fields§

§`env: Vec<(OsString, OsString)>`

The host environment snapshot to use as basis for what is provided to the interpreted program. (This is still subject to isolation as well as `forwarded_env_vars`.)

§`validation: ValidationMode`

Determine if validity checking is enabled.

§`borrow_tracker: Option<BorrowTrackerMethod>`

Determines if Stacked Borrows or Tree Borrows is enabled.

§`check_alignment: AlignmentCheck`

Controls alignment checking.

§`isolated_op: IsolatedOp`

Action for an op requiring communication with the host.

§`ignore_leaks: bool`

Determines if memory leaks should be ignored.

§`forwarded_env_vars: Vec<String>`

Environment variables that should always be forwarded from the host.

§`set_env_vars: FxHashMap<String, String>`

Additional environment variables that should be set in the interpreted program.

§`args: Vec<String>`

Command-line arguments passed to the interpreted program.

§`seed: Option<u64>`

The seed to use when non-determinism or randomness are required (e.g. ptr-to-int cast, `getrandom()`).

§`tracked_pointer_tags: FxHashSet<BorTag>`

The stacked borrows pointer ids to report about.

§`tracked_alloc_ids: FxHashSet<AllocId>`

The allocation ids to report about.

§`track_alloc_accesses: bool`

For the tracked alloc ids, also report read/write accesses.

§`data_race_detector: bool`

Determine if data race detection should be enabled.

§`weak_memory_emulation: bool`

Determine if weak memory emulation should be enabled. Requires data race detection to be enabled.

§`genmc_config: Option<GenmcConfig>`

Determine if we are running in GenMC mode and with which settings. In GenMC mode, Miri will explore multiple concurrent executions of the given program.

§`track_outdated_loads: bool`

Track when an outdated (weak memory) load happens.

§`cmpxchg_weak_failure_rate: f64`

Rate of spurious failures for compare_exchange_weak atomic operations, between 0.0 and 1.0, defaulting to 0.8 (80% chance of failure).

§`measureme_out: Option<String>`

If `Some`, enable the `measureme` profiler, writing results to a file with the specified prefix.

§`backtrace_style: BacktraceStyle`

Which style to use for printing backtraces.

§`provenance_mode: ProvenanceMode`

Which provenance to use for int2ptr casts.

§`mute_stdout_stderr: bool`

Whether to ignore any output by the program. This is helpful when debugging miri as its messages don’t get intermingled with the program messages.

§`preemption_rate: f64`

The probability of the active thread being preempted at the end of each basic block.

§`report_progress: Option<u32>`

Report the current instruction being executed every N basic blocks.

§`native_lib: Vec<PathBuf>`

The location of the shared object files to load when calling external functions

§`native_lib_enable_tracing: bool`

Whether to enable the new native lib tracing system.

§`gc_interval: u32`

Run a garbage collector for BorTags every N basic blocks.

§`num_cpus: u32`

The number of CPUs to be reported by miri.

§`page_size: Option<u64>`

Requires Miri to emulate pages of a certain size.

§`collect_leak_backtraces: bool`

Whether to collect a backtrace when each allocation is created, just in case it leaks.

§`address_reuse_rate: f64`

Probability for address reuse.

§`address_reuse_cross_thread_rate: f64`

Probability for address reuse across threads.

§`fixed_scheduling: bool`

Round Robin scheduling with no preemption.

§`force_intrinsic_fallback: bool`

Always prefer the intrinsic fallback body over the native Miri implementation.

§`float_nondet: bool`

Whether floating-point operations can behave non-deterministically.

§`float_rounding_error: FloatRoundingErrorMode`

Whether floating-point operations can have a non-deterministic rounding error.

§`short_fd_operations: bool`

Whether Miri artificially introduces short reads/writes on file descriptors.

§`user_relevant_crates: Vec<String>`

A list of crates that are considered user-relevant.

## Trait Implementations§

Source§

### impl Clone for MiriConfig

Source§

#### fn clone(&self) -> MiriConfig

Returns a duplicate of the value. Read more
1.0.0 · Source§

#### fn clone_from(&mut self, source: &Self)

Performs copy-assignment from `source`. Read more
Source§

### impl Default for MiriConfig

Source§

#### fn default() -> MiriConfig

Returns the “default value” for a type. Read more

## Auto Trait Implementations§

§

### impl Freeze for MiriConfig

§

### impl RefUnwindSafe for MiriConfig

§

### impl Send for MiriConfig

§

### impl Sync for MiriConfig

§

### impl Unpin for MiriConfig

§

### impl UnsafeUnpin for MiriConfig

§

### impl UnwindSafe for MiriConfig

## Blanket Implementations§

Source§

### impl<T> Any for T
where T: 'static + ?Sized,

Source§

#### fn type_id(&self) -> TypeId

Gets the `TypeId` of `self`. Read more
Source§

### impl<T> Borrow<T> for T
where T: ?Sized,

Source§

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

### impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

#### fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

### impl<T> CloneToUninit for T
where T: Clone,

Source§

#### unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (`clone_to_uninit`)
Performs copy-assignment from `self` to `dest`. Read more
Source§

### impl<T> From<T> for T

Source§

#### fn from(t: T) -> T

Returns the argument unchanged.

Source§

### impl<T, U> Into<U> for T
where U: From<T>,

Source§

#### fn into(self) -> U

Calls `U::from(self)`.

That is, this conversion is whatever the implementation of `From<T> for U` chooses to do.

Source§

### impl<T> Same for T

Source§

#### type Output = T

Should always be `Self`
Source§

### impl<T> ToOwned for T
where T: Clone,

Source§

#### type Owned = T

The resulting type after obtaining ownership.
Source§

#### fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

#### fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

### impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

#### type Error = Infallible

The type returned in the event of a conversion error.
Source§

#### fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

### impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

#### type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

#### fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

### impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

#### fn vzip(self) -> V

## Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain `repr(...)` attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 344 bytes