diff --git a/lib/blackbox/src/blackbox.rs b/lib/blackbox/src/blackbox.rs index 031fed63ce..cc8a645eda 100644 --- a/lib/blackbox/src/blackbox.rs +++ b/lib/blackbox/src/blackbox.rs @@ -175,6 +175,11 @@ impl Blackbox { } } + /// Get the pid stored in session_id. + pub(crate) fn session_pid(&self) -> u32 { + (self.session_id & 0xffffff) as u32 + } + pub fn session_id(&self) -> u64 { self.session_id } diff --git a/lib/blackbox/src/singleton.rs b/lib/blackbox/src/singleton.rs index fe31a55392..057d432339 100644 --- a/lib/blackbox/src/singleton.rs +++ b/lib/blackbox/src/singleton.rs @@ -36,7 +36,11 @@ pub fn init(mut blackbox: Blackbox) { } } } - blackbox.session_id = old_blackbox.session_id; + + // Perserve session_id if pid hasn't been changed. + if blackbox.session_pid() == old_blackbox.session_pid() { + blackbox.session_id = old_blackbox.session_id; + } *singleton.deref_mut() = blackbox; }