Commit Graph

7003 Commits

Author SHA1 Message Date
Oli Scherer
4f357956b8 Only support libffi on unix for now 2022-09-21 12:48:47 +00:00
Oli Scherer
369efd0d8e Lint fixes 2022-09-21 09:34:01 +00:00
bors
eb84c8b621 Auto merge of #2553 - RalfJung:macos-is-a-pain, r=RalfJung
make a sync test more reliable

CI still failed in https://github.com/rust-lang/miri/actions/runs/3088146532/jobs/4994285794, with a 2 second timeout?!??
2022-09-20 08:19:56 +00:00
Ralf Jung
42523d9231 make a sync test more reliable 2022-09-20 10:14:30 +02:00
bors
dfa6f8894e Auto merge of #2552 - RalfJung:env-term, r=oli-obk
remove Windows TERM env var hack and -Zmiri-env-exclude

The hack should not be needed any more since https://github.com/rust-lang/rust/pull/100206. And that also mostly removes the need for `-Zmiri-env-exclude` -- if needed, users can still achieve the same by running `(unset VAR; cargo miri test)`.

I am keeping `-Zmiri-env-forward` since it is still useful, e.g. to have RUST_BACKTRACE=full set in an otherwise deterministic execution.

`@rust-lang/miri` any objections to removing `-Zmiri-env-exclude`?
2022-09-20 07:16:58 +00:00
Ralf Jung
dd80b1aaba work harder around notorious macos unrealiability 2022-09-20 09:14:14 +02:00
Ralf Jung
bacf131acc remove Windows TERM env var hack and -Zmiri-env-exclude 2022-09-20 08:51:13 +02:00
bors
d9ad25ee4b Auto merge of #2548 - RalfJung:remove-tls-diagnostics-hack, r=RalfJung
avoid thread-local var indirection for non-halting diagnostics

This hack used to be necessary because Stacked Borrows did not have access to enough parts of the machine. But that got fixed a while ago, so now we can just emit diagnostics directly, which is a lot more reliable.

Needs https://github.com/rust-lang/rust/pull/101985
Fixes https://github.com/rust-lang/miri/issues/2538
2022-09-20 06:42:05 +00:00
Ralf Jung
7687b7e510 rustup, fmt 2022-09-20 08:41:44 +02:00
Ralf Jung
5ca1f85a2d make some names more consistent 2022-09-20 08:37:20 +02:00
Ralf Jung
cc149c7691 put a tcx into the Machine so that we have to pass around fewer things 2022-09-20 08:37:20 +02:00
Ralf Jung
3cb27f584b avoid thread-local var indirection for non-halting diagnostics 2022-09-20 08:37:20 +02:00
bors
4b9463c5b7 Auto merge of #2551 - RalfJung:rustup, r=RalfJung
rustup

Cc https://github.com/rust-lang/rust/issues/101867
2022-09-19 21:54:47 +00:00
Ralf Jung
855a2ad285 give macOS more time 2022-09-19 22:57:26 +02:00
Ralf Jung
f0c6f0d1bf rustup 2022-09-19 22:32:36 +02:00
bors
0def954aab Auto merge of #2547 - RalfJung:fake-apis, r=saethlin
note on deterministic 'fake' API implementations

Now that we also have fake clocks, it seems prudent to warn about this at the top of the readme.

r? `@rust-lang/miri`
2022-09-19 14:51:43 +00:00
Ralf Jung
1a955567d0 note on deterministic 'fake' API implementations 2022-09-19 09:02:13 +02:00
bors
fd05ff5290 Auto merge of #2546 - RalfJung:comments, r=RalfJung
add/fix some comments
2022-09-18 12:07:56 +00:00
Ralf Jung
7fdd924ce4 add/fix some comments 2022-09-18 13:59:04 +02:00
bors
bb3bac0373 Auto merge of #2544 - saethlin:egrep, r=saethlin
Don't use egrep, we don't need it

