-
Notifications
You must be signed in to change notification settings - Fork 383
Open
Description
Description
System.ApplicationException: ETL file shows the start of a heap dump but not its completion.
when using dotnet-gcdump to dump a large managed heap。
.NET 5.0.403 Release
PS D:\> dotnet-gcdump collect -p 18796 -v
Writing gcdump to 'D:\20211125_171456_18796.gcdump'...
0.0s: Creating type table flushing task
0.0s: Flushing the type table
0.2s: Done flushing the type table
0.2s: Requesting a .NET Heap Dump
7.8s: gcdump EventPipe Session started
7.9s: Starting to process events
7.9s: .NET Dump Started...
Found a Gen2 Induced non-background GC Start at 0.232 msec GC Count 1623
8.0s: Making GC Heap Progress...
30.0s: Timed out after 30 seconds
30.0s: Shutting down gcdump EventPipe session
Found Module System.Private.CoreLib.dll ID 0x7ffdbb134020
Found Module PerformanceGC.dll ID 0x7ffdbb3127b8
Found Module System.Runtime.dll ID 0x7ffdbb314298
Found Module System.Linq.dll ID 0x7ffdbb343988
Found Module System.Console.dll ID 0x7ffdbb347278
Found Module System.Collections.dll ID 0x7ffdbb349068
Found Module System.Threading.dll ID 0x7ffdbb379748
Found Module System.Text.Encoding.Extensions.dll ID 0x7ffdbb37d9c8
30.2s: EventPipe Listener dying
31.0s: still reading...
31.5s: gcdump EventPipe session shut down
31.5s: gcdump EventPipe Session closed
31.5s: [Error] Exception during gcdump: System.ApplicationException: ETL file shows the start of a heap dump but not its completion.
at DotNetHeapDumpGraphReader.ConvertHeapDataToGraph() in /_/src/Tools/dotnet-gcdump/DotNetHeapDump/DotNetHeapDumpGraphReader.cs:line 711
at Microsoft.Diagnostics.Tools.GCDump.EventPipeDotNetHeapDumper.DumpFromEventPipe(CancellationToken ct, Int32 processID, MemoryGraph memoryGraph, TextWriter log, Int32 timeout, DotNetHeapInfo dotNetInfo) in /_/src/Tools/dotnet-gcdump/DotNetHeapDump/EventPipeDotNetHeapDumper.cs:line 205
[ 31.5s: Done Dumping .NET heap success=False]
Failed to collect gcdump. Try running with '-v' for more information.
Code
using System;
using System.Linq;
namespace PerformanceGC
{
class Program
{
static void Main(string[] args)
{
var data = Enumerable.Range(0, 1000).Select(i => new ValueObject()).ToArray();
Console.WriteLine(data.Length);
Console.ReadLine(); // Keep console open. use dotnet-gcdump
Console.WriteLine(data.Length);
}
}
public class ValueObject
{
public Data[] Objectes { get; set; }
public ValueObject()
{
Objectes = Enumerable.Range(0, 100).Select(i => new Data()).ToArray();
}
}
public class Data
{
public int[] DataArray { get; set; }
public string[] DataString { get; set; }
public Data()
{
var length = 8500;
DataArray = new int[length];
DataString = new string[length];
Array.Fill(DataArray, 1);
Array.Fill(DataString, "1000");
}
}
}
Configuration
PS D:\> dotnet --info
.NET SDK (反映任何 global.json):
Version: 6.0.100
Commit: 9e8b04bbff
运行时环境:
OS Name: Windows
OS Version: 10.0.22000
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\6.0.100\
Host (useful for support):
Version: 6.0.0
Commit: 4822e3c3aa
.NET SDKs installed:
2.1.818 [C:\Program Files\dotnet\sdk]
3.1.404 [C:\Program Files\dotnet\sdk]
5.0.102 [C:\Program Files\dotnet\sdk]
5.0.403 [C:\Program Files\dotnet\sdk]
6.0.100 [C:\Program Files\dotnet\sdk]
.NET runtimes installed:
Microsoft.AspNetCore.All 2.1.23 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.30 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.23 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.30 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.10 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.23 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.30 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.10 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.10 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 5.0.12 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
To install additional .NET runtimes or SDKs:
https://aka.ms/dotnet-download
PS D:\> dotnet tool list -g
包 ID 版本 命令
--------------------------------------------------------
dotnet-cnblog 1.4.1 dotnet-cnblog
dotnet-counters 5.0.152202 dotnet-counters
dotnet-dump 5.0.152202 dotnet-dump
dotnet-gcdump 5.0.251802 dotnet-gcdump
dotnet-sos 5.0.160202 dotnet-sos
dotnet-trace 5.0.152202 dotnet-trace
powershell 7.1.3 pwsh
upgrade-assistant 0.2.227701 upgrade-assistant