Skip to content

GCDump collection attempt results in OverflowException #3392

Description

@jander-msft

This dependency flow update from diagnostics into dotnet-monitor fails on all build legs when attempting to capture gcdump from a simple target process: dotnet/dotnet-monitor#2507

Exception information:

System.OverflowException : Arithmetic operation resulted in an overflow.
   at Graphs.Node.WriteCompressedInt(SegmentedMemoryStreamWriter writer, Int32 value)
   at Graphs.Graph.SetNode(NodeIndex nodeIndex, NodeTypeIndex typeIndex, Int32 sizeInBytes, GrowableArray`1 children)
   at DotNetHeapDumpGraphReader.ConvertHeapDataToGraph()
   at Microsoft.Diagnostics.Monitoring.EventPipe.EventGCDumpPipeline.OnEventSourceAvailable(EventPipeEventSource eventSource, Func`1 stopSessionAsync, CancellationToken token)
   at Microsoft.Diagnostics.Monitoring.EventPipe.DiagnosticsEventPipeProcessor.<>c__DisplayClass11_0.<<Process>b__1>d.MoveNext()
--- End of stack trace from previous location ---
   at Microsoft.Diagnostics.Monitoring.EventPipe.DiagnosticsEventPipeProcessor.Process(DiagnosticsClient client, TimeSpan duration, CancellationToken token)
   at Microsoft.Diagnostics.Monitoring.Pipeline.RunAsyncCore(CancellationToken token)
   at Microsoft.Diagnostics.Monitoring.Pipeline.RunAsyncCore(CancellationToken token)
   at Microsoft.Diagnostics.Monitoring.Pipeline.SafeExecuteTask(Func`1 acquireTask)
   at Microsoft.Diagnostics.Monitoring.WebApi.GCDumpUtilities.GetGCDumpAsync(IEndpointInfo endpointInfo, CancellationToken token) in /Users/runner/work/1/s/src/Microsoft.Diagnostics.Monitoring.WebApi/Utilities/GCDumpUtilities.cs:line 41
   at Microsoft.Diagnostics.Monitoring.WebApi.GCDumpUtilities.CaptureGCDumpAsync(IEndpointInfo endpointInfo, Stream targetStream, CancellationToken token) in /Users/runner/work/1/s/src/Microsoft.Diagnostics.Monitoring.WebApi/Utilities/GCDumpUtilities.cs:line 24
   at Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Actions.CollectGCDumpActionFactory.CollectGCDumpAction.<>c__DisplayClass3_0.<<ExecuteCoreAsync>b__0>d.MoveNext() in /Users/runner/work/1/s/src/Tools/dotnet-monitor/CollectionRules/Actions/CollectGCDumpAction.cs:line 70
--- End of stack trace from previous location ---
   at Microsoft.Diagnostics.Tools.Monitor.Egress.FileSystem.FileSystemEgressProvider.WriteFileAsync(Func`3 action, String filePath, CancellationToken token) in /Users/runner/work/1/s/src/Tools/dotnet-monitor/Egress/FileSystem/FileSystemEgressProvider.cs:line 102
   at Microsoft.Diagnostics.Tools.Monitor.Egress.FileSystem.FileSystemEgressProvider.EgressAsync(FileSystemEgressProviderOptions options, Func`3 action, EgressArtifactSettings artifactSettings, CancellationToken token) in /Users/runner/work/1/s/src/Tools/dotnet-monitor/Egress/FileSystem/FileSystemEgressProvider.cs:line 89
   at Microsoft.Diagnostics.Tools.Monitor.Egress.EgressService.EgressAsync(String providerName, Func`3 action, String fileName, String contentType, IEndpointInfo source, CollectionRuleMetadata collectionRuleMetadata, CancellationToken token) in /Users/runner/work/1/s/src/Tools/dotnet-monitor/Egress/EgressService.cs:line 79
   at Microsoft.Diagnostics.Monitoring.WebApi.EgressOperation.<>c__DisplayClass11_0.<<ExecuteAsync>b__0>d.MoveNext() in /Users/runner/work/1/s/src/Microsoft.Diagnostics.Monitoring.WebApi/Operation/EgressOperation.cs:line 67