As of a few days ago, the latest version of `egrep` is now this:
```sh
#!/bin/sh
cmd=${0##*/}
echo "$cmd: warning: $cmd is obsolescent; using grep -E" >&2
exec grep -E "$`@"`
```
Fortunately we don't actually need ERE, so we can just drop the e.
2022-09-15 23:12:44 +00:00
Ben Kimock
a094296e8b don't use egrep, we don't need it 2022-09-15 18:36:33 -04:00
bors
2f1fa12659 Auto merge of #2506 - pvdrz:a-really-bad-clock, r=saethlin
Make `sleep` work with isolation enabled

Implement a virtual monotone clock that can be used to track time while isolation is enabled. This virtual clock keeps an internal nanoseconds counter that will be increased by a fixed amount at the end of every basic block.

When a process sleeps, this clock will return immediately and increase the counter by the interval the process was supposed to sleep. Making miri execution faster than native code :trollface:.

cc `@RalfJung` `@saethlin` `@JakobDegen`
2022-09-13 21:20:13 +00:00
Christian Poveda
c834637626
address review comments 2022-09-13 15:16:41 -05:00
Ralf Jung
b16d301dd9
test fast sleeping 2022-09-13 15:16:41 -05:00
Ralf Jung
613a436cfc
add extra sanity check against depending on system time with isolation enabled 2022-09-13 15:16:41 -05:00
Ralf Jung
bc307b40ba
organize clock arithmetic more like the stdlib 2022-09-13 15:16:41 -05:00
Ralf Jung
f5e2f73178
move clock stuff to separate file 2022-09-13 15:16:40 -05:00
Christian Poveda
ad69e0b36a
hide all enums inside kind types 2022-09-13 15:16:40 -05:00
Christian Poveda
6a37643265
make sleep work with isolation enabled 2022-09-13 15:16:40 -05:00
bors
7e66a9ff16 Auto merge of #2543 - saethlin:be-slow-on-linux, r=oli-obk
Run the GC more often on Linux, not MacOS

Linux has more testing and is also faster in CI, we should do the extra slow checks there.
2022-09-13 16:14:27 +00:00
bors
c7f7bc0ca2 Auto merge of #2541 - lengyijun:patch-1, r=RalfJung
fix typo
2022-09-13 15:43:32 +00:00
bors
aebfbf2a91 fix typo 2022-09-13 15:43:32 +00:00
Ben Kimock
93e41f625a Linux has more testing, we should do the extra checks there 2022-09-13 10:12:57 -04:00
bors
a00fa96336 Auto merge of #2479 - saethlin:tag-gc, r=oli-obk
Implement a garbage collector for tags

The general approach here is to scan TLS, all locals, and the main memory map for all provenance, accumulating a `HashSet` of all pointer tags which are stored anywhere (we also have a special case for panic payloads). Then we iterate over every borrow stack and remove tags which are not in said `HashSet`, or which could be terminating a SRW block.

Runtime of benchmarks decreases by between 17% and 81%.

GC off:
```
Benchmark 1: cargo +miri miri run --manifest-path /home/ben/miri/bench-cargo-miri/backtraces/Cargo.toml
  Time (mean ± σ):      7.080 s ±  0.249 s    [User: 6.870 s, System: 0.202 s]
  Range (min … max):    6.933 s …  7.521 s    5 runs

  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet PC without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.

Benchmark 1: cargo +miri miri run --manifest-path /home/ben/miri/bench-cargo-miri/mse/Cargo.toml
  Time (mean ± σ):      1.875 s ±  0.031 s    [User: 1.630 s, System: 0.245 s]
  Range (min … max):    1.825 s …  1.910 s    5 runs

Benchmark 1: cargo +miri miri run --manifest-path /home/ben/miri/bench-cargo-miri/serde1/Cargo.toml
  Time (mean ± σ):      2.785 s ±  0.075 s    [User: 2.536 s, System: 0.168 s]
  Range (min … max):    2.698 s …  2.851 s    5 runs

Benchmark 1: cargo +miri miri run --manifest-path /home/ben/miri/bench-cargo-miri/serde2/Cargo.toml
  Time (mean ± σ):      6.267 s ±  0.066 s    [User: 6.072 s, System: 0.190 s]
  Range (min … max):    6.152 s …  6.314 s    5 runs

Benchmark 1: cargo +miri miri run --manifest-path /home/ben/miri/bench-cargo-miri/slice-get-unchecked/Cargo.toml
  Time (mean ± σ):      4.733 s ±  0.080 s    [User: 4.177 s, System: 0.513 s]
  Range (min … max):    4.681 s …  4.874 s    5 runs

Benchmark 1: cargo +miri miri run --manifest-path /home/ben/miri/bench-cargo-miri/unicode/Cargo.toml
  Time (mean ± σ):      3.770 s ±  0.034 s    [User: 3.549 s, System: 0.211 s]
  Range (min … max):    3.724 s …  3.819 s    5 runs
```
GC on:
```
Benchmark 1: cargo +miri miri run --manifest-path /home/ben/miri/bench-cargo-miri/backtraces/Cargo.toml
  Time (mean ± σ):      5.886 s ±  0.054 s    [User: 5.696 s, System: 0.182 s]
  Range (min … max):    5.799 s …  5.937 s    5 runs

Benchmark 1: cargo +miri miri run --manifest-path /home/ben/miri/bench-cargo-miri/mse/Cargo.toml
  Time (mean ± σ):     936.4 ms ±   7.0 ms    [User: 815.4 ms, System: 119.6 ms]
  Range (min … max):   925.7 ms … 945.0 ms    5 runs

