not support networking. System API support varies between targets; if you run
on Windows it is a good idea to use `--target x86_64-unknown-linux-gnu` to get
better support.
-* Weak memory emulation may produce weak behaivours unobservable by compiled
- programs running on real hardware when `SeqCst` fences are used, and it cannot
- produce all behaviors possibly observable on real hardware.
+* Weak memory emulation may [produce weak behaviours](https://github.com/rust-lang/miri/issues/2301)
+ unobservable by compiled programs running on real hardware when `SeqCst` fences are used, and it
+ cannot produce all behaviors possibly observable on real hardware.
[rust]: https://www.rust-lang.org/
[mir]: https://github.com/rust-lang/rfcs/blob/master/text/1211-mir.md
snippet calls Miri in a loop with different values for the seed:
```
-for seed in $({ echo obase=16; seq 0 255; } | bc); do
- MIRIFLAGS=-Zmiri-seed=$seed cargo miri test || { echo "Last seed: $seed"; break; };
+for SEED in $({ echo obase=16; seq 0 255; } | bc); do
+ echo "Trying seed: $SEED"
+ MIRIFLAGS=-Zmiri-seed=$SEED cargo miri test || { echo "Failing seed: $SEED"; break; };
done
```
Borrows "protectors". Specifying this argument multiple times does not overwrite the previous
values, instead it appends its values to the list. Listing an id multiple times has no effect.
* `-Zmiri-track-pointer-tag=<tag1>,<tag2>,...` shows a backtrace when a given pointer tag
- is popped from a borrow stack (which is where the tag becomes invalid and any
- future use of it will error). This helps you in finding out why UB is
+ is created and when (if ever) it is popped from a borrow stack (which is where the tag becomes invalid
+ and any future use of it will error). This helps you in finding out why UB is
happening and where in your code would be a good place to look for it.
Specifying this argument multiple times does not overwrite the previous
values, instead it appends its values to the list. Listing a tag multiple times has no effect.
sysroot to use. Only set this if you do not want to use the automatically
created sysroot. (The `miri` driver sysroot is controlled via the `--sysroot`
flag instead.)
-* `MIRI_TEST_TARGET` (recognized by the test suite) indicates which target
- architecture to test against. `miri` and `cargo miri` accept the `--target`
- flag for the same purpose.
+* `MIRI_TEST_TARGET` (recognized by the test suite and the `./miri` script) indicates which target
+ architecture to test against. `miri` and `cargo miri` accept the `--target` flag for the same
+ purpose.
* `MIRI_NO_STD` (recognized by `cargo miri` and the test suite) makes sure that the target's
sysroot is built without libstd. This allows testing and running no_std programs.
* `MIRI_BLESS` (recognized by the test suite) overwrite all `stderr` and `stdout` files
* [`integer-encoding` dereferencing a misaligned pointer](https://github.com/dermesser/integer-encoding-rs/pull/23)
* [`rkyv` constructing a `Box<[u8]>` from an overaligned allocation](https://github.com/rkyv/rkyv/commit/a9417193a34757e12e24263178be8b2eebb72456)
* [Data race in `thread::scope`](https://github.com/rust-lang/rust/issues/98498)
+* [`regex` incorrectly handling unaligned `Vec<u8>` buffers](https://www.reddit.com/r/rust/comments/vq3mmu/comment/ienc7t0?context=3)
+* [Incorrect use of `compare_exchange_weak` in `once_cell`](https://github.com/matklad/once_cell/issues/186)
Violations of [Stacked Borrows] found that are likely bugs (but Stacked Borrows is currently just an experiment):