Commit Graph

3132 Commits

Author SHA1 Message Date
Ben Kimock
d61d4c6af7 Implement -Zmiri-tag-gc a garbage collector for tags 2022-09-10 23:05:41 -04:00
Oli Scherer
e91db9f03c Rustup 2022-09-10 13:56:05 +00:00
Ben Kimock
ee1c1e6d78 Add support for BCRYPT_RNG_ALG_HANDLE 2022-09-03 12:28:04 -04:00
Martin Nordholts
c011126f1a Fix build with #[unix_sigpipe = "..."] support in rustc 2022-09-03 12:23:05 +02:00
Ralf Jung
2f348abafc Revert "disable extern-so ffi support for now due to licensing situation"
This reverts commit 5f3545e773.
With https://github.com/tov/libffi-rs/pull/58 landed, we no longer depend on abort_on_panic.
2022-09-02 14:39:25 +02:00
Ralf Jung
5f3545e773 disable extern-so ffi support for now due to licensing situation 2022-09-01 22:25:14 +02:00
Ben Kimock
3cfb9915fc Add a protector test that demonstrates the base tag diagnostic 2022-08-31 21:37:44 -04:00
Ralf Jung
d21b601b6e make Miri build again with rustc provenance changes 2022-08-31 18:19:09 +02:00
Ralf Jung
671a4b8b0f make backtrace header a bit more visible 2022-08-31 17:32:39 +02:00
Ralf Jung
4cb26afc0c fix progress report being deduplicated 2022-08-31 15:59:53 +02:00
Ben Kimock
da0d4829bf Use the better FnEntry spans in protector errors 2022-08-29 18:06:30 -04:00
bors
284b59c4dc Auto merge of #2517 - saethlin:zst-field-retagging, r=RalfJung
Skip field retagging on ZSTs, it can take forever

I just tried running the `alloc`'s tests with `miri-test-libstd` with field retagging enabled. The test suite eventually hangs on a few tests which pass around ZSTs that have a lot of fields.

I don't really know how to test this effectively. The test passes, but if you remove this fast-path it effectively just hangs the interpreter. And since it hangs _inside_ a step, there's no hope for doing some kind of timeout within the test.
2022-08-29 11:46:26 +00:00
Ben Kimock
70b960b879 Skip field retagging on ZSTs, it can take forever 2022-08-29 00:31:46 -04:00
bors
fec1c7aa32 Auto merge of #2513 - RalfJung:protected, r=saethlin
slightly improve protector-related error messages

I find the current retag messages confusing, since they sound like the item *was* protected, when it still actively *is* protected (and that is, in fact, the issue).

Example error message:
```
error: Undefined Behavior: not granting access to tag <3095> because incompatible item [Unique for <3099>] is protected by call 943
  --> tests/fail/stacked_borrows/invalidate_against_barrier1.rs:5:25
   |
5  |     let _val = unsafe { *x }; //~ ERROR: protect
   |                         ^^ not granting access to tag <3095> because incompatible item [Unique for <3099>] is protected by call 943
   |
   = help: this indicates a potential bug in the program: it performed an invalid operation, but the Stacked Borrows rules it violated are still experimental
   = help: see https://github.com/rust-lang/unsafe-code-guidelines/blob/master/wip/stacked-borrows.md for further information
help: <3095> was created by a SharedReadWrite retag at offsets [0x0..0x4]
  --> tests/fail/stacked_borrows/invalidate_against_barrier1.rs:10:16
   |
10 |     let xraw = &mut x as *mut _;
   |                ^^^^^^
help: <3095> cannot be used for memory access because that would remove protected tag <3099>, protected by this function call
  --> tests/fail/stacked_borrows/invalidate_against_barrier1.rs:1:1
   |
1  | / fn inner(x: *mut i32, _y: &mut i32) {
2  | |     // If `x` and `y` alias, retagging is fine with this... but we really
3  | |     // shouldn't be allowed to use `x` at all because `y` was assumed to be
4  | |     // unique for the duration of this call.
5  | |     let _val = unsafe { *x }; //~ ERROR: protect
6  | | }
   | |_^
help: <3099> was derived from <3098>, which in turn was created here
  --> tests/fail/stacked_borrows/invalidate_against_barrier1.rs:12:17
   |
12 |     inner(xraw, xref);
   |                 ^^^^
   = note: backtrace:
   = note: inside `inner` at tests/fail/stacked_borrows/invalidate_against_barrier1.rs:5:25
note: inside `main` at tests/fail/stacked_borrows/invalidate_against_barrier1.rs:12:5
  --> tests/fail/stacked_borrows/invalidate_against_barrier1.rs:12:5
   |
12 |     inner(xraw, xref);
   |     ^^^^^^^^^^^^^^^^^
```

r? `@saethlin`
2022-08-28 16:01:49 +00:00
Ralf Jung
abe890d2ce slightly improve protector-related error messages
also rename some tests that still used outdated "barrier" terminology
2022-08-28 09:27:10 -04:00
bors
88665133b7 Auto merge of #2512 - cbeuw:scfix, r=RalfJung
Strengthen C++20 SC accesses

