From 4f46ac663767b417c6d94524ed3fa11701c22a89 Mon Sep 17 00:00:00 2001 From: Eliza Weisman Date: Tue, 3 Dec 2019 11:02:32 -0800 Subject: [PATCH] task: clear LocalSet's remote queue on drop Fixes #1885 Signed-off-by: Eliza Weisman --- tokio/src/task/local.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tokio/src/task/local.rs b/tokio/src/task/local.rs index c9e75a25f..b0e5b9d98 100644 --- a/tokio/src/task/local.rs +++ b/tokio/src/task/local.rs @@ -481,6 +481,15 @@ impl fmt::Debug for Scheduler { impl Drop for Scheduler { fn drop(&mut self) { + // Close the remote queue + let mut lock = self.remote_queue.lock().unwrap(); + + while let Some(task) = lock.pop_front() { + task.shutdown(); + } + + drop(lock); + // Drain all local tasks while let Some(task) = self.next_local_task() { task.shutdown();