mirror of https://github.com/KaiserY/trpl-zh-cn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
2.0 KiB
34 lines
2.0 KiB
$ cargo +nightly miri run
|
|
Compiling unsafe-example v0.1.0 (file:///projects/unsafe-example)
|
|
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.01s
|
|
Running `file:///home/.rustup/toolchains/nightly/bin/cargo-miri runner target/miri/debug/unsafe-example`
|
|
warning: integer-to-pointer cast
|
|
--> src/main.rs:5:13
|
|
|
|
|
5 | let r = address as *mut i32;
|
|
| ^^^^^^^^^^^^^^^^^^^ integer-to-pointer cast
|
|
|
|
|
= help: this program is using integer-to-pointer casts or (equivalently) `ptr::with_exposed_provenance`, which means that Miri might miss pointer bugs in this program
|
|
= help: see https://doc.rust-lang.org/nightly/std/ptr/fn.with_exposed_provenance.html for more details on that operation
|
|
= help: to ensure that Miri does not miss bugs in your program, use Strict Provenance APIs (https://doc.rust-lang.org/nightly/std/ptr/index.html#strict-provenance, https://crates.io/crates/sptr) instead
|
|
= help: you can then set `MIRIFLAGS=-Zmiri-strict-provenance` to ensure you are not relying on `with_exposed_provenance` semantics
|
|
= help: alternatively, `MIRIFLAGS=-Zmiri-permissive-provenance` disables this warning
|
|
= note: BACKTRACE:
|
|
= note: inside `main` at src/main.rs:5:13: 5:32
|
|
|
|
error: Undefined Behavior: pointer not dereferenceable: pointer must be dereferenceable for 40000 bytes, but got 0x1234[noalloc] which is a dangling pointer (it has no provenance)
|
|
--> src/main.rs:7:35
|
|
|
|
|
7 | let values: &[i32] = unsafe { slice::from_raw_parts_mut(r, 10000) };
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Undefined Behavior occurred here
|
|
|
|
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
|
= note: BACKTRACE:
|
|
= note: inside `main` at src/main.rs:7:35: 7:70
|
|
|
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
|
|
|
error: aborting due to 1 previous error; 1 warning emitted
|
|
|