`@SabrinaJewson` noted in #2301 that Miri could produce behaviours forbidden under C++20 even without SC fences. Due to the added coherence-ordered before relationship which is created from read from and read before, plus the fact that coherence-ordered before between SC operations must be consistent with the Global Total Order S, in C++20 if there's an SC load that reads from any store, then a later SC load cannot read before that store. This PR adds this restriction
2022-08-28 13:20:54 +00:00
Andy Wang
3e97d8e65f
Comment deviations from the paper 2022-08-28 11:05:06 +01:00
Ralf Jung
b4eff16e0c ensure we don't compare provenance 2022-08-27 15:56:00 -04:00
Andy Wang
6dea99ec71
Supress clippy error 2022-08-27 15:24:59 +01:00
Andy Wang
0f9e009987
Fix C++20 SC access unsoundness 2022-08-27 15:24:57 +01:00
Andy Wang
01dffe0575
Remove useless store buffer search logging 2022-08-27 15:24:25 +01:00
Andy Wang
f4ba8b1160
Improve SC comments 2022-08-27 15:24:24 +01:00
Ralf Jung
df19b856ce rustup 2022-08-27 08:57:06 -04:00
Ralf Jung
3a2252b7b3 adjust for earlier init checking in the core engine 2022-08-27 08:51:28 -04:00
Ralf Jung
235036fcb3 nicer errors 2022-08-26 17:43:04 -04:00
Ralf Jung
4e017b54ad fix host/target check for extern-so 2022-08-26 17:38:59 -04:00
Ralf Jung
10a1a59c4b fix data race error during env var cleanup 2022-08-26 09:32:30 -04:00
Ellen Arteca
88a7882615 C FFI support for functions with int args and returns 2022-08-26 00:53:23 +00:00
Ralf Jung
2107cbbe2f reorganize imports a bit 2022-08-22 14:48:47 -04:00
Hiroki6
5259fb9bb0 move thread.rs into concurrency 2022-08-22 19:13:39 +02:00
Ralf Jung
afacf62cf0 notes on TLS dtor order 2022-08-22 12:20:53 -04:00
bors
a109994f22 Auto merge of #2481 - RalfJung:shim-pattern, r=oli-obk
document general shim pattern

r? `@oli-obk`
2022-08-22 14:44:53 +00:00
Ralf Jung
daaa81fc5e document general shim pattern 2022-08-22 10:16:49 -04:00
bors
6e306f9483 Auto merge of #2441 - RalfJung:arithmetic, r=oli-obk
pass clippy::integer_arithmetic in our shims

`@oli-obk` [raised some concerns](https://github.com/rust-lang/miri/pull/2422#discussion_r928220546) about this one. I still think it is the right call, since I don't see a good way to enable overflow checks for our official release builds. I'm open to suggestions though!

Fixes https://github.com/rust-lang/miri/issues/1236
2022-08-22 14:11:46 +00:00
Ralf Jung
8497fd4906 pass clippy::integer_arithmetic in our shims 2022-08-22 10:11:16 -04:00
Hiroki6
8ee6849012 rustfmt 2022-08-21 23:44:43 +02:00
Hiroki6
b073fe2537 move vector_clock and sync into concurrency & make vector_clock private
move thread it back
2022-08-21 23:35:29 +02:00
Ben Kimock
15a4f0a9e0 some CurrentSpan cleanup 2022-08-18 16:36:53 -04:00
Ben Kimock
17fc52a06d Clean up diff churn a bit, adjust comments 2022-08-18 15:01:05 -04:00
Ben Kimock
14e72e7ffa Improve information sharing across SB diagnostics
Previous Stacked Borrows diagnostics were missing a lot of information
about the state of the interpreter, and it was difficult to add
additional state because it was threaded through all the intervening
function signatures.

This change factors a lot of the arguments which used to be passed
individually to many stacked borrows functions into a single
`DiagnosticCx`, which is built in `Stacks::for_each`, and since it
wraps a handle to `AllocHistory`, we can now handle more nuanced
things like heterogeneous borrow of `!Freeze` types.
2022-08-18 15:01:03 -04:00
bors
46da748502 Auto merge of #2231 - DrMeepster:winfred, r=RalfJung
Windows thread support: Part 1

This PR adds support for threads on Windows.
2022-08-18 15:26:07 +00:00
Ralf Jung
c466ac0b3e add some missing assert_target_os 2022-08-18 11:25:20 -04:00
Ralf Jung
5e10f14584 clippy... 2022-08-18 09:13:07 -04:00
Ralf Jung
4359f43e92 make abort-on-panic work on Android 2022-08-18 08:39:53 -04:00
Ralf Jung
3ec8dd8760 implement setting the thread name on freebsd 2022-08-18 08:34:16 -04:00
Ralf Jung
a05a8eb805 add very basic Android support 2022-08-18 08:34:16 -04:00
DrMeepster
d34242e8f1 fix various issues 2022-08-17 19:53:22 -07:00
DrMeepster
9f69c41c5f rewrite handle impl again 2022-08-17 19:53:22 -07:00
DrMeepster
08ffbb8d8a fix windows join/detach and add tests 2022-08-17 19:53:21 -07:00
DrMeepster
b6fc2fc82a basic theading 2022-08-17 19:53:21 -07:00