From f1e61c87b4065833457eb4e5f996344b4cc6b9a3 Mon Sep 17 00:00:00 2001 From: Arkadiy Paronyan Date: Tue, 8 Nov 2016 21:07:18 +0100 Subject: [PATCH] Fixed IO service shutdown (#3286) --- util/io/src/service.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/util/io/src/service.rs b/util/io/src/service.rs index da2e653ec..965a7d08e 100644 --- a/util/io/src/service.rs +++ b/util/io/src/service.rs @@ -433,6 +433,9 @@ impl IoService where Message: Send + Sync + Clone + 'static { impl Drop for IoService where Message: Send + Sync + Clone { fn drop(&mut self) { trace!(target: "shutdown", "[IoService] Closing..."); + // Clear handlers so that shared pointers are not stuck on stack + // in Channel::send_sync + self.handlers.write().clear(); self.host_channel.lock().send(IoMessage::Shutdown).unwrap_or_else(|e| warn!("Error on IO service shutdown: {:?}", e)); if let Some(thread) = self.thread.take() { thread.join().unwrap_or_else(|e| {