Make racy imperfectly overlapping atomic access unsupported instead of UB
Co-authored-by: Ralf Jung <post@ralfj.de>
This commit is contained in:
parent
bf7a5c4154
commit
1b32d14255
@ -431,8 +431,8 @@ pub(super) trait EvalContextExt<'mir, 'tcx: 'mir>:
|
||||
&& !alloc_clocks
|
||||
.race_free_with_atomic(range, this.machine.data_race.as_ref().unwrap())
|
||||
{
|
||||
throw_ub_format!(
|
||||
"racy imperfectly overlapping atomic access is not possible in the C++20 memory model"
|
||||
throw_unsup_format!(
|
||||
"racy imperfectly overlapping atomic access is not possible in the C++20 memory model, and not supported by Miri's weak memory emulation"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -1,14 +1,13 @@
|
||||
warning: thread support is experimental: the scheduler is not preemptive, and can get stuck in spin loops.
|
||||
(see https://github.com/rust-lang/miri/issues/1388)
|
||||
|
||||
error: Undefined Behavior: racy imperfectly overlapping atomic access is not possible in the C++20 memory model
|
||||
error: unsupported operation: racy imperfectly overlapping atomic access is not possible in the C++20 memory model, and not supported by Miri's weak memory emulation
|
||||
--> $DIR/racing_mixed_size.rs:LL:CC
|
||||
|
|
||||
LL | std::intrinsics::atomic_load_relaxed(hi);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ racy imperfectly overlapping atomic access is not possible in the C++20 memory model
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ racy imperfectly overlapping atomic access is not possible in the C++20 memory model, and not supported by Miri's weak memory emulation
|
||||
|
|
||||
= 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
|
||||
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support
|
||||
|
||||
= note: inside closure at $DIR/racing_mixed_size.rs:LL:CC
|
||||
|
||||
|
@ -1,14 +1,13 @@
|
||||
warning: thread support is experimental: the scheduler is not preemptive, and can get stuck in spin loops.
|
||||
(see https://github.com/rust-lang/miri/issues/1388)
|
||||
|
||||
error: Undefined Behavior: racy imperfectly overlapping atomic access is not possible in the C++20 memory model
|
||||
error: unsupported operation: racy imperfectly overlapping atomic access is not possible in the C++20 memory model, and not supported by Miri's weak memory emulation
|
||||
--> $DIR/racing_mixed_size_read.rs:LL:CC
|
||||
|
|
||||
LL | std::intrinsics::atomic_load_relaxed(hi);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ racy imperfectly overlapping atomic access is not possible in the C++20 memory model
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ racy imperfectly overlapping atomic access is not possible in the C++20 memory model, and not supported by Miri's weak memory emulation
|
||||
|
|
||||
= 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
|
||||
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support
|
||||
|
||||
= note: inside closure at $DIR/racing_mixed_size_read.rs:LL:CC
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user