From 826238503f66b58417536ad5879e69e4f23fa775 Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Fri, 22 Jul 2022 10:09:22 +0900 Subject: [PATCH 1/2] Fix clippy::explicit_auto_deref warning ``` warning: deref which would be done by auto-deref --> crossbeam-epoch/src/atomic.rs:1715:43 | 1715 | let arr: &[MaybeUninit] = &*owned; | ^^^^^^ help: try this: `owned` | = note: `#[warn(clippy::explicit_auto_deref)]` on by default = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref warning: deref which would be done by auto-deref --> crossbeam-skiplist/src/base.rs:1045:21 | 1045 | (*n).refs_and_height | ^^^^ help: try this: `n` | = note: `#[warn(clippy::explicit_auto_deref)]` on by default = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref ``` --- crossbeam-epoch/src/atomic.rs | 2 +- crossbeam-skiplist/src/base.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/crossbeam-epoch/src/atomic.rs b/crossbeam-epoch/src/atomic.rs index 894ae15aa..7aa314c21 100644 --- a/crossbeam-epoch/src/atomic.rs +++ b/crossbeam-epoch/src/atomic.rs @@ -1712,7 +1712,7 @@ mod tests { #[test] fn array_init() { let owned = Owned::<[MaybeUninit]>::init(10); - let arr: &[MaybeUninit] = &*owned; + let arr: &[MaybeUninit] = &owned; assert_eq!(arr.len(), 10); } } diff --git a/crossbeam-skiplist/src/base.rs b/crossbeam-skiplist/src/base.rs index 72861643c..403690fad 100644 --- a/crossbeam-skiplist/src/base.rs +++ b/crossbeam-skiplist/src/base.rs @@ -1042,7 +1042,7 @@ where } // Installation failed. Decrement the reference count. - (*n).refs_and_height + n.refs_and_height .fetch_sub(1 << HEIGHT_BITS, Ordering::Relaxed); // We don't have the most up-to-date search results. Repeat the search. From 371de8c2d304db07662450995848f3dc9598ac99 Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Fri, 22 Jul 2022 10:12:45 +0900 Subject: [PATCH 2/2] Miri: Fix thread leaks in doctests in utils --- ci/miri.sh | 3 +-- crossbeam-utils/src/backoff.rs | 2 ++ crossbeam-utils/src/sync/parker.rs | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ci/miri.sh b/ci/miri.sh index 9c747ab24..50b19b9e5 100755 --- a/ci/miri.sh +++ b/ci/miri.sh @@ -9,8 +9,7 @@ echo export RUSTFLAGS="${RUSTFLAGS:-} -Z randomize-layout" -# -Zmiri-ignore-leaks is needed because we use detached threads in tests/docs: https://github.com/rust-lang/miri/issues/1371 -MIRIFLAGS="-Zmiri-symbolic-alignment-check -Zmiri-disable-isolation -Zmiri-ignore-leaks" \ +MIRIFLAGS="-Zmiri-symbolic-alignment-check -Zmiri-disable-isolation" \ cargo miri test \ -p crossbeam-queue \ -p crossbeam-utils 2>&1 | ts -i '%.s ' diff --git a/crossbeam-utils/src/backoff.rs b/crossbeam-utils/src/backoff.rs index 1012f06b2..9e256aaf2 100644 --- a/crossbeam-utils/src/backoff.rs +++ b/crossbeam-utils/src/backoff.rs @@ -201,6 +201,7 @@ impl Backoff { /// assert_eq!(ready.load(SeqCst), false); /// spin_wait(&ready); /// assert_eq!(ready.load(SeqCst), true); + /// # std::thread::sleep(std::time::Duration::from_millis(500)); // wait for background threads closed: https://github.com/rust-lang/miri/issues/1371 /// ``` /// /// [`AtomicBool`]: std::sync::atomic::AtomicBool @@ -269,6 +270,7 @@ impl Backoff { /// assert_eq!(ready.load(SeqCst), false); /// blocking_wait(&ready); /// assert_eq!(ready.load(SeqCst), true); + /// # std::thread::sleep(std::time::Duration::from_millis(500)); // wait for background threads closed: https://github.com/rust-lang/miri/issues/1371 /// ``` /// /// [`AtomicBool`]: std::sync::atomic::AtomicBool diff --git a/crossbeam-utils/src/sync/parker.rs b/crossbeam-utils/src/sync/parker.rs index 531f5a5fc..666f1a584 100644 --- a/crossbeam-utils/src/sync/parker.rs +++ b/crossbeam-utils/src/sync/parker.rs @@ -44,6 +44,7 @@ use std::time::{Duration, Instant}; /// /// // Wakes up when `u.unpark()` provides the token. /// p.park(); +/// # std::thread::sleep(std::time::Duration::from_millis(500)); // wait for background threads closed: https://github.com/rust-lang/miri/issues/1371 /// ``` /// /// [`park`]: Parker::park @@ -241,6 +242,7 @@ impl Unparker { /// /// // Wakes up when `u.unpark()` provides the token. /// p.park(); + /// # std::thread::sleep(std::time::Duration::from_millis(500)); // wait for background threads closed: https://github.com/rust-lang/miri/issues/1371 /// ``` /// /// [`park`]: Parker::park