Commit graph

290 commits

Author SHA1 Message Date
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
f5e2f73178
move clock stuff to separate file 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
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
Ralf Jung
d21b601b6e make Miri build again with rustc provenance changes 2022-08-31 18:19:09 +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
Ralf Jung
b4eff16e0c ensure we don't compare provenance 2022-08-27 15:56:00 -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
Ellen Arteca
88a7882615 C FFI support for functions with int args and returns 2022-08-26 00:53:23 +00: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
a05a8eb805 add very basic Android support 2022-08-18 08:34:16 -04:00
DrMeepster
08ffbb8d8a fix windows join/detach and add tests 2022-08-17 19:53:21 -07:00
Ben Kimock
7c18b38e04 Rename memory hooks 2022-08-16 08:09:32 -04:00
Ralf Jung
b36b5e38b7 fix rustc lints in Miri 2022-08-07 10:17:02 -04:00
Ralf Jung
cbff63a694 rustup 2022-07-24 17:51:39 -04:00
Ralf Jung
b08e51d79a refactor away some 'else { None }' 2022-07-23 12:30:48 -04:00
Ralf Jung
649b216482 add a flag to print a diagnostic when an outdated value is returned from an atomic load 2022-07-23 09:39:02 -04:00
Ralf Jung
a6b35412d8 adjust for symbolic vtables 2022-07-22 07:18:34 -04:00
Ralf Jung
e649a9acfb check for extern static size mismatches 2022-07-20 18:32:03 -04:00
Ralf Jung
59f9a918ed handle get_alloc_extra the same throughout Stacked Borrows 2022-07-20 17:57:31 -04:00
Ralf Jung
ff4666f39c rustup 2022-07-20 16:02:06 -04:00
bors
8757d866ab Auto merge of #2350 - RalfJung:remove-deprecated, r=oli-obk
remove deprecated options

These have been deprecated a month ago and nobody said they need them. Is that enough time? We can also let this PR sit a little.

Cc https://github.com/rust-lang/miri/issues/2187 https://github.com/rust-lang/miri/issues/2188
(keeping them open to track removing their supporting infrastructure in the core interpreter)
2022-07-19 12:29:29 +00:00
Ben Kimock
4eff60ad6e Rearrange and document the new implementation
stacked_borrow now has an item module, and its own FrameExtra. These
serve to protect the implementation of Item (which is a bunch of
bit-packing tricks) from the primary logic of Stacked Borrows, and the
FrameExtra we have separates Stacked Borrows more cleanly from the
interpreter itself.

The new strategy for checking protectors also makes some subtle
performance tradeoffs, so they are now documented in Stack::item_popped
because that function primarily benefits from them, and it also touches
every aspect of them.

Also separating the actual CallId that is protecting a Tag from the Tag
makes it inconvienent to reproduce exactly the same protector errors, so
this also takes the opportunity to use some slightly cleaner English in
those errors. We need to make some change, might as well make it good.
2022-07-12 21:03:54 -04:00
Ben Kimock
afa1dddcf9 Store protectors outside Item, pack Tag and Perm
Previously, Item was a struct of a NonZeroU64, an Option which was
usually unset or irrelevant, and a 4-variant enum. So collectively, the
size of an Item was 24 bytes, but only 8 bytes were used for the most
part.

So this takes advantage of the fact that it is probably impossible to
exhaust the total space of SbTags, and steals 3 bits from it to pack the
whole struct into a single u64. This bit-packing means that we reduce
peak memory usage when Miri goes memory-bound by ~3x. We also get CPU
performance improvements of varying size, because not only are we simply
accessing less memory, we can now compare a Vec<Item> using a memcmp
because it does not have any padding.
2022-07-12 21:01:33 -04:00
Ralf Jung
49a6c230cb remove deprecated options 2022-07-11 21:28:54 -04:00
Ralf Jung
5fed3ebc26 adjust code for copy_op changes 2022-07-06 21:40:31 -04:00
Ralf Jung
501a6b4687 rustup 2022-07-06 14:06:15 -04:00
Ralf Jung
907a003f14 tweak format strings 2022-07-06 09:47:48 -04:00
Ralf Jung
f3f4bafa1b rustup 2022-07-05 18:16:20 -04:00
Ralf Jung
d9c441c5ab put call to stacked borrows end_call in a more sensible place 2022-07-02 18:38:07 -04:00
InfRandomness
5ec25359ff
Add environ extern implementation to freebsd
Signed-off-by: InfRandomness <infrandomness@gmail.com>
2022-07-02 12:42:14 +02:00
Ralf Jung
dfdedae840 avoid copying thread manager state in data race detector 2022-07-01 17:07:29 -04:00
Ralf Jung
7f3fbbdee7 allocation tracking: also print size, alignment, kind of the allocation 2022-06-30 22:24:23 -04:00
Ralf Jung
c4e86e103e add option for recursive field retagging 2022-06-29 18:22:30 -04:00
Ralf Jung
5c16713056 remove support for untagged pointers
good riddance!
2022-06-26 22:19:56 -04:00
Ralf Jung
13d425daeb make permissive provenance and raw-ptr tagging the default 2022-06-26 21:14:42 -04:00
Ralf Jung
34be937d5f add -Zmiri-report-progress to regularly print a stacktrace of what we are executing 2022-06-26 14:31:57 -04:00
Ralf Jung
58c79c5b6f tweaks and feedback 2022-06-24 22:02:17 -04:00
Ralf Jung
4fbb284a99 implement 'delimited' expose tracking so we still detect some UB 2022-06-24 20:05:56 -04:00
Ralf Jung
c0f7118342 reorganize exposure code a bit 2022-06-24 16:45:22 -04:00
carbotaniuman
57ce47b728 Handle wildcard pointers in SB 2022-06-24 16:10:23 -04:00
Ralf Jung
f992099820 fix ICE when const refers to extern static 2022-06-21 21:03:40 -07:00
Ralf Jung
8d1b2ca3ec check that tag_alloc_base_pointer is not called on the wrong things 2022-06-21 21:03:40 -07:00
Ralf Jung
657386cc91 rustup 2022-06-08 12:10:54 -04:00
Ralf Jung
b64c9a0a83 make scheduler preemptive, with configurable preemption rate 2022-06-06 20:16:02 -04:00