Commit Graph

318 Commits

Author SHA1 Message Date
Ralf Jung
7fb012fdb2 readme: mention data races, and mention cross-interpretation already in the intro 2020-12-05 12:14:52 +01:00
Ralf Jung
d697de7538 update README 2020-11-29 20:54:56 +01:00
Ralf Jung
7eaba6684c fix trophy case URL 2020-10-31 16:28:56 +01:00
Camelid
02af2a38ac
Fix link in README 2020-10-29 16:14:54 -07:00
bors
c3a84c1ca8 Auto merge of #1606 - RalfJung:trophy, r=oli-obk
update trophy case
2020-10-28 13:40:51 +00:00
bors
83f7657ed0 Auto merge of #1603 - RalfJung:track-raw, r=oli-obk
add an option to track raw pointer tags in Stacked Borrows

Also make error messages more informative by printing the affected memory location
2020-10-28 13:19:25 +00:00
Ralf Jung
2589b48251 update trophy case 2020-10-28 14:05:37 +01:00
Ralf Jung
70af7aed88 expand flag docs 2020-10-28 13:03:46 +01:00
Ralf Jung
00c4869d56 remove outdated CI badges 2020-10-28 12:57:41 +01:00
Ralf Jung
194451345d add an option to track raw pointer tags in Stacked Borrows 2020-10-28 12:23:35 +01:00
Camelid
8df239b020 Fix README 2020-10-23 11:53:34 -07:00
bors
158639c985 Auto merge of #1590 - RalfJung:trophy, r=RalfJung
another TiKV bug for the trophy case :)

Cc `@brson` thanks for the ping!
2020-10-22 07:46:10 +00:00
Ralf Jung
0835ac6ec3 another TiKV bug for the trophy case :) 2020-10-21 12:50:45 +02:00
Aaron Hill
05bb560de2
Enable backtrace feature in the generated Xargo.toml
This allows the normal std panic hook to print a backtrace if
`RUST_BACKTRACE=1` and `-Z miri-disable-isolation` are set
2020-10-20 18:27:55 -04:00
bors
8beccc4bef Auto merge of #1581 - RalfJung:readme, r=RalfJung
README: make our cross-interpretation feature stand out more

This is a great feature, let's hope more people notice it :)
2020-10-11 22:56:39 +00:00
bors
73d5c42076 Auto merge of #1580 - Aaron1011:feature/backtrace-fn-ptr, r=RalfJung
Add an `fn_ptr` field to `MiriFrame`

The `backtrace-rs` crate can use this to implement
`Frame::symbol_address`, which is used to skip frames
above the call to `Backtrace::capture` on the stack.

The function pointer will not be useable for comparison purposes if the
function is generic, as CTFE creates a new function pointer for each
cast of a (monomorphized) generic function. However, this already
affects code running under Miri, and isn't a problem for `backtrace-rs`
(which only casts a non-generic function).

I've added logic to allow `MiriFrame` to have either 4 or 5 fields - if
a 5th field is present, we write the function pointer to it.
2020-10-11 22:34:57 +00:00
Ralf Jung
3bdf2bccae
Improve wording
Co-authored-by: Aaron Hill <aa1ronham@gmail.com>
2020-10-12 00:15:01 +02:00
bors
c467345bb0 Auto merge of #1571 - lzutao:actions, r=RalfJung
Adding a working github actions template

Complete adding github actions whose dummy template added in #1563 .

But it will need https://github.com/rust-lang/rust-central-station/pull/939 merged first
to be able to gate bors on Actions CI checks.
2020-10-11 22:07:25 +00:00
Lzu Tao
6acde94931 Add a working github actions template 2020-10-11 18:32:12 +07:00
Ralf Jung
71e0e59b63 README: make our cross-interpretation feature stand out more 2020-10-11 10:49:59 +02:00
Aaron Hill
be51e6bd07
Add an fn_ptr field to MiriFrame
The `backtrace-rs` crate can use this to implement
`Frame::symbol_address`, which is used to skip frames
above the call to `Backtrace::capture` on the stack.

