Skip to content

Commit acbcc7a

Browse files
committed
disable address reuse in data race tests
1 parent c962d88 commit acbcc7a

36 files changed

+80
-4
lines changed

tests/fail/both_borrows/retag_data_race_write.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
//! Make sure that a retag acts like a write for the data race model.
22
//@revisions: stack tree
33
//@compile-flags: -Zmiri-preemption-rate=0
4+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
5+
//@compile-flags: -Zmiri-address-reuse-rate=0
46
//@[tree]compile-flags: -Zmiri-tree-borrows
57
#[derive(Copy, Clone)]
68
struct SendPtr(*mut u8);

tests/fail/data_race/alloc_read_race.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
//@compile-flags: -Zmiri-disable-weak-memory-emulation -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
2+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
3+
//@compile-flags: -Zmiri-address-reuse-rate=0
24
#![feature(new_uninit)]
35

46
use std::mem::MaybeUninit;

tests/fail/data_race/alloc_write_race.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
//@compile-flags: -Zmiri-disable-weak-memory-emulation -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
2+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
3+
//@compile-flags: -Zmiri-address-reuse-rate=0
24
#![feature(new_uninit)]
35

46
use std::ptr::null_mut;

tests/fail/data_race/atomic_read_na_write_race1.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// We want to control preemption here. Stacked borrows interferes by having its own accesses.
22
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
3+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
4+
//@compile-flags: -Zmiri-address-reuse-rate=0
35

46
use std::sync::atomic::{AtomicUsize, Ordering};
57
use std::thread::spawn;

tests/fail/data_race/atomic_read_na_write_race2.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// We want to control preemption here. Stacked borrows interferes by having its own accesses.
22
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
3+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
4+
//@compile-flags: -Zmiri-address-reuse-rate=0
35

46
use std::sync::atomic::AtomicUsize;
57
use std::sync::atomic::Ordering;

tests/fail/data_race/atomic_write_na_read_race1.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// We want to control preemption here. Stacked borrows interferes by having its own accesses.
22
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
3+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
4+
//@compile-flags: -Zmiri-address-reuse-rate=0
35

46
use std::sync::atomic::AtomicUsize;
57
use std::sync::atomic::Ordering;

tests/fail/data_race/atomic_write_na_read_race2.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// We want to control preemption here. Stacked borrows interferes by having its own accesses.
22
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
3+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
4+
//@compile-flags: -Zmiri-address-reuse-rate=0
35

46
use std::sync::atomic::{AtomicUsize, Ordering};
57
use std::thread::spawn;

tests/fail/data_race/atomic_write_na_write_race1.rs

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// We want to control preemption here. Stacked borrows interferes by having its own accesses.
22
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
3+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
4+
//@compile-flags: -Zmiri-address-reuse-rate=0
35

