Commit Graph

6604 Commits

Author SHA1 Message Date
Ben Kimock
17acc3f71c Document implementation a bit, add some fast paths 2022-07-01 20:15:34 -04:00
bors
d118a949f7 Auto merge of #2302 - RalfJung:datarace, r=RalfJung
avoid copying thread manager state in data race detector

When doing https://github.com/rust-lang/miri/pull/2047 I did not realize that there is some redundant state here that we can now remove from the data race detector.

Also this removes the vector clocks from the data race errors since those don't really help diagnose the problem.
2022-07-02 00:14:06 +00:00
Ralf Jung
d09db1660b fix and slightly improve data race reports 2022-07-01 20:13:44 -04:00
Ben Kimock
3bbcafe3b5 Cache lookups into the borrow stack
This adds a very simple LRU-like cache which stores the locations of
often-used tags. While the implementation is very simple, the cache hit
rate is incredible at ~99.9% on most programs, and often the element at
position 0 in the cache has a hit rate of 90%. So the sub-optimality of
this cache basicaly vanishes into the noise in a profile.

Additionally, we keep a range which denotes where there might be an item
granting Unique permission in the stack, so that when we invalidate
Uniques we do not need to scan much of the stack, and often scan nothing
at all.
2022-07-01 17:51:16 -04:00
Ralf Jung
dfdedae840 avoid copying thread manager state in data race detector 2022-07-01 17:07:29 -04:00
Ralf Jung
f238513efa rename some data_race types for more clarity 2022-07-01 16:21:48 -04:00
bors
70b97a5d7b Auto merge of #2299 - RalfJung:bsd, r=RalfJung
test more things on FreeBSD
2022-07-01 18:14:23 +00:00
Ralf Jung
ab0005bc38 run data_race tests on bsd 2022-07-01 14:13:36 -04:00
Ralf Jung
734e8903f2 more current_dir tests for freebsd 2022-07-01 14:12:25 -04:00
bors
c1a37b87aa Auto merge of #2298 - InfRandomness:shim-error, r=RalfJung
Add `__error` to freebsd shims

Signed-off-by: InfRandomness <infrandomness@gmail.com>
2022-07-01 17:41:10 +00:00
InfRandomness
dc47649d21
Add current_dir_with_isolation to freebsd tests list
Signed-off-by: InfRandomness <infrandomness@gmail.com>
2022-07-01 18:52:32 +02:00
InfRandomness
dca2bb68b3
Add __error to freebsd shims
Signed-off-by: InfRandomness <infrandomness@gmail.com>
2022-07-01 18:42:33 +02:00
bors
c768f3c03c Auto merge of #2297 - RalfJung:rustup, r=RalfJung
rustup
2022-07-01 16:26:25 +00:00
Ralf Jung
12d04ac4c4 make clippy happy 2022-07-01 12:25:35 -04:00
bors
5815d8d81c Auto merge of #2296 - RalfJung:miri-script, r=RalfJung
./miri improvements

I have needed to run something with many different seeds often enough that I would like an easier way to do it. ;) So now we have `./miri many-seeds`.

Also I made the script less dependent on the working directory, so calling it from a different directory should work properly now even if that other directory does not have the same rustup override as the one where Miri lives.
2022-07-01 14:46:30 +00:00
Ralf Jung
af39709a9c rustup 2022-07-01 10:14:31 -04:00
Ralf Jung
9bc7938bc2 more tweaks 2022-07-01 10:01:00 -04:00
Ralf Jung
7d09313727 add './miri many-seeds', and respect MIRIFLAGS in './miri run' 2022-07-01 09:55:02 -04:00
Ralf Jung
a1fabb9478 make miri script work from other working directories 2022-07-01 07:54:43 -04:00
bors
f9e0cf4951 Auto merge of #2295 - RalfJung:better-alloc-tracking, r=RalfJung
allocation tracking: also print size, alignment, kind of the allocation
2022-07-01 02:24:51 +00:00
Ralf Jung
7f3fbbdee7 allocation tracking: also print size, alignment, kind of the allocation 2022-06-30 22:24:23 -04:00
bors
38effb37da Auto merge of #2293 - RalfJung:env, r=RalfJung
make -Zmiri-env-forward take precedence over -Zmiri-env-exclude

Lets people experiment with the `TERM` env var.
2022-06-30 15:15:20 +00:00
Ralf Jung
aef78d3a9f make -Zmiri-env-forward take precedence over -Zmiri-env-exclude 2022-06-30 11:14:30 -04:00
bors
3b1fc83c13 Auto merge of #2291 - RalfJung:no-std-is-minimal, r=RalfJung
use run_tests_minimal for the new no-std test
2022-06-30 14:05:32 +00:00
Ralf Jung
c1d10cdbe0 use run_tests_minimal for the new no-std test 2022-06-30 10:04:56 -04:00
bors
f2279fa943 Auto merge of #2282 - rust-lang:no_std, r=RalfJung
Support no-std targets and test it in CI

cc `@jamesmunns`

This is a bit annoying as you need to have `MIRI_NO_STD=1` set at all times, but it works ™️

Once libstd's `restricted_std` feature becomes more usable, we can probably do away with that env var.