Benchmark 1: cargo +miri miri run --manifest-path /home/ben/miri/bench-cargo-miri/serde1/Cargo.toml
  Time (mean ± σ):      2.126 s ±  0.022 s    [User: 1.979 s, System: 0.146 s]
  Range (min … max):    2.089 s …  2.143 s    5 runs

Benchmark 1: cargo +miri miri run --manifest-path /home/ben/miri/bench-cargo-miri/serde2/Cargo.toml
  Time (mean ± σ):      4.242 s ±  0.066 s    [User: 4.051 s, System: 0.160 s]
  Range (min … max):    4.196 s …  4.357 s    5 runs

Benchmark 1: cargo +miri miri run --manifest-path /home/ben/miri/bench-cargo-miri/slice-get-unchecked/Cargo.toml
  Time (mean ± σ):     907.4 ms ±   2.4 ms    [User: 788.6 ms, System: 118.2 ms]
  Range (min … max):   903.5 ms … 909.4 ms    5 runs

Benchmark 1: cargo +miri miri run --manifest-path /home/ben/miri/bench-cargo-miri/unicode/Cargo.toml
  Time (mean ± σ):      1.821 s ±  0.011 s    [User: 1.687 s, System: 0.133 s]
  Range (min … max):    1.802 s …  1.831 s    5 runs
```

But much more importantly for me this drops the peak memory usage of the first 1 minute of running `regex`'s tests from 103  GB to 1.7 GB.

Thanks to `@oli-obk` for suggesting a while ago that this was possible and `@darksonn` for reminding me that we can just search through memory to find Provenance to locate pointers.

Fixes https://github.com/rust-lang/miri/issues/1367
2022-09-13 11:05:55 +00:00
bors
3886a63ea4 Auto merge of #2542 - lengyijun:patch-2, r=oli-obk
fix typo
2022-09-13 09:53:04 +00:00
lyj
f6cbba12ce
fix typo 2022-09-13 17:49:41 +08:00
Ben Kimock
f59605ce52 In CI set the GC interval to 1 for Linux only 2022-09-10 23:05:56 -04:00
Ben Kimock
d61d4c6af7 Implement -Zmiri-tag-gc a garbage collector for tags 2022-09-10 23:05:41 -04:00
bors
beed5eddb0 Auto merge of #2539 - oli-obk:rustup, r=oli-obk
Rustup

for https://github.com/rust-lang/rust/issues/101649
2022-09-10 13:56:56 +00:00
Oli Scherer
e91db9f03c Rustup 2022-09-10 13:56:05 +00:00
bors
ef3f649e49 Auto merge of #2535 - oli-obk:rustup, r=oli-obk
Rustup

fix breakage in https://github.com/rust-lang/rust/pull/101522
2022-09-07 13:27:46 +00:00
Oli Scherer
f9ff70cef9 Rustup 2022-09-07 13:26:35 +00:00
bors
b8a97c4b97 Auto merge of #2534 - saethlin:rustup, r=saethlin
rustup: bring in Miri backtrace-rs pruning fix

The pruning logic in `backtrace` has always been broken in Miri. But now there's a fix!
2022-09-03 22:16:50 +00:00
Ben Kimock
4f30af5273 rustup: bring in Miri backtrace-rs pruning fix 2022-09-03 17:40:02 -04:00
bors
ec43f1dd9b Auto merge of #2533 - saethlin:windows-rng, r=ChrisDenton
Support BCRYPT_RNG_ALG_HANDLE rust-lang/rust#101325

I haven't tested this on a Windows host, brace for CI...
2022-09-03 19:32:09 +00:00
Ben Kimock
ee1c1e6d78 Add support for BCRYPT_RNG_ALG_HANDLE 2022-09-03 12:28:04 -04:00
bors
90731796c5 Auto merge of #2532 - Enselic:fix-build-with-unix_sigpipe, r=RalfJung
Fix build with `#[unix_sigpipe = "..."]` support in rustc

Closes https://github.com/rust-lang/rust/issues/101352

CC `@RalfJung` `@oli-obk`
2022-09-03 11:18:54 +00:00
Martin Nordholts
c011126f1a Fix build with #[unix_sigpipe = "..."] support in rustc 2022-09-03 12:23:05 +02:00
bors
dba35d2be7 Auto merge of #2530 - oli-obk:rustup, r=RalfJung
Rustup

Breakage issue: https://github.com/rust-lang/rust/issues/101324
2022-09-02 14:10:46 +00:00
Ralf Jung
169569cccb
tweak variable name 2022-09-02 16:10:24 +02:00