-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Description
Version Used:
Latest Official DotNet 6 Preview 6
Latest VS previews: VS 2019 16.11 Preview 3 and VS 2022 Preview 2
C#: 10 (<LangVersion>preview</LangVersion>
, including global using
s in a few places)
Steps to Reproduce:
VS typing performance quickly degrades (hangs, up to several seconds pauses between characters typing, etc.) after working with several cs
files for like 20 minutes or more in the context of a medium-sized DotNet 6 Preview 6 solution with maybe 70 projects, each with ~ 10 to 500 files.
It started with DotNet6 Preview 5, which made VS 2019 run out of memory pretty quickly (GC was happening so often, that basically after about 1 hour of typing in a few files, it became unusable due to constant GC pauses, and VS's Private Bytes being near 2.5GB).
VS 2022 in this regard was very timely, but it did not improve things much. The performance is better compared with 2019, because GCs happen much more rarely and not as aggressively, but there are still very frequent hangs and slowdowns that happen more and more often as time goes on. This is actually happening while doing very mundane things - for example just editing a few 500-line files in an hour, perhaps renaming a few variables, etc. Nothing super-heavy like editing 100s of files, or refactoring whole namespaces, etc.
So I investigated this and came to conclude that Microsoft.CodeAnalysis
was always the culprit.
Evidence: Stack Traces
First, in both VS 2019 and 2022, when I was examining stack traces of VS's threads during slowdowns, I saw references to Microsoft.CodeAnalysis.SourceGener*
types all the time:
0, ntoskrnl.exe!KeWaitForSingleObject+0x30c1
1, ntoskrnl.exe!KeSynchronizeExecution+0x2e02
2, ntdll.dll!RtlAllocateHeap+0xca3
3, ntdll.dll!RtlAllocateHeap+0x16b
4, guard64.dll!Exported+0x1e20
5, clr.dll!CoUninitializeEE+0xa1a
6, clr.dll!CoUninitializeEE+0xb14
7, clr.dll!LogHelp_NoGuiOnAssert+0x6753a
8, clr.dll!LogHelp_NoGuiOnAssert+0x67b33
9, clr.dll!TranslateSecurityAttributes+0x1c13e7
10, System.Reflection.AssemblyName.GetAssemblyName(System.String) + 0x6a <-- mscorlib.ni.dll+0x5a806a
11, System.Linq.Enumerable.ToDictionary[[System.__Canon, mscorlib],[System.__Canon, mscorlib],[System.__Canon, mscorlib]](System.Collections.Generic.IEnumerable`1<System.__Canon>, System.Func`2<System.__Canon,System.__Canon>, System.Func`2<System.__Canon,System.__Canon>, System.Collections.Generic.IEqualityComparer`1<System.__Canon>) + 0xfb <-- System.Core.ni.dll+0x34282b
12, System.Text.Json.SourceGeneration.Reflection.MetadataLoadContextInternal..ctor(Microsoft.CodeAnalysis.Compilation) + 0x197 <-- 0x7ffa768141c7
13, System.Text.Json.SourceGeneration.JsonSourceGenerator+Parser..ctor(Microsoft.CodeAnalysis.GeneratorExecutionContext ByRef) + 0xfd <-- 0x7ffa76813d4d
14, System.Text.Json.SourceGeneration.JsonSourceGenerator.Execute(Microsoft.CodeAnalysis.GeneratorExecutionContext) + 0x60 <-- 0x7ffa76813b20
15, Microsoft.CodeAnalysis.SourceGeneratorAdaptor.<Initialize>b__4_5(Microsoft.CodeAnalysis.SourceProductionContext, GeneratorContextBuilder) + 0xf2 <-- 0x7ffa762983e2
16, Microsoft.CodeAnalysis.UserFunctionExtensions+<>c__DisplayClass3_0`2[[Microsoft.CodeAnalysis.SourceProductionContext, Microsoft.CodeAnalysis],[System.__Canon, mscorlib]].<WrapUserAction>b__0(Microsoft.CodeAnalysis.SourceProductionContext, System.__Canon) + 0x23 <-- 0x7ffa76298213
17, Microsoft.CodeAnalysis.SourceOutputNode`1[[System.__Canon, mscorlib]].UpdateStateTable(Builder, Microsoft.CodeAnalysis.NodeStateTable`1<System.ValueTuple`2<System.Collections.Generic.IEnumerable`1<Microsoft.CodeAnalysis.GeneratedSourceText>,System.Collections.Generic.IEnumerable`1<Microsoft.CodeAnalysis.Diagnostic>>>, System.Threading.CancellationToken) + 0x205 <-- 0x7ffa7627ff55
18, Microsoft.CodeAnalysis.DriverStateTable+Builder.GetLatestStateTableForNode[[System.ValueTuple`2[[System.__Canon, mscorlib],[System.__Canon, mscorlib]], mscorlib]](Microsoft.CodeAnalysis.IIncrementalGeneratorNode`1<System.ValueTuple`2<System.__Canon,System.__Canon>>) + 0x12e <-- 0x7ffa7627cdfe
19, Microsoft.CodeAnalysis.SourceOutputNode`1[[System.__Canon, mscorlib]].AppendOutputs(Microsoft.CodeAnalysis.IncrementalExecutionContext, System.Threading.CancellationToken) + 0x4d <-- 0x7ffa7627b8ad
20, Microsoft.CodeAnalysis.GeneratorDriver.RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation, Microsoft.CodeAnalysis.DiagnosticBag, System.Threading.CancellationToken) + 0xb34 <-- 0x7ffa76276114
21, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<FinalizeCompilationAsync>d__30.MoveNext() + 0xd76 <-- 0x7ffa750e0d46
22, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+CompilationInfo, Microsoft.CodeAnalysis.Workspaces]].Start[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<FinalizeCompilationAsync>d__30, Microsoft.CodeAnalysis.Workspaces]](<FinalizeCompilationAsync>d__30 ByRef) + 0x87 <-- 0x7ffa750df617
23, Microsoft.CodeAnalysis.SolutionState+CompilationTracker.FinalizeCompilationAsync(Microsoft.CodeAnalysis.SolutionState, Microsoft.CodeAnalysis.Compilation, System.Nullable`1<Microsoft.CodeAnalysis.TextDocumentStates`1<Microsoft.CodeAnalysis.SourceGeneratedDocumentState>>, Microsoft.CodeAnalysis.TextDocumentStates`1<Microsoft.CodeAnalysis.SourceGeneratedDocumentState>, Microsoft.CodeAnalysis.Compilation, Microsoft.CodeAnalysis.GeneratorDriver, System.Threading.CancellationToken) + 0xc4 <-- 0x7ffa750df3d4
24, Microsoft.CodeAnalysis.SolutionState+CompilationTracker.BuildCompilationInfoAsync(Microsoft.CodeAnalysis.SolutionState, System.Threading.CancellationToken) + 0x327 <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x7dead7
25, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetOrBuildCompilationInfoAsync>d__22.MoveNext() + 0x4d3 <-- 0x7ffa750d8d23
26, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+CompilationInfo, Microsoft.CodeAnalysis.Workspaces]].Start[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetOrBuildCompilationInfoAsync>d__22, Microsoft.CodeAnalysis.Workspaces]](<GetOrBuildCompilationInfoAsync>d__22 ByRef) + 0x87 <-- 0x7ffa750d8337
27, Microsoft.CodeAnalysis.SolutionState+CompilationTracker.GetOrBuildCompilationInfoAsync(Microsoft.CodeAnalysis.SolutionState, Boolean, System.Threading.CancellationToken) + 0x62 <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x7de792
28, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetCompilationSlowAsync>d__20.MoveNext() + 0x6a <-- 0x7ffa750d805a
29, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib]].Start[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetCompilationSlowAsync>d__20, Microsoft.CodeAnalysis.Workspaces]](<GetCompilationSlowAsync>d__20 ByRef) + 0x81 <-- 0x7ffa750d7f81
30, Microsoft.CodeAnalysis.SolutionState+CompilationTracker.GetCompilationSlowAsync(Microsoft.CodeAnalysis.SolutionState, System.Threading.CancellationToken) + 0x5e <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x7de70e
31, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetMetadataReferenceAsync>d__31.MoveNext() + 0x11c <-- 0x7ffa761e159c
32, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib]].Start[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetMetadataReferenceAsync>d__31, Microsoft.CodeAnalysis.Workspaces]](<GetMetadataReferenceAsync>d__31 ByRef) + 0x81 <-- 0x7ffa761e1411
33, Microsoft.CodeAnalysis.SolutionState+CompilationTracker.GetMetadataReferenceAsync(Microsoft.CodeAnalysis.SolutionState, Microsoft.CodeAnalysis.ProjectState, Microsoft.CodeAnalysis.ProjectReference, System.Threading.CancellationToken) + 0x73 <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x7ded23
34, Microsoft.CodeAnalysis.SolutionState.GetMetadataReferenceAsync(Microsoft.CodeAnalysis.ProjectReference, Microsoft.CodeAnalysis.ProjectState, System.Threading.CancellationToken) + 0x4f <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x7dc59f
35, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<FinalizeCompilationAsync>d__30.MoveNext() + 0x561 <-- 0x7ffa750e0531
36, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+CompilationInfo, Microsoft.CodeAnalysis.Workspaces]].Start[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<FinalizeCompilationAsync>d__30, Microsoft.CodeAnalysis.Workspaces]](<FinalizeCompilationAsync>d__30 ByRef) + 0x87 <-- 0x7ffa750df617
37, Microsoft.CodeAnalysis.SolutionState+CompilationTracker.FinalizeCompilationAsync(Microsoft.CodeAnalysis.SolutionState, Microsoft.CodeAnalysis.Compilation, System.Nullable`1<Microsoft.CodeAnalysis.TextDocumentStates`1<Microsoft.CodeAnalysis.SourceGeneratedDocumentState>>, Microsoft.CodeAnalysis.TextDocumentStates`1<Microsoft.CodeAnalysis.SourceGeneratedDocumentState>, Microsoft.CodeAnalysis.Compilation, Microsoft.CodeAnalysis.GeneratorDriver, System.Threading.CancellationToken) + 0xc4 <-- 0x7ffa750df3d4
38, Microsoft.CodeAnalysis.SolutionState+CompilationTracker.BuildCompilationInfoAsync(Microsoft.CodeAnalysis.SolutionState, System.Threading.CancellationToken) + 0x327 <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x7dead7
39, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetOrBuildCompilationInfoAsync>d__22.MoveNext() + 0x4d3 <-- 0x7ffa750d8d23
40, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+CompilationInfo, Microsoft.CodeAnalysis.Workspaces]].Start[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetOrBuildCompilationInfoAsync>d__22, Microsoft.CodeAnalysis.Workspaces]](<GetOrBuildCompilationInfoAsync>d__22 ByRef) + 0x87 <-- 0x7ffa750d8337
41, Microsoft.CodeAnalysis.SolutionState+CompilationTracker.GetOrBuildCompilationInfoAsync(Microsoft.CodeAnalysis.SolutionState, Boolean, System.Threading.CancellationToken) + 0x62 <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x7de792
42, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetCompilationSlowAsync>d__20.MoveNext() + 0x6a <-- 0x7ffa750d805a
43, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib]].Start[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetCompilationSlowAsync>d__20, Microsoft.CodeAnalysis.Workspaces]](<GetCompilationSlowAsync>d__20 ByRef) + 0x81 <-- 0x7ffa750d7f81
44, Microsoft.CodeAnalysis.SolutionState+CompilationTracker.GetCompilationSlowAsync(Microsoft.CodeAnalysis.SolutionState, System.Threading.CancellationToken) + 0x5e <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x7de70e
45, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetMetadataReferenceAsync>d__31.MoveNext() + 0x11c <-- 0x7ffa761e159c
46, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib]].Start[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetMetadataReferenceAsync>d__31, Microsoft.CodeAnalysis.Workspaces]](<GetMetadataReferenceAsync>d__31 ByRef) + 0x81 <-- 0x7ffa761e1411
47, Microsoft.CodeAnalysis.SolutionState+CompilationTracker.GetMetadataReferenceAsync(Microsoft.CodeAnalysis.SolutionState, Microsoft.CodeAnalysis.ProjectState, Microsoft.CodeAnalysis.ProjectReference, System.Threading.CancellationToken) + 0x73 <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x7ded23
48, Microsoft.CodeAnalysis.SolutionState.GetMetadataReferenceAsync(Microsoft.CodeAnalysis.ProjectReference, Microsoft.CodeAnalysis.ProjectState, System.Threading.CancellationToken) + 0x4f <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x7dc59f
49, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<FinalizeCompilationAsync>d__30.MoveNext() + 0x561 <-- 0x7ffa750e0531
50, System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x172 <-- mscorlib.ni.dll+0x58df12
51, System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x15 <-- mscorlib.ni.dll+0x58dd95
52, System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run() + 0x6f <-- mscorlib.ni.dll+0x5fd00f
53, System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean, System.Threading.Tasks.Task ByRef) + 0x63 <-- mscorlib.ni.dll+0x602523
54, System.Threading.Tasks.Task.FinishContinuations() + 0x400 <-- mscorlib.ni.dll+0x566f40
55, System.Threading.Tasks.Task`1[[System.__Canon, mscorlib]].TrySetResult(System.__Canon) + 0x68 <-- mscorlib.ni.dll+0x566a88
56, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib]].SetResult(System.__Canon) + 0xa3 <-- mscorlib.ni.dll+0x5fc333
57, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetMetadataReferenceAsync>d__31.MoveNext() + 0x38b <-- 0x7ffa761e180b
58, System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x172 <-- mscorlib.ni.dll+0x58df12
59, System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x15 <-- mscorlib.ni.dll+0x58dd95
60, System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run() + 0x6f <-- mscorlib.ni.dll+0x5fd00f
61, System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean, System.Threading.Tasks.Task ByRef) + 0x63 <-- mscorlib.ni.dll+0x602523
62, System.Threading.Tasks.Task.FinishContinuations() + 0x400 <-- mscorlib.ni.dll+0x566f40
63, System.Threading.Tasks.Task`1[[System.__Canon, mscorlib]].TrySetResult(System.__Canon) + 0x68 <-- mscorlib.ni.dll+0x566a88
64, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib]].SetResult(System.__Canon) + 0xa3 <-- mscorlib.ni.dll+0x5fc333
65, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetCompilationSlowAsync>d__20.MoveNext() + 0x196 <-- 0x7ffa750d8186
66, System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x172 <-- mscorlib.ni.dll+0x58df12
67, System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x15 <-- mscorlib.ni.dll+0x58dd95
68, System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run() + 0x6f <-- mscorlib.ni.dll+0x5fd00f
69, System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean, System.Threading.Tasks.Task ByRef) + 0x63 <-- mscorlib.ni.dll+0x602523
70, System.Threading.Tasks.Task.FinishContinuations() + 0x400 <-- mscorlib.ni.dll+0x566f40
71, System.Threading.Tasks.Task`1[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+CompilationInfo, Microsoft.CodeAnalysis.Workspaces]].TrySetResult(CompilationInfo) + 0x7d <-- 0x7ffa751bd5ed
72, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+CompilationInfo, Microsoft.CodeAnalysis.Workspaces]].SetResult(CompilationInfo) + 0xef <-- 0x7ffa750f705f
73, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetOrBuildCompilationInfoAsync>d__22.MoveNext() + 0x805 <-- 0x7ffa750d9055
74, System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x172 <-- mscorlib.ni.dll+0x58df12
75, System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x15 <-- mscorlib.ni.dll+0x58dd95
76, System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run() + 0x6f <-- mscorlib.ni.dll+0x5fd00f
77, System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean, System.Threading.Tasks.Task ByRef) + 0x63 <-- mscorlib.ni.dll+0x602523
78, System.Threading.Tasks.Task.FinishContinuations() + 0x400 <-- mscorlib.ni.dll+0x566f40
79, System.Threading.Tasks.Task`1[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+CompilationInfo, Microsoft.CodeAnalysis.Workspaces]].TrySetResult(CompilationInfo) + 0x7d <-- 0x7ffa751bd5ed
80, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+CompilationInfo, Microsoft.CodeAnalysis.Workspaces]].SetResult(CompilationInfo) + 0xef <-- 0x7ffa750f705f
81, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<FinalizeCompilationAsync>d__30.MoveNext() + 0x175a <-- 0x7ffa750e172a
82, System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x172 <-- mscorlib.ni.dll+0x58df12
83, System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x15 <-- mscorlib.ni.dll+0x58dd95
84, System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run() + 0x6f <-- mscorlib.ni.dll+0x5fd00f
85, System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean, System.Threading.Tasks.Task ByRef) + 0x63 <-- mscorlib.ni.dll+0x602523
86, System.Threading.Tasks.Task.FinishContinuations() + 0x400 <-- mscorlib.ni.dll+0x566f40
87, System.Threading.Tasks.Task`1[[System.__Canon, mscorlib]].TrySetResult(System.__Canon) + 0x68 <-- mscorlib.ni.dll+0x566a88
88, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib]].SetResult(System.__Canon) + 0xa3 <-- mscorlib.ni.dll+0x5fc333
89, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetMetadataReferenceAsync>d__31.MoveNext() + 0x38b <-- 0x7ffa761e180b
90, System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x172 <-- mscorlib.ni.dll+0x58df12
91, System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x15 <-- mscorlib.ni.dll+0x58dd95
92, System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run() + 0x6f <-- mscorlib.ni.dll+0x5fd00f
93, System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean, System.Threading.Tasks.Task ByRef) + 0x63 <-- mscorlib.ni.dll+0x602523
94, System.Threading.Tasks.Task.FinishContinuations() + 0x400 <-- mscorlib.ni.dll+0x566f40
95, System.Threading.Tasks.Task`1[[System.__Canon, mscorlib]].TrySetResult(System.__Canon) + 0x68 <-- mscorlib.ni.dll+0x566a88
96, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib]].SetResult(System.__Canon) + 0xa3 <-- mscorlib.ni.dll+0x5fc333
97, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetCompilationSlowAsync>d__20.MoveNext() + 0x196 <-- 0x7ffa750d8186
98, System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x172 <-- mscorlib.ni.dll+0x58df12
99, System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x15 <-- mscorlib.ni.dll+0x58dd95
100, System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run() + 0x6f <-- mscorlib.ni.dll+0x5fd00f
101, System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean, System.Threading.Tasks.Task ByRef) + 0x63 <-- mscorlib.ni.dll+0x602523
102, System.Threading.Tasks.Task.FinishContinuations() + 0x400 <-- mscorlib.ni.dll+0x566f40
103, System.Threading.Tasks.Task`1[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+CompilationInfo, Microsoft.CodeAnalysis.Workspaces]].TrySetResult(CompilationInfo) + 0x7d <-- 0x7ffa751bd5ed
104, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+CompilationInfo, Microsoft.CodeAnalysis.Workspaces]].SetResult(CompilationInfo) + 0xef <-- 0x7ffa750f705f
105, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetOrBuildCompilationInfoAsync>d__22.MoveNext() + 0x805 <-- 0x7ffa750d9055
106, System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x172 <-- mscorlib.ni.dll+0x58df12
107, System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x15 <-- mscorlib.ni.dll+0x58dd95
108, System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run() + 0x6f <-- mscorlib.ni.dll+0x5fd00f
109, System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean, System.Threading.Tasks.Task ByRef) + 0x63 <-- mscorlib.ni.dll+0x602523
110, System.Threading.Tasks.Task.FinishContinuations() + 0x400 <-- mscorlib.ni.dll+0x566f40
111, System.Threading.Tasks.Task`1[[Roslyn.Utilities.SemaphoreSlimExtensions+SemaphoreDisposer, Microsoft.CodeAnalysis.Workspaces]].TrySetResult(SemaphoreDisposer) + 0x72 <-- 0x7ffa751bd542
112, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[Roslyn.Utilities.SemaphoreSlimExtensions+SemaphoreDisposer, Microsoft.CodeAnalysis.Workspaces]].SetResult(SemaphoreDisposer) + 0xa3 <-- 0x7ffa751bd463
113, Roslyn.Utilities.SemaphoreSlimExtensions+<DisposableWaitAsync>d__1.MoveNext() + 0x177 <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x7e3497
114, System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x172 <-- mscorlib.ni.dll+0x58df12
115, System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x15 <-- mscorlib.ni.dll+0x58dd95
116, System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run() + 0x6f <-- mscorlib.ni.dll+0x5fd00f
117, System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean, System.Threading.Tasks.Task ByRef) + 0x63 <-- mscorlib.ni.dll+0x602523
118, System.Threading.Tasks.Task.FinishContinuations() + 0x400 <-- mscorlib.ni.dll+0x566f40
119, System.Threading.Tasks.Task`1[[System.Boolean, mscorlib]].TrySetResult(Boolean) + 0x5e <-- mscorlib.ni.dll+0x5aaf0e
120, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Boolean, mscorlib]].SetResult(Boolean) + 0x9f <-- mscorlib.ni.dll+0x5ab01f
121, System.Threading.SemaphoreSlim+<WaitUntilCountOrTimeoutAsync>d__31.MoveNext() + 0x442 <-- mscorlib.ni.dll+0x1010632
122, System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x172 <-- mscorlib.ni.dll+0x58df12
123, System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x15 <-- mscorlib.ni.dll+0x58dd95
124, System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run() + 0x6f <-- mscorlib.ni.dll+0x5fd00f
125, System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean, System.Threading.Tasks.Task ByRef) + 0x63 <-- mscorlib.ni.dll+0x602523
126, System.Threading.Tasks.Task.FinishContinuations() + 0x400 <-- mscorlib.ni.dll+0x566f40
127, System.Threading.Tasks.Task`1[[System.__Canon, mscorlib]].TrySetResult(System.__Canon) + 0x68 <-- mscorlib.ni.dll+0x566a88
128, System.Threading.Tasks.TaskFactory+CompleteOnInvokePromise.Invoke(System.Threading.Tasks.Task) + 0xab <-- mscorlib.ni.dll+0x1014c1b
129, System.Threading.Tasks.Task.FinishContinuations() + 0x447 <-- mscorlib.ni.dll+0x566f87
130, System.Threading.Tasks.Task`1[[System.Boolean, mscorlib]].TrySetResult(Boolean) + 0x5e <-- mscorlib.ni.dll+0x5aaf0e
131, System.Threading.SemaphoreSlim+TaskNode.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() + 0x10 <-- mscorlib.ni.dll+0x100f0a0
132, System.Threading.ThreadPoolWorkQueue.Dispatch() + 0x156 <-- mscorlib.ni.dll+0x558e46
133, clr.dll!CoUninitializeEE+0x1b93
134, clr.dll!CoUninitializeEE+0x1a98
135, clr.dll!CoUninitializeEE+0x2358
136, clr.dll!CoUninitializeEE+0x737a
137, clr.dll!CoUninitializeEE+0x2f50
138, clr.dll!CoUninitializeEE+0x2ec3
139, clr.dll!CoUninitializeEE+0x2e02
140, clr.dll!CoUninitializeEE+0x2fe7
141, clr.dll!CoUninitializeEE+0x72c7
142, clr.dll!CoUninitializeEE+0x2b17
143, clr.dll!CoUninitializeEE+0x29ef
144, clr.dll!CoUninitializeEE+0x6835
145, kernel32.dll!BaseThreadInitThunk+0x14
146, ntdll.dll!RtlUserThreadStart+0x21
0, ntoskrnl.exe!KeWaitForSingleObject+0x30c1
1, ntoskrnl.exe!KeSynchronizeExecution+0x2e02
2, ntoskrnl.exe!ExReleasePushLockSharedEx+0x66
3, ntoskrnl.exe!ExReleaseFastMutex+0x36
4, ntoskrnl.exe!CcUninitializeCacheMap+0x52e
5, ntoskrnl.exe!CcUnmapFileOffsetFromSystemCache+0x28
6, Ntfs.sys+0x1f805
7, Ntfs.sys+0xfa90a
8, Ntfs.sys+0x19171
9, Ntfs.sys+0xfab3b
10, Ntfs.sys+0x103a9e
11, Ntfs.sys+0xfeefd
12, ntoskrnl.exe!KeSynchronizeExecution+0x2447
13, ntoskrnl.exe!KeSynchronizeExecution+0x240d
14, ntoskrnl.exe!KeExpandKernelStackAndCalloutEx+0x36a
15, ntoskrnl.exe!KeExpandKernelStackAndCalloutEx+0x1ae
16, ntoskrnl.exe!KeExpandKernelStackAndCalloutEx+0x65
17, ntoskrnl.exe!KeExpandKernelStackAndCalloutEx+0x1d
18, Ntfs.sys+0xff17f
19, ntoskrnl.exe!IofCallDriver+0x59
20, FLTMGR.SYS!FltIsCallbackDataDirty+0x2e7
21, FLTMGR.SYS!FltQueryInformationFile+0x36d
22, ntoskrnl.exe!IofCallDriver+0x59
23, ntoskrnl.exe!SePrivilegeCheck+0x1233
24, ntoskrnl.exe!SeUnlockSubjectContext+0xdab
25, ntoskrnl.exe!ObOpenObjectByNameEx+0x1df
26, ntoskrnl.exe!NtCreateFile+0x485
27, ntoskrnl.exe!NtCreateFile+0x79
28, ntoskrnl.exe!setjmpex+0x6f03
29, ntdll.dll!ZwCreateFile+0x14
30, guard64.dll!Exported+0x185e3
31, KernelBase.dll!CreateFileW+0x378
32, KernelBase.dll!CreateFileW+0x66
33, clr.dll!StrongNameTokenFromPublicKey+0x1c2b
34, clr.dll!StrongNameTokenFromPublicKey+0xdbf9
35, clr.dll!StrongNameTokenFromPublicKey+0xdad0
36, clr.dll!StrongNameTokenFromPublicKey+0xd90f
37, clr.dll!LogHelp_NoGuiOnAssert+0x6fe38
38, clr.dll!CorExeMain+0x3e0ad
39, clr.dll!NGenCreateNGenWorker+0x2685
40, clr.dll!TranslateSecurityAttributes+0x1c1435
41, System.Reflection.AssemblyName.GetAssemblyName(System.String) + 0x6a <-- mscorlib.ni.dll+0x5a806a
42, System.Linq.Enumerable.ToDictionary[[System.__Canon, mscorlib],[System.__Canon, mscorlib],[System.__Canon, mscorlib]](System.Collections.Generic.IEnumerable`1<System.__Canon>, System.Func`2<System.__Canon,System.__Canon>, System.Func`2<System.__Canon,System.__Canon>, System.Collections.Generic.IEqualityComparer`1<System.__Canon>) + 0xfb <-- System.Core.ni.dll+0x34282b
43, System.Text.Json.SourceGeneration.Reflection.MetadataLoadContextInternal..ctor(Microsoft.CodeAnalysis.Compilation) + 0x197 <-- 0x7ffa768141c7
44, System.Text.Json.SourceGeneration.JsonSourceGenerator+Parser..ctor(Microsoft.CodeAnalysis.GeneratorExecutionContext ByRef) + 0xfd <-- 0x7ffa76813d4d
45, System.Text.Json.SourceGeneration.JsonSourceGenerator.Execute(Microsoft.CodeAnalysis.GeneratorExecutionContext) + 0x60 <-- 0x7ffa76813b20
46, Microsoft.CodeAnalysis.SourceGeneratorAdaptor.<Initialize>b__4_5(Microsoft.CodeAnalysis.SourceProductionContext, GeneratorContextBuilder) + 0xf2 <-- 0x7ffa762983e2
47, Microsoft.CodeAnalysis.UserFunctionExtensions+<>c__DisplayClass3_0`2[[Microsoft.CodeAnalysis.SourceProductionContext, Microsoft.CodeAnalysis],[System.__Canon, mscorlib]].<WrapUserAction>b__0(Microsoft.CodeAnalysis.SourceProductionContext, System.__Canon) + 0x23 <-- 0x7ffa76298213
48, Microsoft.CodeAnalysis.SourceOutputNode`1[[System.__Canon, mscorlib]].UpdateStateTable(Builder, Microsoft.CodeAnalysis.NodeStateTable`1<System.ValueTuple`2<System.Collections.Generic.IEnumerable`1<Microsoft.CodeAnalysis.GeneratedSourceText>,System.Collections.Generic.IEnumerable`1<Microsoft.CodeAnalysis.Diagnostic>>>, System.Threading.CancellationToken) + 0x205 <-- 0x7ffa7627ff55
49, Microsoft.CodeAnalysis.DriverStateTable+Builder.GetLatestStateTableForNode[[System.ValueTuple`2[[System.__Canon, mscorlib],[System.__Canon, mscorlib]], mscorlib]](Microsoft.CodeAnalysis.IIncrementalGeneratorNode`1<System.ValueTuple`2<System.__Canon,System.__Canon>>) + 0x12e <-- 0x7ffa7627cdfe
50, Microsoft.CodeAnalysis.SourceOutputNode`1[[System.__Canon, mscorlib]].AppendOutputs(Microsoft.CodeAnalysis.IncrementalExecutionContext, System.Threading.CancellationToken) + 0x4d <-- 0x7ffa7627b8ad
51, Microsoft.CodeAnalysis.GeneratorDriver.RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation, Microsoft.CodeAnalysis.DiagnosticBag, System.Threading.CancellationToken) + 0xb34 <-- 0x7ffa76276114
52, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<FinalizeCompilationAsync>d__30.MoveNext() + 0xd76 <-- 0x7ffa750e0d46
53, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+CompilationInfo, Microsoft.CodeAnalysis.Workspaces]].Start[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<FinalizeCompilationAsync>d__30, Microsoft.CodeAnalysis.Workspaces]](<FinalizeCompilationAsync>d__30 ByRef) + 0x87 <-- 0x7ffa750df617
54, Microsoft.CodeAnalysis.SolutionState+CompilationTracker.FinalizeCompilationAsync(Microsoft.CodeAnalysis.SolutionState, Microsoft.CodeAnalysis.Compilation, System.Nullable`1<Microsoft.CodeAnalysis.TextDocumentStates`1<Microsoft.CodeAnalysis.SourceGeneratedDocumentState>>, Microsoft.CodeAnalysis.TextDocumentStates`1<Microsoft.CodeAnalysis.SourceGeneratedDocumentState>, Microsoft.CodeAnalysis.Compilation, Microsoft.CodeAnalysis.GeneratorDriver, System.Threading.CancellationToken) + 0xc4 <-- 0x7ffa750df3d4
55, Microsoft.CodeAnalysis.SolutionState+CompilationTracker.BuildCompilationInfoAsync(Microsoft.CodeAnalysis.SolutionState, System.Threading.CancellationToken) + 0x327 <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x7dead7
56, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetOrBuildCompilationInfoAsync>d__22.MoveNext() + 0x4d3 <-- 0x7ffa750d8d23
57, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+CompilationInfo, Microsoft.CodeAnalysis.Workspaces]].Start[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetOrBuildCompilationInfoAsync>d__22, Microsoft.CodeAnalysis.Workspaces]](<GetOrBuildCompilationInfoAsync>d__22 ByRef) + 0x87 <-- 0x7ffa750d8337
58, Microsoft.CodeAnalysis.SolutionState+CompilationTracker.GetOrBuildCompilationInfoAsync(Microsoft.CodeAnalysis.SolutionState, Boolean, System.Threading.CancellationToken) + 0x62 <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x7de792
59, Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetCompilationSlowAsync>d__20.MoveNext() + 0x6a <-- 0x7ffa750d805a
60, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib]].Start[[Microsoft.CodeAnalysis.SolutionState+CompilationTracker+<GetCompilationSlowAsync>d__20, Microsoft.CodeAnalysis.Workspaces]](<GetCompilationSlowAsync>d__20 ByRef) + 0x81 <-- 0x7ffa750d7f81
61, Microsoft.CodeAnalysis.SolutionState+CompilationTracker.GetCompilationSlowAsync(Microsoft.CodeAnalysis.SolutionState, System.Threading.CancellationToken) + 0x5e <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x7de70e
62, Microsoft.CodeAnalysis.SolutionState+CompilationTracker.GetCompilationAsync(Microsoft.CodeAnalysis.SolutionState, System.Threading.CancellationToken) + 0x3c <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x7de69c
63, Microsoft.CodeAnalysis.SolutionState.GetCompilationAsync(Microsoft.CodeAnalysis.ProjectState, System.Threading.CancellationToken) + 0x4e <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x7dc4be
64, Microsoft.CodeAnalysis.Document+<GetSemanticModelAsync>d__23.MoveNext() + 0x2ee <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x805b8e
65, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib]].Start[[Microsoft.CodeAnalysis.Document+<GetSemanticModelAsync>d__23, Microsoft.CodeAnalysis.Workspaces]](<GetSemanticModelAsync>d__23 ByRef) + 0x81 <-- 0x7ffa750d55c1
66, Microsoft.CodeAnalysis.Document.GetSemanticModelAsync(System.Threading.CancellationToken) + 0x5c <-- Microsoft.CodeAnalysis.Workspaces.ni.dll+0x7fe17c
67, Microsoft.CodeAnalysis.Shared.Extensions.DocumentExtensions+<GetRequiredSemanticModelAsync>d__7.MoveNext() + 0x87 <-- 0x7ffa7595c997
68, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib]].Start[[Microsoft.CodeAnalysis.Shared.Extensions.DocumentExtensions+<GetRequiredSemanticModelAsync>d__7, Microsoft.CodeAnalysis.Workspaces]](<GetRequiredSemanticModelAsync>d__7 ByRef) + 0x81 <-- 0x7ffa7595c8a1
69, Microsoft.CodeAnalysis.Shared.Extensions.DocumentExtensions.GetRequiredSemanticModelAsync(Microsoft.CodeAnalysis.Document, System.Threading.CancellationToken) + 0x69 <-- 0x7ffa7595c7d9
70, Microsoft.CodeAnalysis.InlineHints.AbstractInlineParameterNameHintsService+<GetInlineHintsAsync>d__2.MoveNext() + 0x853 <-- Microsoft.CodeAnalysis.Features.ni.dll+0x8406f3
71, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.InlineHints.InlineHint, Microsoft.CodeAnalysis.Features]], System.Collections.Immutable]].Start[[Microsoft.CodeAnalysis.InlineHints.AbstractInlineParameterNameHintsService+<GetInlineHintsAsync>d__2, Microsoft.CodeAnalysis.Features]](<GetInlineHintsAsync>d__2 ByRef) + 0x87 <-- 0x7ffa75a25cd7
72, Microsoft.CodeAnalysis.InlineHints.AbstractInlineParameterNameHintsService.GetInlineHintsAsync(Microsoft.CodeAnalysis.Document, Microsoft.CodeAnalysis.Text.TextSpan, System.Threading.CancellationToken) + 0x72 <-- Microsoft.CodeAnalysis.Features.ni.dll+0x8c8492
73, Microsoft.CodeAnalysis.InlineHints.AbstractInlineHintsService+<GetInlineHintsAsync>d__0.MoveNext() + 0xb0 <-- Microsoft.CodeAnalysis.Features.ni.dll+0x83fb90
74, System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.InlineHints.InlineHint, Microsoft.CodeAnalysis.Features]], System.Collections.Immutable]].Start[[Microsoft.CodeAnalysis.InlineHints.AbstractInlineHintsService+<GetInlineHintsAsync>d__0, Microsoft.CodeAnalysis.Features]](<GetInlineHintsAsync>d__0 ByRef) + 0x87 <-- 0x7ffa75a25bd7
75, Microsoft.CodeAnalysis.InlineHints.AbstractInlineHintsService.GetInlineHintsAsync(Microsoft.CodeAnalysis.Document, Microsoft.CodeAnalysis.Text.TextSpan, System.Threading.CancellationToken) + 0x69 <-- Microsoft.CodeAnalysis.Features.ni.dll+0x8c8409
76, Microsoft.CodeAnalysis.Editor.InlineHints.InlineHintsDataTaggerProvider+<ProduceTagsAsync>d__10.MoveNext() + 0x12c <-- Microsoft.CodeAnalysis.EditorFeatures.ni.dll+0x24b6cc
77, System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.CodeAnalysis.Editor.InlineHints.InlineHintsDataTaggerProvider+<ProduceTagsAsync>d__10, Microsoft.CodeAnalysis.EditorFeatures]](<ProduceTagsAsync>d__10 ByRef) + 0x87 <-- 0x7ffa75a25857
78, Microsoft.CodeAnalysis.Editor.InlineHints.InlineHintsDataTaggerProvider.ProduceTagsAsync(Microsoft.CodeAnalysis.Editor.Tagging.TaggerContext`1<Microsoft.CodeAnalysis.Editor.InlineHints.InlineHintDataTag>, Microsoft.CodeAnalysis.Editor.DocumentSnapshotSpan, System.Nullable`1<Int32>) + 0x63 <-- Microsoft.CodeAnalysis.EditorFeatures.ni.dll+0x2204c3
79, Microsoft.CodeAnalysis.Editor.Tagging.AbstractAsynchronousTaggerProvider`1+<ProduceTagsAsync>d__26[[System.__Canon, mscorlib]].MoveNext() + 0x21d <-- Microsoft.CodeAnalysis.EditorFeatures.ni.dll+0x22c8fd
80, System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.CodeAnalysis.Editor.Tagging.AbstractAsynchronousTaggerProvider`1+<ProduceTagsAsync>d__26[[System.__Canon, mscorlib]], Microsoft.CodeAnalysis.EditorFeatures]](<ProduceTagsAsync>d__26<System.__Canon> ByRef) + 0xa4 <-- 0x7ffa7595a344
81, Microsoft.CodeAnalysis.Editor.Tagging.AbstractAsynchronousTaggerProvider`1[[System.__Canon, mscorlib]].ProduceTagsAsync(Microsoft.CodeAnalysis.Editor.Tagging.TaggerContext`1<System.__Canon>) + 0x79 <-- Microsoft.CodeAnalysis.EditorFeatures.ni.dll+0x210a29
82, Microsoft.CodeAnalysis.Editor.Tagging.AbstractAsynchronousTaggerProvider`1+TagSource+<RecomputeTagsForegroundAsync>d__38[[System.__Canon, mscorlib]].MoveNext() + 0x3a8 <-- Microsoft.CodeAnalysis.EditorFeatures.ni.dll+0x22bb18
83, System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x172 <-- mscorlib.ni.dll+0x58df12
84, System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x15 <-- mscorlib.ni.dll+0x58dd95
85, System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run() + 0x6f <-- mscorlib.ni.dll+0x5fd00f
86, System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() + 0x41 <-- mscorlib.ni.dll+0x559bd1
87, System.Threading.ThreadPoolWorkQueue.Dispatch() + 0x156 <-- mscorlib.ni.dll+0x558e46
88, clr.dll!CoUninitializeEE+0x1b93
89, clr.dll!CoUninitializeEE+0x1a98
90, clr.dll!CoUninitializeEE+0x2358
91, clr.dll!CoUninitializeEE+0x737a
92, clr.dll!CoUninitializeEE+0x2f50
93, clr.dll!CoUninitializeEE+0x2ec3
94, clr.dll!CoUninitializeEE+0x2e02
95, clr.dll!CoUninitializeEE+0x2fe7
96, clr.dll!CoUninitializeEE+0x72c7
97, clr.dll!CoUninitializeEE+0x2b17
98, clr.dll!CoUninitializeEE+0x29ef
99, clr.dll!CoUninitializeEE+0x6835
100, kernel32.dll!BaseThreadInitThunk+0x14
101, ntdll.dll!RtlUserThreadStart+0x21
Evidence: Memory and Managed Heap Snapshots
When I attached another instance of VS to "debug" the problematic instance, and took managed heap snapshots, I noticed that the lion's share of allocated bytes was once again for types in Microsoft.CodeAnalysis
. Some types had over a million instances! This was not the case prior to DotNet 6 Preview 5 and prior to Preview 5 VS 2019 was not running out of memory at all on the same solution.
Issue with Source Generators
Now, according to every stack trace that I took of VS's threads when it was misbehaving, it always involved Microsoft.CodeAnalysis.SourceGeneratedDocumentState
and System.Text.Json.SourceGeneration
types.
Also note that my solution does NOT use any source generators. And VS's option Text Editor > VB/C# > Advanced > Enable all features in opened files from source generators (experimental)
is tuned OFF.
I presume it might have something to do with Source Generator support being automatically included for System.Text.Json
starting with Preview 5 (a was noted in your blog post), and so obviously it is applicable to me as I am now on Preview 6.
Expected Behavior:
VS 2019 does not run out of memory.
VS 2019 and VS 2022 do not slow down and become sluggish after typing a few characters / words.
Actual Behavior:
Both VS 2019 and 2022 are slowed down, with VS 2019 being slowed down to the point of being completely unusable (due to memory pressure and GC), while VS 2022 is usable but typing experience deteriorates very quickly and becomes often literally one or a few characters per second (i.e. >500ms pause after each character on average).
It does not seem to correlate with what file I edit (large or small), what text I edit (comment, type name, variable name, code), and which project the file comes from (one on which other projects in the solution depend, or the one on which no other projects depend).