--- End of stack trace from previous location ---
   at Microsoft.Diagnostics.Monitoring.WebApi.ExecutionHelper.InvokeAsync[T](Func`2 action, ILogger logger, CancellationToken token) in /Users/runner/work/1/s/src/Microsoft.Diagnostics.Monitoring.WebApi/ActionContextExtensions.cs:line 46
   at Microsoft.Diagnostics.Monitoring.WebApi.EgressOperation.ExecuteAsync(IServiceProvider serviceProvider, CancellationToken token) in /Users/runner/work/1/s/src/Microsoft.Diagnostics.Monitoring.WebApi/Operation/EgressOperation.cs:line 62
   at Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Actions.CollectGCDumpActionFactory.CollectGCDumpAction.ExecuteCoreAsync(TaskCompletionSource`1 startCompleteSource, CollectionRuleMetadata collectionRuleMetadata, CancellationToken token) in /Users/runner/work/1/s/src/Tools/dotnet-monitor/CollectionRules/Actions/CollectGCDumpAction.cs:line 79
   at Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Actions.CollectionRuleActionBase`1.ExecuteAsync(TaskCompletionSource`1 startCompletionSource, CollectionRuleMetadata collectionRuleMetadata, CancellationToken token) in /Users/runner/work/1/s/src/Tools/dotnet-monitor/CollectionRules/Actions/CollectionRuleActionBase.cs:line 79
   at Microsoft.Diagnostics.Tools.Monitor.TaskExtensions.WithCancellation(Task task, CancellationToken token) in /Users/runner/work/1/s/src/Tools/dotnet-monitor/TaskExtensions.cs:line 37
   at Microsoft.Diagnostics.Tools.Monitor.TaskExtensions.WithCancellation[T](Task`1 task, CancellationToken token) in /Users/runner/work/1/s/src/Tools/dotnet-monitor/TaskExtensions.cs:line 48
   at Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Actions.CollectionRuleActionBase`1.WaitForCompletionAsync(CancellationToken token) in /Users/runner/work/1/s/src/Tools/dotnet-monitor/CollectionRules/Actions/CollectionRuleActionBase.cs:line 69
   at Microsoft.Diagnostics.Monitoring.Tool.UnitTests.ActionTestsHelper.ExecuteAndDisposeAsync(ICollectionRuleAction action, TimeSpan timeout) in /Users/runner/work/1/s/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests/ActionTestsHelper.cs:line 144
   at Microsoft.Diagnostics.Monitoring.Tool.UnitTests.ActionTestsHelper.ExecuteAndDisposeAsync(ICollectionRuleAction action, TimeSpan timeout) in /Users/runner/work/1/s/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests/ActionTestsHelper.cs:line 149
   at Microsoft.Diagnostics.Monitoring.Tool.UnitTests.CollectGCDumpActionTests.<>c__DisplayClass5_1.<<CollectGCDumpAction_SuccessCore>b__2>d.MoveNext() in /Users/runner/work/1/s/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests/CollectGCDumpActionTests.cs:line 75
--- End of stack trace from previous location ---
   at Microsoft.Diagnostics.Monitoring.TestCommon.Runners.AppRunnerExtensions.ExecuteAsync(AppRunner runner, Func`1 func) in /Users/runner/work/1/s/src/Tests/Microsoft.Diagnostics.Monitoring.TestCommon/Runners/AppRunnerExtensions.cs:line 26
   at Microsoft.Diagnostics.Monitoring.TestCommon.Runners.AppRunnerExtensions.ExecuteAsync(AppRunner runner, Func`1 func) in /Users/runner/work/1/s/src/Tests/Microsoft.Diagnostics.Monitoring.TestCommon/Runners/AppRunnerExtensions.cs:line 40
   at Microsoft.Diagnostics.Monitoring.TestCommon.Runners.AppRunnerExtensions.ExecuteAsync(AppRunner runner, Func`1 func) in /Users/runner/work/1/s/src/Tests/Microsoft.Diagnostics.Monitoring.TestCommon/Runners/AppRunnerExtensions.cs:line 45
   at Microsoft.Diagnostics.Monitoring.Tool.UnitTests.CollectGCDumpActionTests.<>c__DisplayClass5_0.<<CollectGCDumpAction_SuccessCore>b__1>d.MoveNext() in /Users/runner/work/1/s/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests/CollectGCDumpActionTests.cs:line 69
--- End of stack trace from previous location ---
   at Microsoft.Diagnostics.Monitoring.Tool.UnitTests.CollectGCDumpActionTests.<>c__DisplayClass5_0.<<CollectGCDumpAction_SuccessCore>b__1>d.MoveNext() in /Users/runner/work/1/s/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests/CollectGCDumpActionTests.cs:line 69
--- End of stack trace from previous location ---
   at Microsoft.Diagnostics.Monitoring.Tool.UnitTests.TestHostHelper.CreateCollectionRulesHost(ITestOutputHelper outputHelper, Action`1 setup, Func`2 hostCallback, Action`1 servicesCallback, Action`1 loggingCallback, List`1 overrideSource) in /Users/runner/work/1/s/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests/TestHostHelper.cs:line 32
   at Microsoft.Diagnostics.Monitoring.Tool.UnitTests.TestHostHelper.CreateCollectionRulesHost(ITestOutputHelper outputHelper, Action`1 setup, Func`2 hostCallback, Action`1 servicesCallback, Action`1 loggingCallback, List`1 overrideSource) in /Users/runner/work/1/s/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests/TestHostHelper.cs:line 37
   at Microsoft.Diagnostics.Monitoring.Tool.UnitTests.CollectGCDumpActionTests.CollectGCDumpAction_SuccessCore(TargetFrameworkMoniker tfm) in /Users/runner/work/1/s/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests/CollectGCDumpActionTests.cs:line 48
   at Microsoft.Diagnostics.Monitoring.Tool.UnitTests.CollectGCDumpActionTests.Retry(Func`1 func, Int32 attemptCount) in /Users/runner/work/1/s/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests/CollectGCDumpActionTests.cs:line 112
--- End of stack trace from previous location ---

The last successful insertion was from this build of this change.

The build from which this is failing is this build of this change.

cc @dotnet/dotnet-monitor

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions