From 00dd5d29f214b4eb8041eabb3e733554fb4da1b6 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Tue, 7 Aug 2018 20:17:46 -0400 Subject: [PATCH] Catch occasional InvalidOperationException in Session lifetimeTask --- .../Components/Watchdog/Session.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Tgstation.Server.Host/Components/Watchdog/Session.cs b/src/Tgstation.Server.Host/Components/Watchdog/Session.cs index b585b32315..a26f14e130 100644 --- a/src/Tgstation.Server.Host/Components/Watchdog/Session.cs +++ b/src/Tgstation.Server.Host/Components/Watchdog/Session.cs @@ -57,8 +57,16 @@ namespace Tgstation.Server.Host.Components.Watchdog return result; }, default, TaskCreationOptions.LongRunning, TaskScheduler.Current); lifetimeTask = new TaskCompletionSource(); - process.EnableRaisingEvents = true; - process.Exited += (a, b) => lifetimeTask.SetResult(process.ExitCode); + try + { + process.EnableRaisingEvents = true; + process.Exited += (a, b) => lifetimeTask.TrySetResult(process.ExitCode); + } + catch (InvalidOperationException) + { + //dead proccess + lifetimeTask.TrySetResult(process.ExitCode); + } } ///