46
use std::sync::atomic::{AtomicUsize, Ordering};
57
use std::thread::spawn;
@@ -18,6 +20,8 @@ pub fn main() {
1820
let j1 = spawn(move || {
1921
let c = c; // avoid field capturing
2022
*(c.0 as *mut usize) = 32;
23+
// Make this thread take a bit longer.
24+
for _ in 0..100 {}
2125
});
2226

2327
let j2 = spawn(move || {

tests/fail/data_race/atomic_write_na_write_race2.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// We want to control preemption here. Stacked borrows interferes by having its own accesses.
22
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
3+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
4+
//@compile-flags: -Zmiri-address-reuse-rate=0
35

46
use std::sync::atomic::AtomicUsize;
57
use std::sync::atomic::Ordering;

tests/fail/data_race/dangling_thread_async_race.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// We want to control preemption here. Stacked borrows interferes by having its own accesses.
22
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
3+
// Avoid accidental synchronization via address reuse.
4+
//@compile-flags: -Zmiri-address-reuse-rate=0
35

46
use std::mem;
57
use std::thread::{sleep, spawn};

tests/fail/data_race/dangling_thread_race.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// We want to control preemption here. Stacked borrows interferes by having its own accesses.
22
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
3+
// Avoid accidental synchronization via address reuse.
4+
//@compile-flags: -Zmiri-address-reuse-rate=0
35

46
use std::mem;
57
use std::thread::{sleep, spawn};

tests/fail/data_race/dealloc_read_race1.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// We want to control preemption here. Stacked borrows interferes by having its own accesses.
22
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
3+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
4+
//@compile-flags: -Zmiri-address-reuse-rate=0
35

46
use std::thread::spawn;
57

tests/fail/data_race/dealloc_read_race2.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// We want to control preemption here. Stacked borrows interferes by having its own accesses.
22
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
3+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
4+
//@compile-flags: -Zmiri-address-reuse-rate=0
35

46
use std::thread::spawn;
57

tests/fail/data_race/dealloc_read_race_stack.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
//@compile-flags: -Zmiri-disable-weak-memory-emulation -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
2+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
3+
//@compile-flags: -Zmiri-address-reuse-rate=0
24

35
use std::ptr::null_mut;
46
use std::sync::atomic::{AtomicPtr, Ordering};

tests/fail/data_race/dealloc_write_race1.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// We want to control preemption here. Stacked borrows interferes by having its own accesses.
22
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
3+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
4+
//@compile-flags: -Zmiri-address-reuse-rate=0
35

46
use std::thread::spawn;
57

tests/fail/data_race/dealloc_write_race2.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// We want to control preemption here. Stacked borrows interferes by having its own accesses.
22
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
3+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
4+
//@compile-flags: -Zmiri-address-reuse-rate=0
35

46
use std::thread::spawn;
57

tests/fail/data_race/dealloc_write_race_stack.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
//@compile-flags: -Zmiri-disable-weak-memory-emulation -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
2+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
3+
//@compile-flags: -Zmiri-address-reuse-rate=0
24

35
use std::ptr::null_mut;
46
use std::sync::atomic::{AtomicPtr, Ordering};

tests/fail/data_race/enable_after_join_to_main.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// We want to control preemption here. Stacked borrows interferes by having its own accesses.
22
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
3+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
4+
//@compile-flags: -Zmiri-address-reuse-rate=0
35

46
use std::thread::spawn;
57

tests/fail/data_race/fence_after_load.rs

+3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
// We want to control preemption here. Stacked borrows interferes by having its own accesses.
22
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
3+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
4+
//@compile-flags: -Zmiri-address-reuse-rate=0
5+
36
use std::sync::atomic::{fence, AtomicUsize, Ordering};
47
use std::sync::Arc;
58
use std::thread;

tests/fail/data_race/mixed_size_read.rs

+3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
//@compile-flags: -Zmiri-preemption-rate=0.0 -Zmiri-disable-weak-memory-emulation
2+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
3+
//@compile-flags: -Zmiri-address-reuse-rate=0
4+
25
use std::sync::atomic::{AtomicU16, AtomicU8, Ordering};
36
use std::thread;
47

tests/fail/data_race/mixed_size_write.rs

+3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
//@compile-flags: -Zmiri-preemption-rate=0.0 -Zmiri-disable-weak-memory-emulation
2+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
3+
//@compile-flags: -Zmiri-address-reuse-rate=0
4+
25
use std::sync::atomic::{AtomicU16, AtomicU8, Ordering};
36
use std::thread;
47

tests/fail/data_race/read_read_race1.rs

+3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
//@compile-flags: -Zmiri-preemption-rate=0.0
2+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
3+
//@compile-flags: -Zmiri-address-reuse-rate=0
4+
25
use std::sync::atomic::{AtomicU16, Ordering};
36
use std::thread;
47

tests/fail/data_race/read_read_race2.rs

+3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
//@compile-flags: -Zmiri-preemption-rate=0.0
2+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
3+
//@compile-flags: -Zmiri-address-reuse-rate=0
4+
25
use std::sync::atomic::{AtomicU16, Ordering};
36
use std::thread;
47

tests/fail/data_race/read_write_race.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// We want to control preemption here. Stacked borrows interferes by having its own accesses.
22
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
3+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
4+
//@compile-flags: -Zmiri-address-reuse-rate=0
35

46
use std::thread::spawn;
57

tests/fail/data_race/read_write_race_stack.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
//@compile-flags: -Zmiri-disable-weak-memory-emulation -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
2+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
3+
//@compile-flags: -Zmiri-address-reuse-rate=0
24

35
use std::ptr::null_mut;
46
use std::sync::atomic::{AtomicPtr, Ordering};

tests/fail/data_race/relax_acquire_race.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
//@compile-flags: -Zmiri-disable-weak-memory-emulation -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
2+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
3+
//@compile-flags: -Zmiri-address-reuse-rate=0
24

35
use std::sync::atomic::{AtomicUsize, Ordering};
46
use std::thread::spawn;

tests/fail/data_race/release_seq_race.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
//@compile-flags: -Zmiri-disable-weak-memory-emulation -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
2+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
3+
//@compile-flags: -Zmiri-address-reuse-rate=0
24

35
use std::sync::atomic::{AtomicUsize, Ordering};
46
use std::thread::{sleep, spawn};

tests/fail/data_race/release_seq_race_same_thread.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
//@compile-flags: -Zmiri-disable-weak-memory-emulation -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
2+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
3+
//@compile-flags: -Zmiri-address-reuse-rate=0
24

35
use std::sync::atomic::{AtomicUsize, Ordering};
46
use std::thread::spawn;

tests/fail/data_race/rmw_race.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
//@compile-flags: -Zmiri-disable-weak-memory-emulation -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
2+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
3+
//@compile-flags: -Zmiri-address-reuse-rate=0
24

35
use std::sync::atomic::{AtomicUsize, Ordering};
46
use std::thread::spawn;

tests/fail/data_race/stack_pop_race.rs

+3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
2+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
3+
//@compile-flags: -Zmiri-address-reuse-rate=0
4+
25
use std::thread;
36

47
#[derive(Copy, Clone)]

tests/fail/data_race/write_write_race.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// We want to control preemption here.
22
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
3+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
4+
//@compile-flags: -Zmiri-address-reuse-rate=0
35

46
use std::thread::spawn;
57

tests/fail/data_race/write_write_race_stack.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
//@compile-flags: -Zmiri-disable-weak-memory-emulation -Zmiri-preemption-rate=0 -Zmiri-disable-stacked-borrows
2+
// Avoid accidental synchronization via address reuse inside `thread::spawn`.
3+
//@compile-flags: -Zmiri-address-reuse-rate=0
24

35
use std::ptr::null_mut;
46
use std::sync::atomic::{AtomicPtr, Ordering};

tests/fail/stacked_borrows/retag_data_race_protected_read.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
//@compile-flags: -Zmiri-preemption-rate=0
1+
// Avoid accidental synchronization via address reuse.
2+
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-address-reuse-rate=0
23
use std::thread;
34

45
#[derive(Copy, Clone)]

tests/fail/stacked_borrows/retag_data_race_read.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
//! Make sure that a retag acts like a read for the data race model.
2-
//@compile-flags: -Zmiri-preemption-rate=0
2+
// Avoid accidental synchronization via address reuse.
3+
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-address-reuse-rate=0
34
#[derive(Copy, Clone)]
45
struct SendPtr(*mut u8);
56

tests/fail/weak_memory/racing_mixed_size.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// We want to control preemption here.
2-
//@compile-flags: -Zmiri-preemption-rate=0
2+
// Avoid accidental synchronization via address reuse.
3+
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-address-reuse-rate=0
34

45
#![feature(core_intrinsics)]
56

tests/fail/weak_memory/racing_mixed_size_read.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// We want to control preemption here.
2-
//@compile-flags: -Zmiri-preemption-rate=0
2+
// Avoid accidental synchronization via address reuse.
3+
//@compile-flags: -Zmiri-preemption-rate=0 -Zmiri-address-reuse-rate=0
34

45
use std::sync::atomic::Ordering::*;
56
use std::sync::atomic::{AtomicU16, AtomicU32};

0 commit comments

Comments
 (0)