From b2d1617e44ad62421aa06f2f09c57f30cd9f4fac Mon Sep 17 00:00:00 2001 From: ta264 Date: Sun, 16 Aug 2020 21:49:46 +0100 Subject: [PATCH] Disable single instance check for integration tests Causes a SIGABRT on mono 6.10 and 6.12 - double free or corruption --- src/NzbDrone.Common/EnvironmentInfo/StartupContext.cs | 1 + src/NzbDrone.Common/Processes/ProcessProvider.cs | 2 -- src/NzbDrone.Host/Bootstrap.cs | 5 +++++ src/NzbDrone.Test.Common/NzbDroneRunner.cs | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/NzbDrone.Common/EnvironmentInfo/StartupContext.cs b/src/NzbDrone.Common/EnvironmentInfo/StartupContext.cs index 62c3f7787..e778d1879 100644 --- a/src/NzbDrone.Common/EnvironmentInfo/StartupContext.cs +++ b/src/NzbDrone.Common/EnvironmentInfo/StartupContext.cs @@ -24,6 +24,7 @@ namespace NzbDrone.Common.EnvironmentInfo public const string TERMINATE = "terminateexisting"; public const string RESTART = "restart"; public const string REGISTER_URL = "registerurl"; + public const string NO_SINGLE_INSTANCE_CHECK = "nosingleinstancecheck"; public StartupContext(params string[] args) { diff --git a/src/NzbDrone.Common/Processes/ProcessProvider.cs b/src/NzbDrone.Common/Processes/ProcessProvider.cs index 6c826763f..d29d63d66 100644 --- a/src/NzbDrone.Common/Processes/ProcessProvider.cs +++ b/src/NzbDrone.Common/Processes/ProcessProvider.cs @@ -340,8 +340,6 @@ namespace NzbDrone.Common.Processes //TODO: move this to an OS specific class var monoProcesses = Process.GetProcessesByName("mono") .Union(Process.GetProcessesByName("mono-sgen")) - .Union(Process.GetProcessesByName("mono-sgen32")) - .Union(Process.GetProcessesByName("mono-sgen64")) .Where(process => process.Modules.Cast() .Any(module => diff --git a/src/NzbDrone.Host/Bootstrap.cs b/src/NzbDrone.Host/Bootstrap.cs index f6b6e7b69..9355701c5 100644 --- a/src/NzbDrone.Host/Bootstrap.cs +++ b/src/NzbDrone.Host/Bootstrap.cs @@ -93,6 +93,11 @@ namespace NzbDrone.Host private static void EnsureSingleInstance(bool isService, IStartupContext startupContext) { + if (startupContext.Flags.Contains(StartupContext.NO_SINGLE_INSTANCE_CHECK)) + { + return; + } + var instancePolicy = _container.Resolve(); if (startupContext.Flags.Contains(StartupContext.TERMINATE)) diff --git a/src/NzbDrone.Test.Common/NzbDroneRunner.cs b/src/NzbDrone.Test.Common/NzbDroneRunner.cs index 713101a71..2e2ac753a 100644 --- a/src/NzbDrone.Test.Common/NzbDroneRunner.cs +++ b/src/NzbDrone.Test.Common/NzbDroneRunner.cs @@ -145,7 +145,7 @@ namespace NzbDrone.Test.Common { TestContext.Progress.WriteLine("Starting instance from {0} on port {1}", outputNzbdroneConsoleExe, Port); - var args = "-nobrowser -data=\"" + AppData + "\""; + var args = "-nobrowser -nosingleinstancecheck -data=\"" + AppData + "\""; _nzbDroneProcess = _processProvider.Start(outputNzbdroneConsoleExe, args, null, OnOutputDataReceived, OnOutputDataReceived); }