diff --git a/Cargo.lock b/Cargo.lock index e5ef56bb0de1..4b3516c54d5b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2748,9 +2748,9 @@ dependencies = [ [[package]] name = "ipc-channel" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55162cbe44dacbc0b4a66d1067c885a9d5975f068a432801bba0493e1ece7a51" +checksum = "3698b8affd5656032a074a7d40b3c2a29b71971f3e1ff6042b9d40724e20d97c" dependencies = [ "bincode", "crossbeam-channel", diff --git a/components/constellation/constellation.rs b/components/constellation/constellation.rs index f0a6c513d664..25ba57b04df4 100644 --- a/components/constellation/constellation.rs +++ b/components/constellation/constellation.rs @@ -2833,6 +2833,9 @@ where debug!("Asking compositor to complete shutdown."); self.compositor_proxy .send(ToCompositorMsg::ShutdownComplete); + + debug!("Shutting-down IPC router thread in constellation."); + ROUTER.shutdown(); } fn handle_pipeline_exited(&mut self, pipeline_id: PipelineId) { diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs index dd0f798fcecc..94aac4841dae 100644 --- a/components/script/script_thread.rs +++ b/components/script/script_thread.rs @@ -145,6 +145,7 @@ use script_traits::{ScriptToConstellationChan, TimerSchedulerMsg}; use script_traits::{TouchEventType, TouchId, UntrustedNodeAddress, WheelDelta}; use script_traits::{UpdatePipelineIdReason, WebrenderIpcSender, WindowSizeData, WindowSizeType}; use servo_atoms::Atom; +use servo_config::opts; use servo_url::{ImmutableOrigin, MutableOrigin, ServoUrl}; use std::borrow::Cow; use std::cell::Cell; @@ -2908,6 +2909,12 @@ impl ScriptThread { .as_ref() .map(|bhm| bhm.unregister()); + // If we're in multiprocess mode, shut-down the IPC router for this process. + if opts::multiprocess() { + debug!("Exiting IPC router thread in script thread."); + ROUTER.shutdown(); + } + debug!("Exited script thread."); }