I also added a test to CI to make sure it keeps working. This test only builds libcore and runs a single test, so it's pretty fast.
2022-06-30 13:16:57 +00:00
Oli Scherer
a9f9d48b1a Support no-std targets and test it in CI 2022-06-30 12:51:22 +00:00
bors
9f50296309 Auto merge of #2290 - RalfJung:snakessss, r=RalfJung
use Rust SnakeCase
2022-06-30 02:18:34 +00:00
Ralf Jung
6a204e2dec use Rust SnakeCase 2022-06-29 22:17:46 -04:00
bors
ff62c3ac98 Auto merge of #2289 - RalfJung:rustup, r=RalfJung
rustup
2022-06-30 01:31:55 +00:00
Ralf Jung
a2e61aeeff rustup 2022-06-29 21:31:27 -04:00
bors
5974e7d4a9 Auto merge of #2287 - RalfJung:field-retagging, r=RalfJung
stacked borrows: add option for recursive field retagging
2022-06-29 23:04:07 +00:00
bors
1b3332a0a6 Auto merge of #2286 - LegNeato:patch-2, r=RalfJung
Support `gettimeofday` on more than macos

This appears to be in linux and in openbsd as well:

* https://github.com/torvalds/linux/blob/master/lib/vdso/gettimeofday.c
* https://github.com/openbsd/src/blob/master/sys/sys/time.h#L439

Note that std currently says [different syscalls are used on mac vs linux](https://doc.rust-lang.org/std/time/struct.SystemTime.html#platform-specific-behavior) but this is not part of[ std's contract](https://doc.rust-lang.org/std/io/index.html#platform-specific-behavior) and third party code could call the syscall directly on different platforms.
2022-06-29 22:39:57 +00:00
Ralf Jung
955f961f83 merge two SB test files 2022-06-29 18:22:30 -04:00
Ralf Jung
c4e86e103e add option for recursive field retagging 2022-06-29 18:22:30 -04:00
bors
ccfb869e23 Auto merge of #2288 - RalfJung:clippy, r=RalfJung
add ./miri clippy

also make ui_test comply with clippy
2022-06-29 22:21:30 +00:00
Ralf Jung
e33efc7517 make ui_test pass clippy 2022-06-29 18:17:36 -04:00
Ralf Jung
02f8cb2d55 add ./miri clippy 2022-06-29 18:17:36 -04:00
Christian Legnitto
73a1a27a45 Support gettimeofday on more than macos
This appears to be in linux and in openbsd as well:

* https://github.com/torvalds/linux/blob/master/lib/vdso/gettimeofday.c
* https://github.com/openbsd/src/blob/master/sys/sys/time.h#L439

Co-authored-by: Ralf Jung <post@ralfj.de>
2022-06-29 17:48:04 -04:00
bors
328a8c7a1e Auto merge of #2285 - LegNeato:patch-1, r=RalfJung
Update path to passing tests in CONTRIBUTING.md examples

This appears to be renamed from `tests/run-pass` to `tests/pass`.
2022-06-29 17:18:00 +00:00
Christian Legnitto
ad549194f9
Update path to passing tests in CONTRIBUTING.md examples
This appears to be renamed from `tests/run-pass` to `tests/pass`.
2022-06-29 13:14:30 -04:00
bors
062b66066c Auto merge of #2283 - RalfJung:color, r=RalfJung
revert --color=always changes

They [cause problems](https://github.com/rust-lang/miri/issues/2277) and they completely break rendering on the playground:
```
   Compiling playground v0.0.1 (/playground)
    Finished dev [unoptimized + debuginfo] target(s) in 0.47s
     Running `/playground/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/cargo-miri target/miri/x86_64-unknown-linux-gnu/debug/playground`
error[E0277]: `*mut std::sync::atomic::AtomicUsize` cannot be sent between threads safely
   --> src/main.rs:17:18
    |
17  |           let j1 = spawn(move || {
    |  __________________^^^^^_-
    | |                  |
    | |                  `*mut std::sync::atomic::AtomicUsize` cannot be sent between threads safely
18  | |             *(c.0 as *mut usize) = 32;
19  | |         });
    | |_________- within this `[closure@src/main.rs:17:24: 19:10]`
    |
```

Sorry `@saethlin,` I think we need to go back to start here and consider another solution.

Fixes https://github.com/rust-lang/miri/issues/2277
2022-06-29 14:35:18 +00:00
Ralf Jung
6f7c0c0a2a revert --color=always changes 2022-06-29 10:14:26 -04:00
bors
63d660540b Auto merge of #2281 - RalfJung:rustup, r=RalfJung
Rustup

Fix our stacktrace after https://github.com/rust-lang/rust/pull/98549. Now we can control whether `caller_location` should be pruned!
2022-06-29 14:09:52 +00:00
Ralf Jung
839c120b40 fmt 2022-06-29 10:09:18 -04:00
Ralf Jung
f389d46b04 also prune caller_location frames when backtrace=off 2022-06-29 09:33:12 -04:00
Ralf Jung
ea8dba411b improve atomics test coverage 2022-06-29 09:31:11 -04:00
Ralf Jung
28dea673be rustup 2022-06-29 08:33:06 -04:00
bors
29b1cc72fe Auto merge of #2280 - RalfJung:int2ptr, r=RalfJung
tweak int2ptr diagnostics
2022-06-28 12:53:27 +00:00
Ralf Jung
8bd4bbe3e4 tweak int2ptr diagnostics 2022-06-28 08:52:22 -04:00