Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

System.IndexOutOfRangeException: Index was outside the bounds of the array. #2921

Closed
mu88 opened this issue Apr 26, 2024 · 1 comment
Closed
Labels
Area: Mutating 🐛 Bug Something isn't working

Comments

@mu88
Copy link

mu88 commented Apr 26, 2024

Describe the bug

When running Stryker, it fails after some time with the following exception, but only for certain solutions:

System.IndexOutOfRangeException: Index was outside the bounds of the array.

Logs

10:23:37  + ./tools/dotnet-stryker --reporter Html --reporter cleartext --reporter json --mutation-level Complete --output StrykerOutput_MyApp --config-file stryker-config.json
10:23:37  
10:23:37     _____ _              _               _   _ ______ _______  
10:23:37    / ____| |            | |             | \ | |  ____|__   __| 
10:23:37   | (___ | |_ _ __ _   _| | _____ _ __  |  \| | |__     | |    
10:23:37    \___ \| __| '__| | | | |/ / _ \ '__| | . ` |  __|    | |    
10:23:37    ____) | |_| |  | |_| |   <  __/ |    | |\  | |____   | |    
10:23:37   |_____/ \__|_|   \__, |_|\_\___|_| (_)|_| \_|______|  |_|    
10:23:37                     __/ |                                      
10:23:37                    |___/                                       
10:23:37  
10:23:37  
10:23:37  Version: 4.0.4
10:23:37  
10:23:37  [08:23:37 INF] Analysis starting.
10:23:37  [08:23:37 INF] Identifying projects to mutate in /home/jenkins/agent/workspace/s_Utility_MutationTesting_master/my-app/Stryker.sln. This can take a while.
10:23:50  [08:23:48 INF] Found 3 source projects
10:23:50  [08:23:48 INF] Found 1 test projects
10:23:50  [08:23:48 INF] Found project /home/jenkins/agent/workspace/s_Utility_MutationTesting_master/my-app/tests/MyCompany.MyApp.Tests.Common/MyCompany.MyApp.Tests.Common.csproj to mutate.
10:23:50  [08:23:48 INF] Found project /home/jenkins/agent/workspace/s_Utility_MutationTesting_master/my-app/src/MyCompany.MyApp.Features/MyCompany.MyApp.Features.csproj to mutate.
10:23:50  [08:23:48 INF] Found project /home/jenkins/agent/workspace/s_Utility_MutationTesting_master/my-app/src/MyCompany.MyApp.Core/MyCompany.MyApp.Core.csproj to mutate.
10:23:50  [08:23:49 INF] Analysis complete.
10:23:50  [08:23:49 INF] Building solution Stryker.sln
10:24:08  [08:24:08 INF] Number of tests found: 971 for project /home/jenkins/agent/workspace/s_Utility_MutationTesting_master/my-app/tests/MyCompany.MyApp.Tests.Common/MyCompany.MyApp.Tests.Common.csproj. Initial test run started.
10:24:15  [08:24:15 INF] Number of tests found: 971 for project /home/jenkins/agent/workspace/s_Utility_MutationTesting_master/my-app/src/MyCompany.MyApp.Features/MyCompany.MyApp.Features.csproj. Initial test run started.
10:24:22  [08:24:22 INF] Number of tests found: 971 for project /home/jenkins/agent/workspace/s_Utility_MutationTesting_master/my-app/src/MyCompany.MyApp.Core/MyCompany.MyApp.Core.csproj. Initial test run started.
10:24:38  [08:24:35 ERR] An error occurred during the mutation test run 
10:24:38  System.AggregateException: One or more errors occurred. (Index was outside the bounds of the array.)
10:24:38   ---> System.IndexOutOfRangeException: Index was outside the bounds of the array.
10:24:38     at System.Collections.Generic.HashSet`1.AddIfNotPresent(T value, Int32& location)
10:24:38     at System.Collections.Generic.HashSet`1.Add(T item)
10:24:38     at Stryker.Core.Mutants.MutantPlacer.RegisterEngine(IInstrumentCode engine, Boolean requireRecursive)
10:24:38     at Stryker.Core.Mutants.CsharpNodeOrchestrators.BaseFunctionOrchestrator`1..ctor()
10:24:38     at Stryker.Core.Mutants.CsharpNodeOrchestrators.AnonymousFunctionExpressionOrchestrator..ctor()
10:24:38     at Stryker.Core.Mutants.CsharpMutantOrchestrator.BuildOrchestratorList()
10:24:38     at Stryker.Core.Mutants.CsharpMutantOrchestrator..ctor(MutantPlacer placer, IEnumerable`1 mutators, StrykerOptions options)
10:24:38     at Stryker.Core.MutationTest.CsharpMutationProcess.Mutate(MutationTestInput input)
10:24:38     at Stryker.Core.MutationTest.MutationTestProcess.Mutate()
10:24:38     at Stryker.Core.Initialisation.ProjectMutator.MutateProject(StrykerOptions options, MutationTestInput input, IReporter reporters)
10:24:38     at Stryker.Core.Initialisation.ProjectOrchestrator.<>c__DisplayClass7_0.<MutateProjects>b__0(MutationTestInput mutationTestInput)
10:24:38     at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`2.<ForWorker>b__1(RangeWorker& currentWorker, Int64 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
10:24:38  --- End of stack trace from previous location ---
10:24:38     at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`2.<ForWorker>b__1(RangeWorker& currentWorker, Int64 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
10:24:38     at System.Threading.Tasks.TaskReplicator.Replica.Execute()
10:24:38     --- End of inner exception stack trace ---
10:24:38     at System.Threading.Tasks.TaskReplicator.Run[TState](ReplicatableUserAction`1 action, ParallelOptions options, Boolean stopOnFirstFailure)
10:24:38     at System.Threading.Tasks.Parallel.ForWorker[TLocal,TInt](TInt fromInclusive, TInt toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
10:24:38  --- End of stack trace from previous location ---
10:24:38     at System.Threading.Tasks.Parallel.ForWorker[TLocal,TInt](TInt fromInclusive, TInt toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
10:24:38     at System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
10:24:38     at System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable`1 source, Action`1 body)
10:24:38     at Stryker.Core.Initialisation.ProjectOrchestrator.MutateProjects(StrykerOptions options, IReporter reporters, ITestRunner runner)
10:24:38     at Stryker.Core.StrykerRunner.RunMutationTest(IStrykerInputs inputs, ILoggerFactory loggerFactory, IProjectOrchestrator projectOrchestrator)
10:24:38  [08:24:35 INF] Time Elapsed 00:00:58.2697433
10:24:38  Unhandled exception. System.AggregateException: One or more errors occurred. (Index was outside the bounds of the array.)
10:24:38   ---> System.IndexOutOfRangeException: Index was outside the bounds of the array.
10:24:38     at System.Collections.Generic.HashSet`1.AddIfNotPresent(T value, Int32& location)
10:24:38     at System.Collections.Generic.HashSet`1.Add(T item)
10:24:38     at Stryker.Core.Mutants.MutantPlacer.RegisterEngine(IInstrumentCode engine, Boolean requireRecursive)
10:24:38     at Stryker.Core.Mutants.CsharpNodeOrchestrators.BaseFunctionOrchestrator`1..ctor()
10:24:38     at Stryker.Core.Mutants.CsharpNodeOrchestrators.AnonymousFunctionExpressionOrchestrator..ctor()
10:24:38     at Stryker.Core.Mutants.CsharpMutantOrchestrator.BuildOrchestratorList()
10:24:38     at Stryker.Core.Mutants.CsharpMutantOrchestrator..ctor(MutantPlacer placer, IEnumerable`1 mutators, StrykerOptions options)
10:24:38     at Stryker.Core.MutationTest.CsharpMutationProcess.Mutate(MutationTestInput input)
10:24:38     at Stryker.Core.MutationTest.MutationTestProcess.Mutate()
10:24:38     at Stryker.Core.Initialisation.ProjectMutator.MutateProject(StrykerOptions options, MutationTestInput input, IReporter reporters)
10:24:38     at Stryker.Core.Initialisation.ProjectOrchestrator.<>c__DisplayClass7_0.<MutateProjects>b__0(MutationTestInput mutationTestInput)
10:24:38     at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`2.<ForWorker>b__1(RangeWorker& currentWorker, Int64 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
10:24:38  --- End of stack trace from previous location ---
10:24:38     at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`2.<ForWorker>b__1(RangeWorker& currentWorker, Int64 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
10:24:38     at System.Threading.Tasks.TaskReplicator.Replica.Execute()
10:24:38     --- End of inner exception stack trace ---
10:24:38     at System.Threading.Tasks.TaskReplicator.Run[TState](ReplicatableUserAction`1 action, ParallelOptions options, Boolean stopOnFirstFailure)
10:24:38     at System.Threading.Tasks.Parallel.ForWorker[TLocal,TInt](TInt fromInclusive, TInt toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
10:24:38  --- End of stack trace from previous location ---
10:24:38     at System.Threading.Tasks.Parallel.ForWorker[TLocal,TInt](TInt fromInclusive, TInt toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
10:24:38     at System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
10:24:38     at System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable`1 source, Action`1 body)
10:24:38     at Stryker.Core.Initialisation.ProjectOrchestrator.MutateProjects(StrykerOptions options, IReporter reporters, ITestRunner runner)
10:24:38     at Stryker.Core.StrykerRunner.RunMutationTest(IStrykerInputs inputs, ILoggerFactory loggerFactory, IProjectOrchestrator projectOrchestrator)
10:24:38     at Stryker.CLI.StrykerCli.RunStryker(IStrykerInputs inputs) in /_/src/Stryker.CLI/Stryker.CLI/StrykerCLI.cs:line 102
10:24:38     at Stryker.CLI.StrykerCli.<>c__DisplayClass11_0.<Run>b__0() in /_/src/Stryker.CLI/Stryker.CLI/StrykerCLI.cs:line 74
10:24:38     at McMaster.Extensions.CommandLineUtils.CommandLineApplication.<>c__DisplayClass143_0.<OnExecute>b__0(CancellationToken _)
10:24:38     at McMaster.Extensions.CommandLineUtils.CommandLineApplication.ExecuteAsync(String[] args, CancellationToken cancellationToken)
10:24:38     at McMaster.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)
10:24:38     at Stryker.CLI.StrykerCli.Run(String[] args) in /_/src/Stryker.CLI/Stryker.CLI/StrykerCLI.cs:line 80
10:24:38     at Stryker.CLI.Program.Main(String[] args) in /_/src/Stryker.CLI/Stryker.CLI/Program.cs:line 14
10:24:38  Aborted (core dumped)

Expected behavior

No error should be thrown as it used to work nicely on previous versions.

Desktop (please complete the following information):

  • OS: [e.g. Windows]: Jenkins running on Linux
  • Type of project [framework, core, xamarin]: core
  • Framework Version [e.g. core 2.2]: .NET 8
  • Stryker Version [e.g. beta 0.10.0]: 4.0.4

Additional context

Running it locally on my dev laptop, I cannot reproduce the issue. I temporarily moved back to 4.0.3 on Jenkins which seems to mitigate the issue.

@mu88 mu88 added the 🐛 Bug Something isn't working label Apr 26, 2024
@dupdob
Copy link
Member

dupdob commented May 30, 2024

this problem should have been fixed by recent releases (4.0.5 or 4.0.6)
I close this issue under this assumption. Please reopen it if the problem is still present

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: Mutating 🐛 Bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants