about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-05-08 11:19:01 +0000
committerbors <bors@rust-lang.org>2023-05-08 11:19:01 +0000
commita477b81c7ebe2cf986ad205e213570b5acfbced4 (patch)
tree23e95b7a31468a269efcc29419ea84b4fdf40489
parent3d5a5167101f0f828a2c7a084a3a7631ad1a44ed (diff)
parent3309f120f21910fd0e55c98d96f83b92708060dc (diff)
downloadrust-a477b81c7ebe2cf986ad205e213570b5acfbced4.tar.gz
rust-a477b81c7ebe2cf986ad205e213570b5acfbced4.zip
Auto merge of #2880 - RalfJung:sync, r=RalfJung
increase timing slack for sync tests; port tests to 2021 edition
-rw-r--r--src/tools/miri/tests/compiletest.rs2
-rw-r--r--src/tools/miri/tests/fail/concurrency/libc_pthread_create_too_few_args.stderr4
-rw-r--r--src/tools/miri/tests/fail/concurrency/libc_pthread_create_too_many_args.stderr4
-rw-r--r--src/tools/miri/tests/fail/data_race/alloc_read_race.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/alloc_write_race.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/atomic_read_na_write_race1.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/atomic_read_na_write_race2.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/atomic_write_na_read_race1.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/atomic_write_na_read_race2.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/atomic_write_na_write_race1.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/atomic_write_na_write_race2.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/dangling_thread_async_race.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/dangling_thread_race.rs1
-rw-r--r--src/tools/miri/tests/fail/data_race/dealloc_read_race1.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/dealloc_read_race2.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/dealloc_read_race_stack.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/dealloc_write_race1.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/dealloc_write_race2.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/dealloc_write_race_stack.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/enable_after_join_to_main.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/read_write_race.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/read_write_race_stack.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/relax_acquire_race.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/release_seq_race.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/release_seq_race_same_thread.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/rmw_race.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/stack_pop_race.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/write_write_race.rs2
-rw-r--r--src/tools/miri/tests/fail/data_race/write_write_race_stack.rs2
-rw-r--r--src/tools/miri/tests/fail/erroneous_const.stderr2
-rw-r--r--src/tools/miri/tests/fail/panic/double_panic.stderr5
-rw-r--r--src/tools/miri/tests/fail/panic/no_std.stderr2
-rw-r--r--src/tools/miri/tests/fail/panic/panic_abort1.stderr5
-rw-r--r--src/tools/miri/tests/fail/panic/panic_abort2.stderr2
-rw-r--r--src/tools/miri/tests/fail/panic/panic_abort3.stderr2
-rw-r--r--src/tools/miri/tests/fail/panic/panic_abort4.stderr2
-rw-r--r--src/tools/miri/tests/panic/panic1.stderr8
-rw-r--r--src/tools/miri/tests/pass-dep/shims/libc-misc.rs1
-rw-r--r--src/tools/miri/tests/pass/0weak_memory_consistency.rs2
-rw-r--r--src/tools/miri/tests/pass/concurrency/data_race.rs22
-rw-r--r--src/tools/miri/tests/pass/concurrency/disable_data_race_detector.rs2
-rw-r--r--src/tools/miri/tests/pass/concurrency/sync.rs12
-rw-r--r--src/tools/miri/tests/pass/concurrency/thread_locals.rs1
-rw-r--r--src/tools/miri/tests/pass/concurrency/windows_condvar_shared.rs8
-rw-r--r--src/tools/miri/tests/pass/concurrency/windows_init_once.rs4
-rw-r--r--src/tools/miri/tests/pass/panic/catch_panic.rs5
-rw-r--r--src/tools/miri/tests/pass/panic/catch_panic.stderr2
-rw-r--r--src/tools/miri/tests/pass/panic/concurrent-panic.rs2
48 files changed, 115 insertions, 35 deletions
diff --git a/src/tools/miri/tests/compiletest.rs b/src/tools/miri/tests/compiletest.rs
index 52deba9108c..c1365995737 100644
--- a/src/tools/miri/tests/compiletest.rs
+++ b/src/tools/miri/tests/compiletest.rs
@@ -52,7 +52,7 @@ fn run_tests(mode: Mode, path: &str, target: &str, with_dependencies: bool) -> R
         mode,
         program: miri_path(),
         quiet: false,
-        edition: Some("2018".into()),
+        edition: Some("2021".into()),
         ..Config::default()
     };
 
diff --git a/src/tools/miri/tests/fail/concurrency/libc_pthread_create_too_few_args.stderr b/src/tools/miri/tests/fail/concurrency/libc_pthread_create_too_few_args.stderr
index 94463bef8f0..c2de4afd68f 100644
--- a/src/tools/miri/tests/fail/concurrency/libc_pthread_create_too_few_args.stderr
+++ b/src/tools/miri/tests/fail/concurrency/libc_pthread_create_too_few_args.stderr
@@ -7,8 +7,8 @@ LL |     panic!()
    = 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 `thread_start` at RUSTLIB/std/src/panic.rs:LL:CC
-   = note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = note: inside `thread_start` at RUSTLIB/core/src/panic.rs:LL:CC
+   = note: this error originates in the macro `$crate::panic::panic_2021` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 error: aborting due to previous error
 
diff --git a/src/tools/miri/tests/fail/concurrency/libc_pthread_create_too_many_args.stderr b/src/tools/miri/tests/fail/concurrency/libc_pthread_create_too_many_args.stderr
index fdbe91cc8a8..85ae930d439 100644
--- a/src/tools/miri/tests/fail/concurrency/libc_pthread_create_too_many_args.stderr
+++ b/src/tools/miri/tests/fail/concurrency/libc_pthread_create_too_many_args.stderr
@@ -7,8 +7,8 @@ LL |     panic!()
    = 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 `thread_start` at RUSTLIB/std/src/panic.rs:LL:CC
-   = note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = note: inside `thread_start` at RUSTLIB/core/src/panic.rs:LL:CC
+   = note: this error originates in the macro `$crate::panic::panic_2021` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 error: aborting due to previous error
 
diff --git a/src/tools/miri/tests/fail/data_race/alloc_read_race.rs b/src/tools/miri/tests/fail/data_race/alloc_read_race.rs
index 2698c63a445..42077dfae2d 100644
--- a/src/tools/miri/tests/fail/data_race/alloc_read_race.rs
+++ b/src/tools/miri/tests/fail/data_race/alloc_read_race.rs
@@ -26,6 +26,7 @@ pub fn main() {
     //  2. write
     unsafe {
         let j1 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             // Concurrent allocate the memory.
             // Uses relaxed semantics to not generate
             // a release sequence.
@@ -34,6 +35,7 @@ pub fn main() {
         });
 
         let j2 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             let pointer = &*ptr.0;
 
             // Note: could also error due to reading uninitialized memory, but the data-race detector triggers first.
diff --git a/src/tools/miri/tests/fail/data_race/alloc_write_race.rs b/src/tools/miri/tests/fail/data_race/alloc_write_race.rs
index b78d5ef27d3..53f4e637a19 100644
--- a/src/tools/miri/tests/fail/data_race/alloc_write_race.rs
+++ b/src/tools/miri/tests/fail/data_race/alloc_write_race.rs
@@ -25,6 +25,7 @@ pub fn main() {
     //  2. write
     unsafe {
         let j1 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             // Concurrent allocate the memory.
             // Uses relaxed semantics to not generate
             // a release sequence.
@@ -34,6 +35,7 @@ pub fn main() {
         });
 
         let j2 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             let pointer = &*ptr.0;
             *pointer.load(Ordering::Relaxed) = 2; //~ ERROR: Data race detected between (1) Allocate on thread `<unnamed>` and (2) Write on thread `<unnamed>`
         });
diff --git a/src/tools/miri/tests/fail/data_race/atomic_read_na_write_race1.rs b/src/tools/miri/tests/fail/data_race/atomic_read_na_write_race1.rs
index 3f811d0f64d..9606df1d6ff 100644
--- a/src/tools/miri/tests/fail/data_race/atomic_read_na_write_race1.rs
+++ b/src/tools/miri/tests/fail/data_race/atomic_read_na_write_race1.rs
@@ -16,10 +16,12 @@ pub fn main() {
     let c = EvilSend(b);
     unsafe {
         let j1 = spawn(move || {
+            let c = c; // avoid field capturing
             *(c.0 as *mut usize) = 32;
         });
 
         let j2 = spawn(move || {
+            let c = c; // avoid field capturing
             (&*c.0).load(Ordering::SeqCst) //~ ERROR: Data race detected between (1) Write on thread `<unnamed>` and (2) Atomic Load on thread `<unnamed>`
         });
 
diff --git a/src/tools/miri/tests/fail/data_race/atomic_read_na_write_race2.rs b/src/tools/miri/tests/fail/data_race/atomic_read_na_write_race2.rs
index 34fb3ac066f..0e29ab32eef 100644
--- a/src/tools/miri/tests/fail/data_race/atomic_read_na_write_race2.rs
+++ b/src/tools/miri/tests/fail/data_race/atomic_read_na_write_race2.rs
@@ -17,11 +17,13 @@ pub fn main() {
     let c = EvilSend(b);
     unsafe {
         let j1 = spawn(move || {
+            let c = c; // avoid field capturing
             let atomic_ref = &mut *c.0;
             atomic_ref.load(Ordering::SeqCst)
         });
 
         let j2 = spawn(move || {
+            let c = c; // avoid field capturing
             let atomic_ref = &mut *c.0;
             *atomic_ref.get_mut() = 32; //~ ERROR: Data race detected between (1) Atomic Load on thread `<unnamed>` and (2) Write on thread `<unnamed>`
         });
diff --git a/src/tools/miri/tests/fail/data_race/atomic_write_na_read_race1.rs b/src/tools/miri/tests/fail/data_race/atomic_write_na_read_race1.rs
index 63b0806f3bb..6f1792bc8f4 100644
--- a/src/tools/miri/tests/fail/data_race/atomic_write_na_read_race1.rs
+++ b/src/tools/miri/tests/fail/data_race/atomic_write_na_read_race1.rs
@@ -17,11 +17,13 @@ pub fn main() {
     let c = EvilSend(b);
     unsafe {
         let j1 = spawn(move || {
+            let c = c; // avoid field capturing
             let atomic_ref = &mut *c.0;
             atomic_ref.store(32, Ordering::SeqCst)
         });
 
         let j2 = spawn(move || {
+            let c = c; // avoid field capturing
             let atomic_ref = &mut *c.0;
             *atomic_ref.get_mut() //~ ERROR: Data race detected between (1) Atomic Store on thread `<unnamed>` and (2) Read on thread `<unnamed>`
         });
diff --git a/src/tools/miri/tests/fail/data_race/atomic_write_na_read_race2.rs b/src/tools/miri/tests/fail/data_race/atomic_write_na_read_race2.rs
index 9092254be21..e84207e655d 100644
--- a/src/tools/miri/tests/fail/data_race/atomic_write_na_read_race2.rs
+++ b/src/tools/miri/tests/fail/data_race/atomic_write_na_read_race2.rs
@@ -16,10 +16,12 @@ pub fn main() {
     let c = EvilSend(b);
     unsafe {
         let j1 = spawn(move || {
+            let c = c; // avoid field capturing
             let _val = *(c.0 as *mut usize);
         });
 
         let j2 = spawn(move || {
+            let c = c; // avoid field capturing
             (&*c.0).store(32, Ordering::SeqCst); //~ ERROR: Data race detected between (1) Read on thread `<unnamed>` and (2) Atomic Store on thread `<unnamed>`
         });
 
diff --git a/src/tools/miri/tests/fail/data_race/atomic_write_na_write_race1.rs b/src/tools/miri/tests/fail/data_race/atomic_write_na_write_race1.rs
index 5a713905f4e..ca269b1bd2a 100644
--- a/src/tools/miri/tests/fail/data_race/atomic_write_na_write_race1.rs
+++ b/src/tools/miri/tests/fail/data_race/atomic_write_na_write_race1.rs
@@ -16,10 +16,12 @@ pub fn main() {
     let c = EvilSend(b);
     unsafe {
         let j1 = spawn(move || {
+            let c = c; // avoid field capturing
             *(c.0 as *mut usize) = 32;
         });
 
         let j2 = spawn(move || {
+            let c = c; // avoid field capturing
             (&*c.0).store(64, Ordering::SeqCst); //~ ERROR: Data race detected between (1) Write on thread `<unnamed>` and (2) Atomic Store on thread `<unnamed>`
         });
 
diff --git a/src/tools/miri/tests/fail/data_race/atomic_write_na_write_race2.rs b/src/tools/miri/tests/fail/data_race/atomic_write_na_write_race2.rs
index 5848aa262b3..0d69a9a332d 100644
--- a/src/tools/miri/tests/fail/data_race/atomic_write_na_write_race2.rs
+++ b/src/tools/miri/tests/fail/data_race/atomic_write_na_write_race2.rs
@@ -17,11 +17,13 @@ pub fn main() {
     let c = EvilSend(b);
     unsafe {
         let j1 = spawn(move || {
+            let c = c; // avoid field capturing
             let atomic_ref = &mut *c.0;
             atomic_ref.store(64, Ordering::SeqCst);
         });
 
         let j2 = spawn(move || {
+            let c = c; // avoid field capturing
             let atomic_ref = &mut *c.0;
             *atomic_ref.get_mut() = 32; //~ ERROR: Data race detected between (1) Atomic Store on thread `<unnamed>` and (2) Write on thread `<unnamed>`
         });
diff --git a/src/tools/miri/tests/fail/data_race/dangling_thread_async_race.rs b/src/tools/miri/tests/fail/data_race/dangling_thread_async_race.rs
index eecb980e905..0679b81f012 100644
--- a/src/tools/miri/tests/fail/data_race/dangling_thread_async_race.rs
+++ b/src/tools/miri/tests/fail/data_race/dangling_thread_async_race.rs
@@ -18,6 +18,7 @@ fn main() {
 
     let join = unsafe {
         spawn(move || {
+            let c = c; // capture `c`, not just its field.
             *c.0 = 32;
         })
     };
@@ -34,6 +35,7 @@ fn main() {
 
     let join2 = unsafe {
         spawn(move || {
+            let c = c; // capture `c`, not just its field.
             *c.0 = 64; //~ ERROR: Data race detected between (1) Write on thread `<unnamed>` and (2) Write on thread `<unnamed>`
         })
     };
diff --git a/src/tools/miri/tests/fail/data_race/dangling_thread_race.rs b/src/tools/miri/tests/fail/data_race/dangling_thread_race.rs
index 4c7fbdd7fe6..3c5dd424eb1 100644
--- a/src/tools/miri/tests/fail/data_race/dangling_thread_race.rs
+++ b/src/tools/miri/tests/fail/data_race/dangling_thread_race.rs
@@ -18,6 +18,7 @@ fn main() {
 
     let join = unsafe {
         spawn(move || {
+            let c = c; // avoid field capturing
             *c.0 = 32;
         })
     };
diff --git a/src/tools/miri/tests/fail/data_race/dealloc_read_race1.rs b/src/tools/miri/tests/fail/data_race/dealloc_read_race1.rs
index 18593cf56ae..3c25cdc0d8d 100644
--- a/src/tools/miri/tests/fail/data_race/dealloc_read_race1.rs
+++ b/src/tools/miri/tests/fail/data_race/dealloc_read_race1.rs
@@ -20,10 +20,12 @@ pub fn main() {
 
     unsafe {
         let j1 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             let _val = *ptr.0;
         });
 
         let j2 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             __rust_dealloc(
                 //~^ ERROR: Data race detected between (1) Read on thread `<unnamed>` and (2) Deallocate on thread `<unnamed>`
                 ptr.0 as *mut _,
diff --git a/src/tools/miri/tests/fail/data_race/dealloc_read_race2.rs b/src/tools/miri/tests/fail/data_race/dealloc_read_race2.rs
index a6f83d489e5..5d7a0cc1dc9 100644
--- a/src/tools/miri/tests/fail/data_race/dealloc_read_race2.rs
+++ b/src/tools/miri/tests/fail/data_race/dealloc_read_race2.rs
@@ -20,6 +20,7 @@ pub fn main() {
 
     unsafe {
         let j1 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             __rust_dealloc(
                 ptr.0 as *mut _,
                 std::mem::size_of::<usize>(),
@@ -28,6 +29,7 @@ pub fn main() {
         });
 
         let j2 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             // Also an error of the form: Data race detected between (1) Deallocate on thread `<unnamed>` and (2) Read on thread `<unnamed>`
             // but the invalid allocation is detected first.
             *ptr.0 //~ ERROR: dereferenced after this allocation got freed
diff --git a/src/tools/miri/tests/fail/data_race/dealloc_read_race_stack.rs b/src/tools/miri/tests/fail/data_race/dealloc_read_race_stack.rs
index c82bfed09ee..87b5f204816 100644
--- a/src/tools/miri/tests/fail/data_race/dealloc_read_race_stack.rs
+++ b/src/tools/miri/tests/fail/data_race/dealloc_read_race_stack.rs
@@ -26,6 +26,7 @@ pub fn main() {
     //  3. stack-deallocate
     unsafe {
         let j1 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             let pointer = &*ptr.0;
             {
                 let mut stack_var = 0usize;
@@ -39,6 +40,7 @@ pub fn main() {
         });
 
         let j2 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             let pointer = &*ptr.0;
             *pointer.load(Ordering::Acquire)
         });
diff --git a/src/tools/miri/tests/fail/data_race/dealloc_write_race1.rs b/src/tools/miri/tests/fail/data_race/dealloc_write_race1.rs
index 1e93a6cb094..b700f50ce19 100644
--- a/src/tools/miri/tests/fail/data_race/dealloc_write_race1.rs
+++ b/src/tools/miri/tests/fail/data_race/dealloc_write_race1.rs
@@ -19,10 +19,12 @@ pub fn main() {
 
     unsafe {
         let j1 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             *ptr.0 = 2;
         });
 
         let j2 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             __rust_dealloc(
                 //~^ ERROR: Data race detected between (1) Write on thread `<unnamed>` and (2) Deallocate on thread `<unnamed>`
                 ptr.0 as *mut _,
diff --git a/src/tools/miri/tests/fail/data_race/dealloc_write_race2.rs b/src/tools/miri/tests/fail/data_race/dealloc_write_race2.rs
index 385584db27f..a7f43f03c02 100644
--- a/src/tools/miri/tests/fail/data_race/dealloc_write_race2.rs
+++ b/src/tools/miri/tests/fail/data_race/dealloc_write_race2.rs
@@ -19,6 +19,7 @@ pub fn main() {
 
     unsafe {
         let j1 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             __rust_dealloc(
                 ptr.0 as *mut _,
                 std::mem::size_of::<usize>(),
@@ -27,6 +28,7 @@ pub fn main() {
         });
 
         let j2 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             // Also an error of the form: Data race detected between (1) Deallocate on thread `<unnamed>` and (2) Write on thread `<unnamed>`
             // but the invalid allocation is detected first.
             *ptr.0 = 2; //~ ERROR: dereferenced after this allocation got freed
diff --git a/src/tools/miri/tests/fail/data_race/dealloc_write_race_stack.rs b/src/tools/miri/tests/fail/data_race/dealloc_write_race_stack.rs
index 259fbdc497a..3d35187a018 100644
--- a/src/tools/miri/tests/fail/data_race/dealloc_write_race_stack.rs
+++ b/src/tools/miri/tests/fail/data_race/dealloc_write_race_stack.rs
@@ -26,6 +26,7 @@ pub fn main() {
     //  3. stack-deallocate
     unsafe {
         let j1 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             let pointer = &*ptr.0;
             {
                 let mut stack_var = 0usize;
@@ -39,6 +40,7 @@ pub fn main() {
         });
 
         let j2 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             let pointer = &*ptr.0;
             *pointer.load(Ordering::Acquire) = 3;
         });
diff --git a/src/tools/miri/tests/fail/data_race/enable_after_join_to_main.rs b/src/tools/miri/tests/fail/data_race/enable_after_join_to_main.rs
index 3d47b1accb3..b44be4ac64e 100644
--- a/src/tools/miri/tests/fail/data_race/enable_after_join_to_main.rs
+++ b/src/tools/miri/tests/fail/data_race/enable_after_join_to_main.rs
@@ -26,10 +26,12 @@ pub fn main() {
     let c = EvilSend(b);
     unsafe {
         let j1 = spawn(move || {
+            let c = c; // avoid field capturing
             *c.0 = 32;
         });
 
         let j2 = spawn(move || {
+            let c = c; // avoid field capturing
             *c.0 = 64; //~ ERROR: Data race detected between (1) Write on thread `<unnamed>` and (2) Write on thread `<unnamed>`
         });
 
diff --git a/src/tools/miri/tests/fail/data_race/read_write_race.rs b/src/tools/miri/tests/fail/data_race/read_write_race.rs
index d996141db3e..aed3ca767f6 100644
--- a/src/tools/miri/tests/fail/data_race/read_write_race.rs
+++ b/src/tools/miri/tests/fail/data_race/read_write_race.rs
@@ -15,10 +15,12 @@ pub fn main() {
     let c = EvilSend(b);
     unsafe {
         let j1 = spawn(move || {
+            let c = c; // avoid field capturing
             let _val = *c.0;
         });
 
         let j2 = spawn(move || {
+            let c = c; // avoid field capturing
             *c.0 = 64; //~ ERROR: Data race detected between (1) Read on thread `<unnamed>` and (2) Write on thread `<unnamed>`
         });
 
diff --git a/src/tools/miri/tests/fail/data_race/read_write_race_stack.rs b/src/tools/miri/tests/fail/data_race/read_write_race_stack.rs
index b4e371f430d..40224ced12d 100644
--- a/src/tools/miri/tests/fail/data_race/read_write_race_stack.rs
+++ b/src/tools/miri/tests/fail/data_race/read_write_race_stack.rs
@@ -31,6 +31,7 @@ pub fn main() {
     //  5. read-value
     unsafe {
         let j1 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             // Concurrent allocate the memory.
             // Uses relaxed semantics to not generate
             // a release sequence.
@@ -46,6 +47,7 @@ pub fn main() {
         });
 
         let j2 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             let pointer = &*ptr.0;
             *pointer.load(Ordering::Acquire) = 3;
         });
diff --git a/src/tools/miri/tests/fail/data_race/relax_acquire_race.rs b/src/tools/miri/tests/fail/data_race/relax_acquire_race.rs
index b7226fa626f..1b691b996f1 100644
--- a/src/tools/miri/tests/fail/data_race/relax_acquire_race.rs
+++ b/src/tools/miri/tests/fail/data_race/relax_acquire_race.rs
@@ -25,6 +25,7 @@ pub fn main() {
     //  4. load acquire : 2
     unsafe {
         let j1 = spawn(move || {
+            let c = c; // avoid field capturing
             *c.0 = 1;
             SYNC.store(1, Ordering::Release);
         });
@@ -36,6 +37,7 @@ pub fn main() {
         });
 
         let j3 = spawn(move || {
+            let c = c; // avoid field capturing
             if SYNC.load(Ordering::Acquire) == 2 {
                 *c.0 //~ ERROR: Data race detected between (1) Write on thread `<unnamed>` and (2) Read on thread `<unnamed>`
             } else {
diff --git a/src/tools/miri/tests/fail/data_race/release_seq_race.rs b/src/tools/miri/tests/fail/data_race/release_seq_race.rs
index dff33a42a1c..80b30053fc7 100644
--- a/src/tools/miri/tests/fail/data_race/release_seq_race.rs
+++ b/src/tools/miri/tests/fail/data_race/release_seq_race.rs
@@ -27,6 +27,7 @@ pub fn main() {
     //  4. load acquire : 3
     unsafe {
         let j1 = spawn(move || {
+            let c = c; // avoid field capturing
             *c.0 = 1;
             SYNC.store(1, Ordering::Release);
             sleep(Duration::from_millis(200));
@@ -39,6 +40,7 @@ pub fn main() {
         });
 
         let j3 = spawn(move || {
+            let c = c; // avoid field capturing
             sleep(Duration::from_millis(500));
             if SYNC.load(Ordering::Acquire) == 3 {
                 *c.0 //~ ERROR: Data race detected between (1) Write on thread `<unnamed>` and (2) Read on thread `<unnamed>`
diff --git a/src/tools/miri/tests/fail/data_race/release_seq_race_same_thread.rs b/src/tools/miri/tests/fail/data_race/release_seq_race_same_thread.rs
index f7a523841b8..33de1f17558 100644
--- a/src/tools/miri/tests/fail/data_race/release_seq_race_same_thread.rs
+++ b/src/tools/miri/tests/fail/data_race/release_seq_race_same_thread.rs
@@ -25,6 +25,7 @@ pub fn main() {
     //  3. load acquire : 2
     unsafe {
         let j1 = spawn(move || {
+            let c = c; // avoid field capturing
             *c.0 = 1;
             SYNC.store(1, Ordering::Release);
 
@@ -36,6 +37,7 @@ pub fn main() {
         });
 
         let j2 = spawn(move || {
+            let c = c; // avoid field capturing
             if SYNC.load(Ordering::Acquire) == 2 {
                 *c.0 //~ ERROR: Data race detected between (1) Write on thread `<unnamed>` and (2) Read on thread `<unnamed>`
             } else {
diff --git a/src/tools/miri/tests/fail/data_race/rmw_race.rs b/src/tools/miri/tests/fail/data_race/rmw_race.rs
index 2201362b167..4d0ce8f9433 100644
--- a/src/tools/miri/tests/fail/data_race/rmw_race.rs
+++ b/src/tools/miri/tests/fail/data_race/rmw_race.rs
@@ -25,6 +25,7 @@ pub fn main() {
     //  4. load acquire : 3
     unsafe {
         let j1 = spawn(move || {
+            let c = c; // capture `c`, not just its field.
             *c.0 = 1;
             SYNC.store(1, Ordering::Release);
         });
@@ -37,6 +38,7 @@ pub fn main() {
         });
 
         let j3 = spawn(move || {
+            let c = c; // capture `c`, not just its field.
             if SYNC.load(Ordering::Acquire) == 3 {
                 *c.0 //~ ERROR: Data race detected between (1) Write on thread `<unnamed>` and (2) Read on thread `<unnamed>`
             } else {
diff --git a/src/tools/miri/tests/fail/data_race/stack_pop_race.rs b/src/tools/miri/tests/fail/data_race/stack_pop_race.rs
index dec5ff274cc..d3c2ab3e4a4 100644
--- a/src/tools/miri/tests/fail/data_race/stack_pop_race.rs
+++ b/src/tools/miri/tests/fail/data_race/stack_pop_race.rs
@@ -13,7 +13,7 @@ fn main() {
 fn race(local: i32) {
     let ptr = MakeSend(&local as *const i32);
     thread::spawn(move || {
-        let ptr = ptr;
+        let ptr = ptr; // avoid field capturing
         let _val = unsafe { *ptr.0 };
     });
     // Make the other thread go first so that it does not UAF.
diff --git a/src/tools/miri/tests/fail/data_race/write_write_race.rs b/src/tools/miri/tests/fail/data_race/write_write_race.rs
index fe02d02f9dc..30e3460f222 100644
--- a/src/tools/miri/tests/fail/data_race/write_write_race.rs
+++ b/src/tools/miri/tests/fail/data_race/write_write_race.rs
@@ -15,10 +15,12 @@ pub fn main() {
     let c = EvilSend(b);
     unsafe {
         let j1 = spawn(move || {
+            let c = c; // avoid field capturing
             *c.0 = 32;
         });
 
         let j2 = spawn(move || {
+            let c = c; // avoid field capturing
             *c.0 = 64; //~ ERROR: Data race detected between (1) Write on thread `<unnamed>` and (2) Write on thread `<unnamed>`
         });
 
diff --git a/src/tools/miri/tests/fail/data_race/write_write_race_stack.rs b/src/tools/miri/tests/fail/data_race/write_write_race_stack.rs
index c1c1b1fa6e3..25be42bd4eb 100644
--- a/src/tools/miri/tests/fail/data_race/write_write_race_stack.rs
+++ b/src/tools/miri/tests/fail/data_race/write_write_race_stack.rs
@@ -28,6 +28,7 @@ pub fn main() {
     //  5. write-value
     unsafe {
         let j1 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             // Concurrent allocate the memory.
             // Uses relaxed semantics to not generate
             // a release sequence.
@@ -46,6 +47,7 @@ pub fn main() {
         });
 
         let j2 = spawn(move || {
+            let ptr = ptr; // avoid field capturing
             let pointer = &*ptr.0;
             *pointer.load(Ordering::Acquire) = 3;
         });
diff --git a/src/tools/miri/tests/fail/erroneous_const.stderr b/src/tools/miri/tests/fail/erroneous_const.stderr
index c32ebf67a11..209c4a932dc 100644
--- a/src/tools/miri/tests/fail/erroneous_const.stderr
+++ b/src/tools/miri/tests/fail/erroneous_const.stderr
@@ -4,7 +4,7 @@ error[E0080]: evaluation of `PrintName::<i32>::VOID` failed
 LL |     const VOID: ! = panic!();
    |                     ^^^^^^^^ the evaluated program panicked at 'explicit panic', $DIR/erroneous_const.rs:LL:CC
    |
-   = note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = note: this error originates in the macro `$crate::panic::panic_2021` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 note: erroneous constant used
   --> $DIR/erroneous_const.rs:LL:CC
diff --git a/src/tools/miri/tests/fail/panic/double_panic.stderr b/src/tools/miri/tests/fail/panic/double_panic.stderr
index 5384f6f6716..77d5fc5d7ce 100644
--- a/src/tools/miri/tests/fail/panic/double_panic.stderr
+++ b/src/tools/miri/tests/fail/panic/double_panic.stderr
@@ -12,7 +12,8 @@ LL |     ABORT();
    = note: inside `std::sys::PLATFORM::abort_internal` at RUSTLIB/std/src/sys/PLATFORM/mod.rs:LL:CC
    = note: inside `std::panicking::rust_panic_with_hook` at RUSTLIB/std/src/panicking.rs:LL:CC
    = note: inside closure at RUSTLIB/std/src/panicking.rs:LL:CC
-   = note: inside `std::sys_common::backtrace::__rust_end_short_backtrace::<[closure@std::rt::begin_panic<&str>::{closure#0}], !>` at RUSTLIB/std/src/sys_common/backtrace.rs:LL:CC
+   = note: inside `std::sys_common::backtrace::__rust_end_short_backtrace::<[closure@std::panicking::begin_panic_handler::{closure#0}], !>` at RUSTLIB/std/src/sys_common/backtrace.rs:LL:CC
+   = note: inside `std::panicking::begin_panic_handler` at RUSTLIB/std/src/panicking.rs:LL:CC
 note: inside `<Foo as std::ops::Drop>::drop`
   --> $DIR/double_panic.rs:LL:CC
    |
@@ -24,7 +25,7 @@ note: inside `main`
    |
 LL | }
    | ^
-   = note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = note: this error originates in the macro `$crate::panic::panic_2021` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
 
diff --git a/src/tools/miri/tests/fail/panic/no_std.stderr b/src/tools/miri/tests/fail/panic/no_std.stderr
index 39ad0d268b9..f8307c0c23b 100644
--- a/src/tools/miri/tests/fail/panic/no_std.stderr
+++ b/src/tools/miri/tests/fail/panic/no_std.stderr
@@ -11,7 +11,7 @@ note: inside `start`
    |
 LL |     panic!("blarg I am dead")
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
-   = note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = note: this error originates in the macro `$crate::panic::panic_2021` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
 
diff --git a/src/tools/miri/tests/fail/panic/panic_abort1.stderr b/src/tools/miri/tests/fail/panic/panic_abort1.stderr
index d25dd7be635..d9303fd0d06 100644
--- a/src/tools/miri/tests/fail/panic/panic_abort1.stderr
+++ b/src/tools/miri/tests/fail/panic/panic_abort1.stderr
@@ -11,13 +11,14 @@ LL |                 ABORT();
    = note: inside `std::panicking::rust_panic` at RUSTLIB/std/src/panicking.rs:LL:CC
    = note: inside `std::panicking::rust_panic_with_hook` at RUSTLIB/std/src/panicking.rs:LL:CC
    = note: inside closure at RUSTLIB/std/src/panicking.rs:LL:CC
-   = note: inside `std::sys_common::backtrace::__rust_end_short_backtrace::<[closure@std::rt::begin_panic<&str>::{closure#0}], !>` at RUSTLIB/std/src/sys_common/backtrace.rs:LL:CC
+   = note: inside `std::sys_common::backtrace::__rust_end_short_backtrace::<[closure@std::panicking::begin_panic_handler::{closure#0}], !>` at RUSTLIB/std/src/sys_common/backtrace.rs:LL:CC
+   = note: inside `std::panicking::begin_panic_handler` at RUSTLIB/std/src/panicking.rs:LL:CC
 note: inside `main`
   --> $DIR/panic_abort1.rs:LL:CC
    |
 LL |     std::panic!("panicking from libstd");
    | ^
-   = note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `std::panic` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = note: this error originates in the macro `$crate::panic::panic_2021` which comes from the expansion of the macro `std::panic` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
 
diff --git a/src/tools/miri/tests/fail/panic/panic_abort2.stderr b/src/tools/miri/tests/fail/panic/panic_abort2.stderr
index f56d509a697..54cbc9b5f6d 100644
--- a/src/tools/miri/tests/fail/panic/panic_abort2.stderr
+++ b/src/tools/miri/tests/fail/panic/panic_abort2.stderr
@@ -18,7 +18,7 @@ note: inside `main`
    |
 LL |     std::panic!("{}-panicking from libstd", 42);
    | ^
-   = note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `std::panic` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = note: this error originates in the macro `$crate::panic::panic_2021` which comes from the expansion of the macro `std::panic` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
 
diff --git a/src/tools/miri/tests/fail/panic/panic_abort3.stderr b/src/tools/miri/tests/fail/panic/panic_abort3.stderr
index 43792f76993..64eea47b14b 100644
--- a/src/tools/miri/tests/fail/panic/panic_abort3.stderr
+++ b/src/tools/miri/tests/fail/panic/panic_abort3.stderr
@@ -18,7 +18,7 @@ note: inside `main`
    |
 LL |     core::panic!("panicking from libcore");
    | ^
-   = note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `core::panic` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = note: this error originates in the macro `$crate::panic::panic_2021` which comes from the expansion of the macro `core::panic` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
 
diff --git a/src/tools/miri/tests/fail/panic/panic_abort4.stderr b/src/tools/miri/tests/fail/panic/panic_abort4.stderr
index 89e181bfb27..21beb100645 100644
--- a/src/tools/miri/tests/fail/panic/panic_abort4.stderr
+++ b/src/tools/miri/tests/fail/panic/panic_abort4.stderr
@@ -18,7 +18,7 @@ note: inside `main`
    |
 LL |     core::panic!("{}-panicking from libcore", 42);
    | ^
-   = note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `core::panic` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = note: this error originates in the macro `$crate::panic::panic_2021` which comes from the expansion of the macro `core::panic` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
 
diff --git a/src/tools/miri/tests/panic/panic1.stderr b/src/tools/miri/tests/panic/panic1.stderr
index 15834d58bc6..0f4535e6792 100644
--- a/src/tools/miri/tests/panic/panic1.stderr
+++ b/src/tools/miri/tests/panic/panic1.stderr
@@ -1,9 +1,11 @@
 thread 'main' panicked at 'panicking from libstd', $DIR/panic1.rs:LL:CC
 stack backtrace:
-   0: std::rt::begin_panic
+   0: std::panicking::begin_panic_handler
  at RUSTLIB/std/src/panicking.rs:LL:CC
-   1: main
+   1: std::rt::panic_fmt
+ at RUSTLIB/core/src/panicking.rs:LL:CC
+   2: main
  at $DIR/panic1.rs:LL:CC
-   2: <fn() as std::ops::FnOnce<()>>::call_once - shim(fn())
+   3: <fn() as std::ops::FnOnce<()>>::call_once - shim(fn())
  at RUSTLIB/core/src/ops/function.rs:LL:CC
 note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
diff --git a/src/tools/miri/tests/pass-dep/shims/libc-misc.rs b/src/tools/miri/tests/pass-dep/shims/libc-misc.rs
index 82ef59427ae..68504cb1c79 100644
--- a/src/tools/miri/tests/pass-dep/shims/libc-misc.rs
+++ b/src/tools/miri/tests/pass-dep/shims/libc-misc.rs
@@ -101,7 +101,6 @@ fn test_posix_realpath_errors() {
 
 #[cfg(target_os = "linux")]
 fn test_posix_fadvise() {
-    use std::convert::TryInto;
     use std::io::Write;
 
     let path = tmp().join("miri_test_libc_posix_fadvise.txt");
diff --git a/src/tools/miri/tests/pass/0weak_memory_consistency.rs b/src/tools/miri/tests/pass/0weak_memory_consistency.rs
index 3a531eede67..abfe3b0adeb 100644
--- a/src/tools/miri/tests/pass/0weak_memory_consistency.rs
+++ b/src/tools/miri/tests/pass/0weak_memory_consistency.rs
@@ -116,11 +116,13 @@ fn test_message_passing() {
 
     #[rustfmt::skip]
     let j1 = spawn(move || {
+        let x = x; // avoid field capturing
         unsafe { *x.0 = 1 }; // -----------------------------------------+
         y.store(1, Release); // ---------------------+                   |
     }); //                                           |                   |
     #[rustfmt::skip] //                              |synchronizes-with  | happens-before
     let j2 = spawn(move || { //                      |                   |
+        let x = x; // avoid field capturing          |                   |
         acquires_value(&y, 1); // <------------------+                   |
         unsafe { *x.0 } // <---------------------------------------------+
     });
diff --git a/src/tools/miri/tests/pass/concurrency/data_race.rs b/src/tools/miri/tests/pass/concurrency/data_race.rs
index 4e3c99058a0..d31420380a5 100644
--- a/src/tools/miri/tests/pass/concurrency/data_race.rs
+++ b/src/tools/miri/tests/pass/concurrency/data_race.rs
@@ -17,12 +17,14 @@ fn test_fence_sync() {
     let evil_ptr = EvilSend(ptr);
 
     let j1 = spawn(move || {
+        let evil_ptr = evil_ptr; // avoid field capturing
         unsafe { *evil_ptr.0 = 1 };
         fence(Ordering::Release);
         SYNC.store(1, Ordering::Relaxed)
     });
 
     let j2 = spawn(move || {
+        let evil_ptr = evil_ptr; // avoid field capturing
         if SYNC.load(Ordering::Relaxed) == 1 {
             fence(Ordering::Acquire);
             unsafe { *evil_ptr.0 }
@@ -40,10 +42,10 @@ fn test_multiple_reads() {
     let ptr = &mut var as *mut u32;
     let evil_ptr = EvilSend(ptr);
 
-    let j1 = spawn(move || unsafe { *evil_ptr.0 });
-    let j2 = spawn(move || unsafe { *evil_ptr.0 });
-    let j3 = spawn(move || unsafe { *evil_ptr.0 });
-    let j4 = spawn(move || unsafe { *evil_ptr.0 });
+    let j1 = spawn(move || unsafe { *{ evil_ptr }.0 });
+    let j2 = spawn(move || unsafe { *{ evil_ptr }.0 });
+    let j3 = spawn(move || unsafe { *{ evil_ptr }.0 });
+    let j4 = spawn(move || unsafe { *{ evil_ptr }.0 });
 
     assert_eq!(j1.join().unwrap(), 42);
     assert_eq!(j2.join().unwrap(), 42);
@@ -63,6 +65,7 @@ pub fn test_rmw_no_block() {
 
     unsafe {
         let j1 = spawn(move || {
+            let c = c; // avoid field capturing
             *c.0 = 1;
             SYNC.store(1, Ordering::Release);
         });
@@ -73,7 +76,10 @@ pub fn test_rmw_no_block() {
             }
         });
 
-        let j3 = spawn(move || if SYNC.load(Ordering::Acquire) == 2 { *c.0 } else { 0 });
+        let j3 = spawn(move || {
+            let c = c; // avoid field capturing
+            if SYNC.load(Ordering::Acquire) == 2 { *c.0 } else { 0 }
+        });
 
         j1.join().unwrap();
         j2.join().unwrap();
@@ -91,11 +97,15 @@ pub fn test_simple_release() {
 
     unsafe {
         let j1 = spawn(move || {
+            let c = c; // avoid field capturing
             *c.0 = 1;
             SYNC.store(1, Ordering::Release);
         });
 
-        let j2 = spawn(move || if SYNC.load(Ordering::Acquire) == 1 { *c.0 } else { 0 });
+        let j2 = spawn(move || {
+            let c = c; // avoid field capturing
+            if SYNC.load(Ordering::Acquire) == 1 { *c.0 } else { 0 }
+        });
 
         j1.join().unwrap();
         assert_eq!(j2.join().unwrap(), 1); // relies on thread 2 going last
diff --git a/src/tools/miri/tests/pass/concurrency/disable_data_race_detector.rs b/src/tools/miri/tests/pass/concurrency/disable_data_race_detector.rs
index d71e51b0384..049b5e7f498 100644
--- a/src/tools/miri/tests/pass/concurrency/disable_data_race_detector.rs
+++ b/src/tools/miri/tests/pass/concurrency/disable_data_race_detector.rs
@@ -14,10 +14,12 @@ pub fn main() {
     let c = EvilSend(b);
     unsafe {
         let j1 = spawn(move || {
+            let c = c; // avoid field capturing
             *c.0 = 32;
         });
 
         let j2 = spawn(move || {
+            let c = c; // avoid field capturing
             *c.0 = 64; // Data race (but not detected as the detector is disabled)
         });
 
diff --git a/src/tools/miri/tests/pass/concurrency/sync.rs b/src/tools/miri/tests/pass/concurrency/sync.rs
index 3bd1e542407..dccc9d104dd 100644
--- a/src/tools/miri/tests/pass/concurrency/sync.rs
+++ b/src/tools/miri/tests/pass/concurrency/sync.rs
@@ -201,8 +201,10 @@ fn park_timeout() {
     thread::park_timeout(Duration::from_millis(200));
     // Normally, waiting in park/park_timeout may spuriously wake up early, but we
     // know Miri's timed synchronization primitives do not do that.
-
-    assert!((200..1000).contains(&start.elapsed().as_millis()));
+    // We allow much longer sleeps as well since the macOS GHA runners seem very oversubscribed
+    // and sometimes just pause for 1 second or more.
+    let elapsed = start.elapsed();
+    assert!((200..2000).contains(&elapsed.as_millis()), "bad sleep time: {elapsed:?}");
 }
 
 fn park_unpark() {
@@ -219,8 +221,10 @@ fn park_unpark() {
     thread::park();
     // Normally, waiting in park/park_timeout may spuriously wake up early, but we
     // know Miri's timed synchronization primitives do not do that.
-
-    assert!((200..1000).contains(&start.elapsed().as_millis()));
+    // We allow much longer sleeps as well since the macOS GHA runners seem very oversubscribed
+    // and sometimes just pause for 1 second or more.
+    let elapsed = start.elapsed();
+    assert!((200..2000).contains(&elapsed.as_millis()), "bad sleep time: {elapsed:?}");
 
     t2.join().unwrap();
 }
diff --git a/src/tools/miri/tests/pass/concurrency/thread_locals.rs b/src/tools/miri/tests/pass/concurrency/thread_locals.rs
index 13c11b55775..fc4c8a283dd 100644
--- a/src/tools/miri/tests/pass/concurrency/thread_locals.rs
+++ b/src/tools/miri/tests/pass/concurrency/thread_locals.rs
@@ -42,6 +42,7 @@ fn main() {
     };
 
     thread::spawn(move || unsafe {
+        let ptr = ptr; // avoid field capturing
         assert_eq!(*ptr.0, 5);
         assert_eq!(A, 0);
         assert_eq!(B, 0);
diff --git a/src/tools/miri/tests/pass/concurrency/windows_condvar_shared.rs b/src/tools/miri/tests/pass/concurrency/windows_condvar_shared.rs
index d89320bfe59..3b27af9094c 100644
--- a/src/tools/miri/tests/pass/concurrency/windows_condvar_shared.rs
+++ b/src/tools/miri/tests/pass/concurrency/windows_condvar_shared.rs
@@ -44,6 +44,8 @@ fn all_shared() {
     // waiters
     for i in 0..5 {
         handles.push(thread::spawn(move || {
+            let condvar_ptr = condvar_ptr; // avoid field capture
+            let lock_ptr = lock_ptr; // avoid field capture
             unsafe {
                 AcquireSRWLockShared(lock_ptr.0);
             }
@@ -71,6 +73,7 @@ fn all_shared() {
     // readers
     for i in 0..5 {
         handles.push(thread::spawn(move || {
+            let lock_ptr = lock_ptr; // avoid field capture
             unsafe {
                 AcquireSRWLockShared(lock_ptr.0);
             }
@@ -111,6 +114,8 @@ fn shared_sleep_and_exclusive_lock() {
     let mut waiters = Vec::with_capacity(5);
     for i in 0..5 {
         waiters.push(thread::spawn(move || {
+            let lock_ptr = lock_ptr; // avoid field capture
+            let condvar_ptr = condvar_ptr; // avoid field capture
             unsafe {
                 AcquireSRWLockShared(lock_ptr.0);
             }
@@ -170,6 +175,8 @@ fn exclusive_sleep_and_shared_lock() {
     let mut handles = Vec::with_capacity(10);
     for i in 0..5 {
         handles.push(thread::spawn(move || {
+            let lock_ptr = lock_ptr; // avoid field capture
+            let condvar_ptr = condvar_ptr; // avoid field capture
             unsafe {
                 AcquireSRWLockExclusive(lock_ptr.0);
             }
@@ -193,6 +200,7 @@ fn exclusive_sleep_and_shared_lock() {
 
     for i in 0..5 {
         handles.push(thread::spawn(move || {
+            let lock_ptr = lock_ptr; // avoid field capture
             unsafe {
                 AcquireSRWLockShared(lock_ptr.0);
             }
diff --git a/src/tools/miri/tests/pass/concurrency/windows_init_once.rs b/src/tools/miri/tests/pass/concurrency/windows_init_once.rs
index 4eb88379620..b2412f7dbb0 100644
--- a/src/tools/miri/tests/pass/concurrency/windows_init_once.rs
+++ b/src/tools/miri/tests/pass/concurrency/windows_init_once.rs
@@ -66,6 +66,7 @@ fn block_until_complete() {
     let init_once_ptr = SendPtr(&mut init_once);
 
     let waiter = move || unsafe {
+        let init_once_ptr = init_once_ptr; // avoid field capture
         let mut pending = 0;
 
         assert_eq!(InitOnceBeginInitialize(init_once_ptr.0, 0, &mut pending, null_mut()), TRUE);
@@ -102,6 +103,7 @@ fn retry_on_fail() {
     let init_once_ptr = SendPtr(&mut init_once);
 
     let waiter = move || unsafe {
+        let init_once_ptr = init_once_ptr; // avoid field capture
         let mut pending = 0;
 
         assert_eq!(InitOnceBeginInitialize(init_once_ptr.0, 0, &mut pending, null_mut()), TRUE);
@@ -146,6 +148,8 @@ fn no_data_race_after_complete() {
     let place_ptr = SendPtr(&mut place);
 
     let reader = thread::spawn(move || unsafe {
+        let init_once_ptr = init_once_ptr; // avoid field capture
+        let place_ptr = place_ptr; // avoid field capture
         let mut pending = 0;
 
         // this doesn't block because reader only executes after `InitOnceComplete` is called
diff --git a/src/tools/miri/tests/pass/panic/catch_panic.rs b/src/tools/miri/tests/pass/panic/catch_panic.rs
index 5d57df4e52b..1b00f7cea30 100644
--- a/src/tools/miri/tests/pass/panic/catch_panic.rs
+++ b/src/tools/miri/tests/pass/panic/catch_panic.rs
@@ -49,13 +49,12 @@ fn main() {
 
     // Std panics
     test(None, |_old_val| std::panic!("Hello from panic: std"));
-    test(None, |old_val| std::panic!(format!("Hello from panic: {:?}", old_val)));
+    test(None, |old_val| std::panic::panic_any(format!("Hello from panic: {:?}", old_val)));
     test(None, |old_val| std::panic!("Hello from panic: {:?}", old_val));
-    test(None, |_old_val| std::panic!(1337));
+    test(None, |_old_val| std::panic::panic_any(1337));
 
     // Core panics
     test(None, |_old_val| core::panic!("Hello from panic: core"));
-    test(None, |old_val| core::panic!(&format!("Hello from panic: {:?}", old_val)));
     test(None, |old_val| core::panic!("Hello from panic: {:?}", old_val));
 
     // Built-in panics; also make sure the message is right.
diff --git a/src/tools/miri/tests/pass/panic/catch_panic.stderr b/src/tools/miri/tests/pass/panic/catch_panic.stderr
index 0ced5588cc1..f43434582a2 100644
--- a/src/tools/miri/tests/pass/panic/catch_panic.stderr
+++ b/src/tools/miri/tests/pass/panic/catch_panic.stderr
@@ -11,8 +11,6 @@ thread 'main' panicked at 'Hello from panic: core', $DIR/catch_panic.rs:LL:CC
 Caught panic message (&str): Hello from panic: core
 thread 'main' panicked at 'Hello from panic: 5', $DIR/catch_panic.rs:LL:CC
 Caught panic message (String): Hello from panic: 5
-thread 'main' panicked at 'Hello from panic: 6', $DIR/catch_panic.rs:LL:CC
-Caught panic message (String): Hello from panic: 6
 thread 'main' panicked at 'index out of bounds: the len is 3 but the index is 4', $DIR/catch_panic.rs:LL:CC
 Caught panic message (String): index out of bounds: the len is 3 but the index is 4
 thread 'main' panicked at 'attempt to divide by zero', $DIR/catch_panic.rs:LL:CC
diff --git a/src/tools/miri/tests/pass/panic/concurrent-panic.rs b/src/tools/miri/tests/pass/panic/concurrent-panic.rs
index 776bc2057f3..7cc1e2a973f 100644
--- a/src/tools/miri/tests/pass/panic/concurrent-panic.rs
+++ b/src/tools/miri/tests/pass/panic/concurrent-panic.rs
@@ -57,7 +57,7 @@ fn main() {
         let t2_started_pair = t2_started_pair.clone();
         let block_on_drop = BlockOnDrop::new(t1);
         spawn(move || {
-            let _ = block_on_drop;
+            let _capture = block_on_drop;
 
             let (mutex, condvar) = &*t2_started_pair;
             *mutex.lock().unwrap() = true;