| error: Undefined Behavior: Data race detected between (1) creating a new allocation on thread `unnamed-ID` and (2) non-atomic write on thread `unnamed-ID` at ALLOC | |
| --> tests/fail/data_race/alloc_write_race.rs:LL:CC | |
| | | |
| LL | ... *pointer.load(Ordering::Relaxed) = 2; | |
| | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (2) just happened here | |
| | | |
| help: and (1) occurred earlier here | |
| --> tests/fail/data_race/alloc_write_race.rs:LL:CC | |
| | | |
| LL | .store(Box::into_raw(Box::<usize>::new_uninit()) as *mut usize, Ordering::Relaxed); | |
| | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| = 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: this is on thread `unnamed-ID` | |
| note: the current function got called indirectly due to this code | |
| --> tests/fail/data_race/alloc_write_race.rs:LL:CC | |
| | | |
| LL | ... let j2 = spawn(move || { | |
| | ________________^ | |
| LL | | ... let ptr = ptr; // avoid field capturing | |
| LL | | ... let pointer = &*ptr.0; | |
| LL | | ... *pointer.load(Ordering::Relaxed) = 2; | |
| LL | | ... }); | |
| | |________^ | |
| note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace | |
| error: aborting due to 1 previous error | |