The function pointer will not be useable for comparison purposes if the
function is generic, as CTFE creates a new function pointer for each
cast of a (monomorphized) generic function. However, this already
affects code running under Miri, and isn't a problem for `backtrace-rs`
(which only casts a non-generic function).

I've added logic to allow `MiriFrame` to have either 4 or 5 fields - if
a 5th field is present, we write the function pointer to it.
2020-10-10 13:07:57 -04:00
Yonggang Luo
e6665109e0
Update README.md
Note however that
[leak checking is currently disabled on Windows targets](https://github.com/rust-lang/miri/issues/1302).

Windows issue are fixed
2020-10-09 13:16:03 +08:00
Ralf Jung
b1837d0bc9
fix typo 2020-09-28 13:44:46 -04:00
Aaron Hill
5571bcfc4f
Require #[repr(C)] on MiriFrame 2020-09-28 13:44:46 -04:00
Aaron Hill
11e2dbd51c
Update README 2020-09-28 13:44:45 -04:00
Aaron Hill
ef43c5a614
Use a 'flags' parameter instead of 'version' 2020-09-28 13:44:45 -04:00
Aaron Hill
22f1eb01ee
Add API for capturing backtrace
This PR adds two new Miri-defined extern functions:
`miri_get_backtrace` and `miri_resolve_frame`, which are documented in
the README. Together, they allow obtaining a backtrace for the currently
executing program.

I've added a test showing how these APIs are used. I've also prepared a
companion PR `backtrace-rs`, which will allow
`backtrace::Backtrace::new()` to work automatically under Miri.

Once these two PRs are merged, we will be able to print backtraces from
the normal Rust panic hook (since libstd is now using backtrace-rs).

A few notes:
* Resolving the backtrace frames is *very* slow - you can actually see
  each line being printed out one at a time. Some local testing showed
  that this is not (primrary) caused by resolving a `Span` - it seems
  to be just Miri being slow.
* For the first time, we now interact directly with a user-defined
  struct (instead of just executing the user-provided MIR that
  manipulates the struct). To allow for future changes, I've added
  a 'version' parameter (currently required to be 0). This should allow
  us to change the `MiriFrame` struct should the need ever arise.
* I used the approach suggested by @oli-obk - a returned backtrace
  pointer consists of a base function allocation, with the 'offset'
  used to encode the `Span.lo`. This allows losslessly reconstructing
  the location information in `miri_resolve_frame`.
* There are a few quirks on the `backtrace-rs` side:
  * `backtrace-rs` calls `getcwd()` by default to try to simplify
    the filename. This results in an isolation error by default,
    which could be annoying when printing a backtrace from libstd.
  * `backtrace-rs` tries to remove 'internal' frames (everything between
     the call to `Backtrace::new()` and the internal API call made by
     backtrace-rs) by comparing the returned frame pointer value to
     a Rust function pointer. This doesn't work due to the way we
     construct the frame pointers passed to the caller. We could
     attempt to support this kind of comparison, or just add a
    `#[cfg(miri)]` and ignore the frames ourselves.
2020-09-28 13:44:45 -04:00
Ralf Jung
5652052e23 list two more aliasing problems we found in BTreeMap and VecDeque 2020-09-19 11:39:13 +02:00
Ralf Jung
32cdb7131b support panic=abort 2020-09-18 13:10:18 +02:00
Ralf Jung
b244a2ddaa make sure subcrate tests have the right cwd 2020-09-17 17:33:47 +02:00
Ralf Jung
9a9988a4b0 update docs, and also use MIRIFLAGS for the test suite 2020-09-17 17:29:19 +02:00
Ralf Jung
4608341ca0 add encoding_rs OOB arithmetic 2020-08-27 08:37:11 +02:00
Ralf Jung
3b7f36ef8d emphasize that some flags are unsound to use 2020-08-22 14:31:46 +02:00
Ralf Jung
f691e573b2 tweak alignment check docs 2020-08-17 11:51:18 +02:00
Ralf Jung
5a579f281d document -Zmiri-symbolic-alignment-check 2020-08-16 17:12:32 +02:00
Ralf Jung
06f8bf6afa document Miri extern functions 2020-07-23 17:14:25 +02:00
Ralf Jung
6dbfb2d9de make cfg(miri) greppable 2020-07-15 10:09:28 +02:00
Ralf Jung
c379793cde add option to track call IDs 2020-07-02 10:33:54 +02:00
Youngsuk Kim
ea4a5587ca
Add a case to list of 'StackedBorrows violations'
A small fix was made to libstd in rust-lang/rust#70479 (back in March).
(Miri reported UB due to Stacked Borrows violation - [link to Miri error log](https://github.com/rust-lang/miri/pull/1225#discussion_r397830221))

Thank you for reviewing 👍
2020-06-08 17:30:43 -04:00
Ralf Jung
67ad304140 update unsupported example in README (now that threading is supported on some platforms) 2020-05-30 22:50:49 +02:00
Ralf Jung
e22baedb1f add test suite filter example to README and 'cargo miri --help' 2020-05-17 10:12:17 +02:00
Ralf Jung
938fe00f02 fix some comments, and run_compiler return type 2020-05-11 00:09:46 +02:00
Ralf Jung
12114c5137 fix dead link in README 2020-05-10 18:52:21 +02:00
Ralf Jung
e65d87b110
Typo 2020-05-09 14:08:58 +02:00
Ralf Jung
ba801a45db make Miri work in rustc bootstrap stage 0 2020-05-09 13:19:23 +02:00
Ralf Jung
132feb88db
adjust wording 2020-05-07 11:21:31 +02:00
Brian Anderson
356848c9b9 Add two more TiKV bugs to trophy case 2020-05-07 02:42:12 +00:00
bors
6ded8aadab Auto merge of #1386 - RalfJung:trophy, r=RalfJung
trophy case: consistent wording (X doing Y)
2020-05-02 09:41:31 +00:00
Ralf Jung
df4623e5d8 trophy case: consistent wording (X doing Y) 2020-05-02 11:08:20 +02:00
Ralf Jung
15c299e657
Adjust wording 2020-05-02 11:04:45 +02:00
Brian Anderson
5e25dfaef8 Add another tikv stacked borrowing error to trophy case 2020-05-01 21:34:16 +00:00
Ralf Jung
580c1194d9 README tweak 2020-04-30 19:39:56 +02:00
bors
351d46d3fb Auto merge of #1284 - vakaras:add-threads-cr2, r=RalfJung
Implement basic support for concurrency (Linux/macos only)

Changes  (most new code is in `src/threads.rs` and `src/shims/foreign_items/posix.rs`):

1. Move the stack from `Machine` to a newly created `Thread` struct.
2. Add a `ThreadSet` struct that manages the threads.
3. Change `canonical_alloc_id` to create a unique allocation id for each thread local and thread (the responsible struct is `ThreadLocalStorage`)
4. Change the code to execute the thread local destructors immediately when a thread terminates.
5. Add the most basic round-robin scheduler.

This pull request depends on [these changes to the compiler](https://github.com/rust-lang/rust/pull/70598).
2020-04-30 16:21:43 +00:00
Ralf Jung
1aabd6da75
Tweak error wording 2020-04-30 10:24:57 +02:00
Brian Anderson
488f3801e2 Add servo_arc to trophy case 2020-04-30 00:03:43 +00:00
Vytautas Astrauskas
c84b2890ad Update a comment in README about what concurrency checks we support. 2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
58a6a2729a Add a warning that Miri does not check for data-races. 2020-04-27 14:23:32 -07:00
Hero Bird
3f43305894
Update README.md 2020-04-25 19:42:48 +02:00
Hero Bird
72442acaff
Add miri trophy for LazyArray::swap (ink! PR)
Details to the found in https://github.com/rust-lang/miri/issues/1364.
Note that this was not a found in a `master` or production release of ink!, however without analysing the code via `miri` this could have potentially happened.
2020-04-25 14:58:20 +02:00
David Tolnay
28f4f84303
Remove unneeded setup step from CI instructions in readme 2020-04-23 09:12:05 -07:00
Brian Anderson
f84aa4a424
Update README.md
Co-Authored-By: Ralf Jung <post@ralfj.de>
2020-04-23 02:46:36 -06:00
Brian Anderson
5b60f0df2a Add ryu and tikv to trophy case 2020-04-23 02:37:58 +00:00
Ozaren
b77968e8bd
added deallocation tracking 2020-04-15 11:29:35 -04:00
bors
03715907f4 Auto merge of #1332 - RalfJung:disable-alignment-check, r=RalfJung
Add option to disable alignment check

Requires https://github.com/rust-lang/rust/pull/71101
Fixes https://github.com/rust-lang/miri/issues/1326
2020-04-14 07:50:41 +00:00
Ralf Jung
48aaf674f7 tweak flag section in README 2020-04-14 09:39:57 +02:00
Ralf Jung
0ad1114153 mention new option in README and diagnostics 2020-04-13 17:58:03 +02:00
Ralf Jung
a6b66c31d7 note Miri's leak check abilities and that they are disabled on Windows 2020-04-13 11:30:02 +02:00
Ralf Jung
ea37f580e4 add push_str issue to trophy case 2020-04-11 09:16:55 +02:00
Ralf Jung
4069302a8c add EbrCell to trophy case 2020-04-08 15:17:26 +02:00
Ralf Jung
73210be73b tweak README 2020-04-04 19:35:46 +02:00
William Brown
ef89525249 Apply feedback 2020-04-03 09:07:57 +10:00
William Brown
94d5eb0276 Update readme to make supported codo clearer 2020-04-02 09:50:21 +10:00
JOE1994
cf5822af46 exclude 'TERM' env_var to avoid terminfo trying to open the termcap file 2020-03-27 08:43:08 -04:00
Ralf Jung
e1b654f09a mention cross-running in docs 2020-03-22 08:55:53 +01:00
Ralf Jung
3a5f601710 add some more miri-detected issues 2020-03-20 15:57:11 +01:00
Ralf Jung
c3f6f47f7a we also do not check floats for being init'd 2020-03-19 23:19:17 +01:00
Ralf Jung
a32e25677f move repeated run of test suite (without and with MIR optimizations) out of compiletest 2020-03-18 11:19:01 +01:00
Ralf Jung
69260115ac readme: mention the leaks we found 2020-03-08 16:50:19 +01:00
bors
c72af45b1c Auto merge of #1209 - RalfJung:track-alloc-id, r=oli-obk
Add option to print when an AllocId gets created

r? @oli-obk
2020-03-06 11:13:57 +00:00
Ralf Jung
6670f43917 README: add another bug Miri found 2020-03-06 10:46:12 +01:00
Ralf Jung
ade4c4e733 make the new option actually do something 2020-03-06 09:11:41 +01:00
Ralf Jung
274ae0438f add an option to disable Stacked Borrows 2020-02-24 16:22:02 +01:00
Ralf Jung
86a4354746 fix README 2020-02-22 11:58:21 +01:00
Ralf Jung
e449dccd37 clarify caveats 2020-02-16 15:30:09 +01:00
Ralf Jung
fda6104ee9 update README 2020-02-16 15:30:09 +01:00
Yoshua Wuyts
0acc309561
Document miri can only be installed on nightly
This updates the installation instructions to point out that miri is only available on nightly, and encodes this assumption into the installation instructions.
2020-01-18 16:21:30 +01:00
bors
f94bc7124c Auto merge of #1080 - rust-lang:stacked_borrow_tracing, r=RalfJung
Add a scheme to find the place where an id was destroyed

cc https://github.com/rust-lang/miri/issues/974

I'm not too happy with it, but since stacked borrows don't have access to the current call stack, I can't just report a warning as per https://github.com/rust-lang/miri/issues/797

We could add some global mutex that we can throw strings at and `step` will clear out that mutex and report warnings before moving the `statement_id` or the `block_id`, not sure how well that would work. For now I think this is sufficient
2019-12-10 13:47:44 +00:00
Oliver Scherer
8d409a7b59
Update README.md
Co-Authored-By: Ralf Jung <post@ralfj.de>
2019-12-10 14:47:28 +01:00
Oliver Scherer
acb43f80fd Document the new flag 2019-12-08 12:20:51 +01:00
Markus Pettersson
ef37a4c158 Updated README to reflect deprecation of rustup install 2019-12-08 11:12:25 +01:00
bors
3cc6795418 Auto merge of #1106 - RalfJung:memleak-ignore, r=RalfJung
add flag to ignore memory leaks
2019-12-07 18:04:14 +00:00
Ralf Jung
e92d16d9cd add flag to ignore memory leaks 2019-12-07 13:44:48 +01:00
Ralf Jung
1a8755384e better way to ignore tests in Miri 2019-12-07 11:43:30 +01:00
Ralf Jung
e0619b717c wording 2019-12-06 09:31:40 +01:00
Ralf Jung
f02643001f README: Miri now supports panics and FS access 2019-12-06 09:31:40 +01:00
Ralf Jung
a4eb34b3e1 generalize readme 2019-11-19 20:40:06 +01:00
Ralf Jung
cb913698d2 make sure we don't install more than we have to 2019-10-16 10:45:48 +02:00
Ralf Jung
1fb934b6cf add CONTRIBUTING guide 2019-09-14 13:42:32 +02:00
Christian Poveda
814fe99516 Add cargo-miri test for no isolation 2019-08-29 10:13:02 -05:00
Christian Poveda
abcda6dc94 Small corrections
Co-Authored-By: Ralf Jung <post@ralfj.de>
2019-08-29 03:08:58 -05:00
Christian Poveda
1ae1d71938 Add -Zmiri-env-exclude flag 2019-08-28 17:57:35 -05:00
Ralf Jung
97f9fb1284 change flag name: enable-communication -> disable-isolation 2019-08-23 23:29:11 +02:00
Christian Poveda
f53b5b0fb4 Update -Zmiri-enable-communication docs 2019-08-20 12:22:49 -05:00
bors
1f504ea7be Auto merge of #894 - christianpoveda:env-vars-communication, r=RalfJung
Enable env communication

related issue: https://github.com/rust-lang/miri/issues/800. r? @RalfJung
2019-08-14 18:58:06 +00:00
bors
b09ae31da0 Auto merge of #871 - RalfJung:miri-rustc-cleanup, r=RalfJung
Cleanup after rustc bootstrap tests Miri with a separate libstd

Should only be merged after https://github.com/rust-lang/rust/pull/63162 got the green light.
2019-08-08 20:43:47 +00:00
Christian Poveda
0df7a728c6 Update readme 2019-08-06 15:47:57 -05:00
Ralf Jung
e8d956c4fa add getrandom bug 2019-08-04 15:09:13 +02:00
Ralf Jung
40d647a060 test-miri is no longer a thing 2019-07-31 15:29:56 +02:00
Ralf Jung
fcbdd2c864 move CI remark down to CI section 2019-07-30 17:04:57 +02:00
Ralf Jung
b1ba07b0ca call out more clearly what we do not test; update paragraph on intptrcast 2019-07-30 11:23:56 +02:00
Ralf Jung
e843077d1d link to UB definition 2019-07-25 19:38:55 +02:00
Ralf Jung
59fa7c2cf5 readme: move flags and env vars up above dev 2019-07-24 14:18:42 +02:00
Ralf Jung
068517ae66 make sure we always have an RNG 2019-07-23 21:38:53 +02:00
Ralf Jung
4cbd31220b update README about what we do not support 2019-07-14 09:34:08 +02:00
Ralf Jung
eb4128fb42 don't call Stacked Borrows hooks at all when validation is disabled 2019-07-03 10:47:28 +02:00
Ralf Jung
e8e42ab5ec add another bug we found to the list 2019-07-02 09:51:16 +02:00
Ralf Jung
cb6d4f0c9a test even more size-alignment combinations. found a bug in libstd! 2019-06-30 21:23:48 +02:00
Ralf Jung
7a6438ada6 add snippet for running Miri on CI 2019-06-25 10:05:34 +02:00
Ralf Jung
118274f300 README: mention to cargo update, mention rustup-toolchain-install-master 2019-06-13 08:43:35 +02:00
Ralf Jung
b0b082d4d8 do not handle MIRI_SYSROOT in the driver at all, rely fully on the --sysroot flag 2019-06-09 17:10:04 +02:00
Ralf Jung
cf96396fcc make miri script smarter: auto-determine MIRI_SYSROOT, handle MIRI_TEST_TARGET 2019-05-27 14:41:44 +02:00
Ralf Jung
6420293af4 adjust readme to miri build script 2019-05-27 12:59:52 +02:00
Ralf Jung
ff6f101074 add more bugs that Miri found 2019-05-24 10:09:23 +02:00
Ralf Jung
df36c2bb7d expand explanation of how we treat validity invariants 2019-05-20 09:32:01 +02:00
Ralf Jung
f9cf78d685 trophy case: add rand; separate definite bugs from stacked-borrows-is-not-yet-official bugs 2019-04-26 09:08:30 +02:00
Ralf Jung
0d53178d5b
Merge branch 'master' into dev 2019-04-21 10:57:49 +02:00
Ralf Jung
a20719cec6 add section on the no MIR error 2019-04-20 18:36:43 +02:00
Ralf Jung
677bd6f656 add LinkedList test and mention the bug Miri found there 2019-04-19 23:08:24 +02:00
Ralf Jung
bf6b7aa550 rewirte development part of README 2019-04-19 19:53:42 +02:00
Ralf Jung
d7bcaab737 document -Zmiri-seed 2019-04-17 08:20:02 +02:00
Ralf Jung
916221b0a4
Merge branch 'master' into patch-1 2019-04-06 10:26:27 +01:00
Ralf Jung
31bc4355aa adjust README 2019-04-04 10:21:32 +01:00
Timo
7d6c8ad24b
README: Fix missing link
Thanks for your patience 🤦‍♂️
2019-03-31 14:52:57 -04:00
Timo
d54f9dc75c README: Update to RalfJung's suggestion...
...verbatim. Thanks :)
2019-03-31 11:33:41 -04:00
Timo
67e123502c
README: Suggest using a previous nightly, revert other approach 2019-03-31 10:03:03 -04:00
Timo
d5cdba5ee6
Add alternative for how to install if rustup fails
As is the case now: https://rust-lang-nursery.github.io/rust-toolstate/
2019-03-30 17:53:15 -04:00
0xflotus
1100b4819c
fixed environment 2019-03-28 11:47:51 +01:00
Ralf Jung
63b4a7661d explain Miri limitations 2019-03-26 10:08:22 +01:00
Ralf Jung
90dac3d4bd update README to suggest installing Miri as a component 2019-03-25 22:50:22 +01:00
Ralf Jung
8c74325441 mention --exclude-should-panic 2019-03-10 17:53:30 +01:00
Ralf Jung
2ef399979b README 2019-03-08 10:51:35 +01:00
Alexander Regueiro
12d3ecbaff Various cosmetic improvements. 2019-02-26 18:37:46 +00:00
Taiki Endo
441442e071 Update some links 2019-02-23 19:56:29 +09:00
Ralf Jung
a4c852ddfe link to bug list from intro 2019-02-15 10:43:27 +01:00
Ralf Jung
a3eae6c8ab collect some bugs that we found 2019-02-15 10:41:25 +01:00
Ralf Jung
866aeaecfc explain arument passing in the docs 2019-02-09 20:00:40 +01:00
Ralf Jung
08180f07ba update docs 2019-02-07 14:44:30 +01:00
Ralf Jung
f3becd810e explain how to run cargo miri with a locally compiled rustc 2019-02-05 21:35:15 +01:00
Ralf Jung
7dbd23626e update development instructions in README 2019-02-05 15:03:11 +01:00
Ralf Jung
1cda220b4b fix install command 2018-12-28 18:16:55 +01:00