bors [Sun, 6 Dec 2020 19:12:16 +0000 (19:12 +0000)]
Auto merge of #1641 - JCTyblaidd:update_release_sequences, r=RalfJung
Weaken release sequences to match the C++20 memory model
See [Weaken Release Sequences](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0982r1.html), since the exception for relaxed writes on the same thread as a release write not blocking release sequences was removed in the C++20 memory model compared to the C11 memory model the paper was based on. The implementation can be updated and simplified to match this. [Rust is currently specified to use the C++20 memory model](https://doc.rust-lang.org/std/sync/atomic/index.html).
bors [Mon, 30 Nov 2020 11:40:43 +0000 (11:40 +0000)]
Auto merge of #1636 - RalfJung:rustup, r=oli-obk
remove miri-rustc-tests
`@oli-obk` I am not sure if anyone used this program in the last few years. There are no instructions for how to use it. So I think keeping it working is just a waste of time. It now fails to build:
```
error[E0046]: not all trait items implemented, missing: `visit_foreign_item`
--> src/bin/miri-rustc-tests.rs:36:17
|
36 | impl<'tcx, 'hir> itemlikevisit::ItemLikeVisitor<'hir> for Visitor<'tcx> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `visit_foreign_item` in implementation
```
So I propose instead of me trying to figure out how to fix this, we just drop this ancient code.
bors [Sun, 29 Nov 2020 18:44:28 +0000 (18:44 +0000)]
Auto merge of #1617 - JCTyblaidd:data_race_detector, r=RalfJung
Add simple data-race detector
Partially fixes data-race detection, see #1372, based on Dynamic Race Detection for C++11
- This does not explore weak memory behaviour, only exploring one sequentially consistent ordering.
- Data-race detection is only enabled after the first thread is created, so should have minimal overhead for non-concurrent execution.
- ~~Does not attempt to re-use thread id's so creating and joining threads lots of time in an execution will result in the vector clocks growing in size and slowing down program execution~~ It does now
JCTyBlaidd [Sat, 28 Nov 2020 17:17:07 +0000 (17:17 +0000)]
Fix typos - looked into the papers handling of timestamps, after looking into it again, it seems the paper only increments the timestamp after release operations, so changed to approximation of that implementation.
JCTyBlaidd [Thu, 5 Nov 2020 14:18:28 +0000 (14:18 +0000)]
Move to use of thread termination hook for vector re-use,
convert validate atomic op to use shared reference and get_raw
instead of get_raw_mut so it can be used for validate_atomic_load as well
JCTyBlaidd [Thu, 5 Nov 2020 03:54:39 +0000 (03:54 +0000)]
Split out vector_clock to separate file, general tidy up of some of the
code & add support for vector index re-use for multiple threads
after termination.
bors [Wed, 28 Oct 2020 12:54:01 +0000 (12:54 +0000)]
Auto merge of #1604 - RalfJung:std-debug-assert, r=oli-obk
disable debug assertions in the standard library
Debug assertions in the standard library can be somewhat expensive to check, in particular the ones covering each and every `ptr::write/copy/copy_nonoverlapping`. Miri will find most of those problems anyway since they cause UB. There are other debug assertions, such as ensuring internal invariants are maintained, but given how slow Miri already is, I think it is better to skip those checks in Miri and instead figure out a better way for people to use a standard library with debug assertions enabled.
bors [Tue, 27 Oct 2020 16:27:05 +0000 (16:27 +0000)]
Auto merge of #1602 - RalfJung:box, r=RalfJung
test Box::into_raw aliasing
Directly test aliasing problems caused by `Box::into_raw` issues (like we have them again right now due to https://github.com/rust-lang/rust/pull/77187, but the pinned rustc is older than that so this should still be able to land).
bors [Sat, 24 Oct 2020 10:42:24 +0000 (10:42 +0000)]
Auto merge of #1594 - camelid:dont-force-install-xargo, r=RalfJung
Don't force-install xargo
Previously miri used `cargo install xargo -f` which shouldn't be
necessary anymore since `cargo install` will now upgrade without `-f`.
The only reason I can see to use `-f` is from the cargo docs:
> This is also useful if something has changed on the system that you
> want to rebuild with, such as a newer version of `rustc`.
See the [discussion on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/why.20does.20miri.20require.20xargo/near/214351239).