about summary refs log tree commit diff
path: root/src/tools/miri/tests/fail/async-shared-mutable.tree.stderr
blob: 449a29088a01d9ccd116b40c92a6f2681344ea8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
error: Undefined Behavior: write access through <TAG> at ALLOC[OFFSET] is forbidden
  --> tests/fail/async-shared-mutable.rs:LL:CC
   |
LL |             *x = 1;
   |             ^^^^^^ Undefined Behavior occurred here
   |
   = help: this indicates a potential bug in the program: it performed an invalid operation, but the Tree Borrows rules it violated are still experimental
   = help: see https://github.com/rust-lang/unsafe-code-guidelines/blob/master/wip/tree-borrows.md for further information
   = help: the accessed tag <TAG> has state Frozen which forbids this child write access
help: the accessed tag <TAG> was created here, in the initial state Reserved
  --> tests/fail/async-shared-mutable.rs:LL:CC
   |
LL | /         core::future::poll_fn(move |_| {
LL | |             *x = 1;
LL | |             Poll::<()>::Pending
LL | |         })
LL | |         .await
   | |______________^
help: the accessed tag <TAG> later transitioned to Active due to a child write access at offsets [OFFSET]
  --> tests/fail/async-shared-mutable.rs:LL:CC
   |
LL |             *x = 1;
   |             ^^^^^^
   = help: this transition corresponds to the first write to a 2-phase borrowed mutable reference
help: the accessed tag <TAG> later transitioned to Frozen due to a reborrow (acting as a foreign read access) at offsets [OFFSET]
  --> tests/fail/async-shared-mutable.rs:LL:CC
   |
LL |     let _: Pin<&_> = f.as_ref(); // Or: `f.as_mut().into_ref()`.
   |                      ^^^^^^^^^^
   = help: this transition corresponds to a loss of write permissions
   = note: BACKTRACE (of the first span):
   = note: inside closure at tests/fail/async-shared-mutable.rs:LL:CC
   = note: inside `<std::future::PollFn<{closure@tests/fail/async-shared-mutable.rs:LL:CC}> as std::future::Future>::poll` at RUSTLIB/core/src/future/poll_fn.rs:LL:CC
note: inside closure
  --> tests/fail/async-shared-mutable.rs:LL:CC
   |
LL |         .await
   |          ^^^^^
note: inside `main`
  --> tests/fail/async-shared-mutable.rs:LL:CC
   |
LL |     assert_eq!(f.as_mut().poll(&mut cx), Poll::Pending);
   |                ^^^^^^^^^^^^^^^^^^^^^^^^

note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace

error: aborting due to 1 previous error