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
Ralf Jung
d8c9c9dd4f
update README for some tracing being available on nightlies
2018-12-23 14:21:15 +01:00
Ralf Jung
adba97e4b2
document the cargo-miri feature
2018-12-19 11:16:19 +01:00
Ralf Jung
61c0df7930
remove outdated README comment
2018-12-19 11:05:15 +01:00
Ralf Jung
8ec371747a
do not auto-detect the targets in the sysroot, instead specify target manually through env var
2018-12-12 11:03:42 +01:00
Ralf Jung
4d767e1f41
MIRI_SYSROOT is no longer needed for development agains a locally built rustc
2018-12-10 10:10:03 +01:00
Ralf Jung
3478c0c1e6
update contact channels
2018-11-30 22:23:20 +01:00
Ralf Jung
5032560eaa
add link within document
2018-11-30 09:31:09 +01:00
Ralf Jung
86e6470a12
update README to first describe the usual user setup, and to always set up a proper libstd
2018-11-30 09:23:44 +01:00
Ralf Jung
b72398de74
fix README install instructions
2018-11-27 14:48:46 +01:00
Ralf Jung
fbd7d119ae
use new dir for CI and docs
2018-11-27 13:12:55 +01:00
Ralf Jung
9dd0048e66
install directly from git repo
2018-11-27 08:16:58 +01:00
Ralf Jung
cc4dd29f54
kill xargo dir and update docs
2018-11-27 08:16:58 +01:00
Steve Klabnik
733f675bcc
fix cargo invocation in the readme
2018-11-16 15:14:44 -05:00
Ralf Jung
827e5180f2
stacked borrows is broken without full MIR
2018-11-16 10:01:54 +01:00
Ralf Jung
bf3e376049
move slide and report links to history
2018-11-14 08:23:43 +01:00
Ralf Jung
8368fe89bc
miri history
2018-11-13 14:16:08 +01:00
Ralf Jung
c81e45f73a
add a description of what miri can do for you
2018-11-13 13:31:35 +01:00
Ralf Jung
f37fc5eb7a
cargo miri test currently does not work
2018-11-12 20:20:35 +01:00
Ralf Jung
45e14f8dc5
use custom test runner so that we can get proper test filtering
2018-11-09 11:50:34 +01:00
Ralf Jung
8f811fe12f
update README
2018-10-31 10:16:50 +01:00
Ralf Jung
8f9ca242fa
expand -Z flag docs
2018-10-24 15:32:51 +02:00
Ralf Jung
86aa8352c6
Work on miri installation and usage instructions
2018-10-24 15:29:48 +02:00
Andrew Poelstra
5347411a2d
README: remove "specific nightly" instructions and use +nightly throughout
...
Also replace `cargo miri test` with `cargo miri` in general examples.
2018-10-23 15:22:14 +00:00
Andrew Poelstra
abda1a8ebb
rename rust-toolchain
to rust-version
; add note to README about usage
2018-10-23 15:22:14 +00:00