I'm having trouble finding good documentation for the gcroot command as it applies to .NET core code so it's making it hard to follow some very weird gcroot output I have.
Below you'll see the top part of the output I'm talking about and the very weird route it takes. I didn't post the entire thing as it just keeps being very weird but is there some sort of logic one can use to figure out which of these actually apply? It almost looks like things that both reference the same thing are being included on the path.
rbp-8: 00007ffcdac29f18
-> 00007F47D41DDCA8 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib],[Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions+<RunAsync>d__4, Microsoft.Extensions.Hosting.Abstractions]]
-> 00007F48D40E9560 Microsoft.Extensions.Hosting.Internal.Host
-> 00007F48D40E8380 Microsoft.Extensions.Logging.Logger`1[[Microsoft.Extensions.Hosting.Internal.Host, Microsoft.Extensions.Hosting]]
-> 00007F48D40E8478 Microsoft.Extensions.Logging.Logger
-> 00007F48D40E84A0 Microsoft.Extensions.Logging.LoggerInformation[]
-> 00007F48D40E8718 NLog.Extensions.Logging.NLogLogger
-> 00007F48D40E8500 NLog.Logger
-> 00007F48D40E86E0 NLog.Internal.LoggerConfiguration
-> 00007F48D40E8548 NLog.Internal.TargetWithFilterChain[]
-> 00007F48D40E8590 NLog.Internal.TargetWithFilterChain
-> 00007F47D4102560 NLog.Targets.Wrappers.AsyncTargetWrapper
-> 00007F47D4159DD0 System.Collections.Generic.List`1[[NLog.Layouts.Layout, NLog]]
-> 00007F47D4159DF0 NLog.Layouts.Layout[]
-> 00007F47D4102268 NLog.Layouts.SimpleLayout
-> 00007F47D40F1E48 NLog.Config.XmlLoggingConfiguration
-> 00007F47D40F1F28 System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib],[NLog.Targets.Target, NLog]]
-> 00007F47D411DC68 System.Collections.Generic.Dictionary`2+Entry[[System.String, System.Private.CoreLib],[NLog.Targets.Target, NLog]][]
-> 00007F47D410D798 NLog.Targets.Wrappers.AsyncTargetWrapper
-> 00007F47D4103BE0 NLog.Targets.FileTarget
-> 00007F47D412C038 NLog.Internal.FileAppenders.FileAppenderCache
-> 00007F47D412C180 System.Threading.Timer
-> 00007F47D412C1F8 System.Threading.TimerHolder
-> 00007F47D412C198 System.Threading.TimerQueueTimer
-> 00007F47D4049098 System.Threading.TimerQueue
-> 00007F4824900220 System.Threading.TimerQueueTimer
-> 00007F47D4048FC0 System.Threading.TimerQueueTimer
-> 00007F482732D6B8 System.Threading.TimerQueueTimer
-> 00007F492797C860 System.Threading.TimerQueueTimer
-> 00007F4927978F28 System.Threading.TimerQueueTimer
-> 00007F47D48F1BD8 System.Threading.TimerQueueTimer
-> 00007F4924F62E10 System.Threading.TimerQueueTimer
-> 00007F492735E210 System.Threading.TimerQueueTimer
-> 00007F47D40DF710 System.Threading.TimerQueueTimer
-> 00007F4926FE91F8 System.Threading.TimerQueueTimer
-> 00007F4926FE71D8 System.Threading.TimerQueueTimer
-> 00007F482662DA08 System.Threading.TimerQueueTimer
-> 00007F49215F3B70 System.Threading.TimerQueueTimer
-> 00007F48D41C20E0 System.Threading.TimerQueueTimer
-> 00007F48252EEAF0 System.Threading.TimerQueueTimer
-> 00007F48D80F1E48 System.Threading.TimerQueueTimer
-> 00007F481925FC30 System.Threading.TimerQueueTimer
-> 00007F481925FBD8 System.Threading.TimerCallback
-> 00007F481925F080 Microsoft.Data.ProviderBase.DbConnectionPool
-> 00007F47D48F1A70 Microsoft.Data.SqlClient.SqlConnectionFactory
-> 00007F492795E7A8 System.Collections.Generic.Dictionary`2[[Microsoft.Data.Common.DbConnectionPoolKey, Microsoft.Data.SqlClient],[Microsoft.Data.ProviderBase.DbConnectionPoolGroup, Microsoft.Data.SqlClient]]
-> 00007F492795E820 System.Collections.Generic.Dictionary`2+Entry[[Microsoft.Data.Common.DbConnectionPoolKey, Microsoft.Data.SqlClient],[Microsoft.Data.ProviderBase.DbConnectionPoolGroup, Microsoft.Data.SqlClient]][]
-> 00007F47D48F3D38 Microsoft.Data.ProviderBase.DbConnectionPoolGroup
<snip>