Skip to content

Commit

Permalink
fix: prevent optimize of try_lock in park.rs leading to race conditio…
Browse files Browse the repository at this point in the history
…ns (#6355)

* Fixes segfault in park_timeout() on riscv64
  • Loading branch information
leso-kn committed Feb 17, 2024
1 parent b32826b commit d308180
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion tokio/src/runtime/scheduler/multi_thread/park.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ use crate::util::TryLock;

use std::sync::atomic::Ordering::SeqCst;
use std::time::Duration;
use std::hint::black_box;

pub(crate) struct Parker {
inner: Arc<Inner>,
Expand Down Expand Up @@ -71,7 +72,7 @@ impl Parker {
// Only parking with zero is supported...
assert_eq!(duration, Duration::from_millis(0));

if let Some(mut driver) = self.inner.shared.driver.try_lock() {
if let Some(mut driver) = black_box(self.inner.shared.driver.try_lock()) {
driver.park_timeout(handle, duration);
}
}
Expand Down

0 comments on commit d308180

Please sign in to comment.