Skip to content

StackOverflowException on web project code analysis #76953

Closed
@PatrickHofman

Description

@PatrickHofman

Version Used:
17.3.6
17.4.0 Preview 3

Steps to Reproduce:

  1. Start Visual Studio
  2. Open solution file containing a web project
  3. Crash

Expected Behavior:
Visual Studio to open and fully load, not crash.

Actual Behavior:
Visual Studio crashes after the solution is opened with no error message shown.

When inspecting a Windows dump file created on crash, it shows this call stack ending up in a stack overflow (on both versions mentioned, the call stack is the same):

Unhandled exception at 0x00007FF83EB9805D (Microsoft.CodeAnalysis.CSharp.ni.dll) in devenv.exe.20804.dmp: 0xC00000FD: Stack overflow (parameters: 0x0000000000000001, 0x000000967FA48FD8).

>	Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax.GetNodeSlot(int index)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.ChildSyntaxList.ItemInternal(Microsoft.CodeAnalysis.SyntaxNode node, int index)	Unknown
 	[External Code]	
 	[The 2 frame(s) above this were repeated 2442 times]	
 	[External Code]	
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.UserFunctionExtensions.WrapUserFunction.AnonymousMethod__0((System.__Canon, System.__Canon) input, System.Threading.CancellationToken token)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.TransformNode<(Microsoft.CodeAnalysis.DotnetRuntime.Extensions.SyntaxValueProviderExtensions.SyntaxTreeInfo, Microsoft.CodeAnalysis.DotnetRuntime.Extensions.GlobalAliases), (Microsoft.CodeAnalysis.SyntaxTree, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.SyntaxNode>)>..ctor.AnonymousMethod__0((Microsoft.CodeAnalysis.DotnetRuntime.Extensions.SyntaxValueProviderExtensions.SyntaxTreeInfo, Microsoft.CodeAnalysis.DotnetRuntime.Extensions.GlobalAliases) i, System.Threading.CancellationToken token)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.TransformNode<(Microsoft.CodeAnalysis.DotnetRuntime.Extensions.SyntaxValueProviderExtensions.SyntaxTreeInfo, Microsoft.CodeAnalysis.DotnetRuntime.Extensions.GlobalAliases), (Microsoft.CodeAnalysis.SyntaxTree, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.SyntaxNode>)>.UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable.Builder builder, Microsoft.CodeAnalysis.NodeStateTable<(Microsoft.CodeAnalysis.SyntaxTree, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.SyntaxNode>)> previousTable, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.DriverStateTable.Builder.GetLatestStateTableForNode<(Microsoft.CodeAnalysis.SyntaxTree, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.SyntaxNode>)>(Microsoft.CodeAnalysis.IIncrementalGeneratorNode<(Microsoft.CodeAnalysis.SyntaxTree, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.SyntaxNode>)> source)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.TransformNode<(Microsoft.CodeAnalysis.SyntaxTree, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.SyntaxNode>), (Microsoft.CodeAnalysis.SyntaxTree, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.SyntaxNode>)>.UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable.Builder builder, Microsoft.CodeAnalysis.NodeStateTable<(Microsoft.CodeAnalysis.SyntaxTree, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.SyntaxNode>)> previousTable, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.DriverStateTable.Builder.GetLatestStateTableForNode<(Microsoft.CodeAnalysis.SyntaxTree, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.SyntaxNode>)>(Microsoft.CodeAnalysis.IIncrementalGeneratorNode<(Microsoft.CodeAnalysis.SyntaxTree, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.SyntaxNode>)> source)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.CombineNode<(Microsoft.CodeAnalysis.SyntaxTree, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.SyntaxNode>), Microsoft.CodeAnalysis.Compilation>.UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable.Builder graphState, Microsoft.CodeAnalysis.NodeStateTable<((Microsoft.CodeAnalysis.SyntaxTree, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.SyntaxNode>), Microsoft.CodeAnalysis.Compilation)> previousTable, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.DriverStateTable.Builder.GetLatestStateTableForNode<((Microsoft.CodeAnalysis.SyntaxTree, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.SyntaxNode>), Microsoft.CodeAnalysis.Compilation)>(Microsoft.CodeAnalysis.IIncrementalGeneratorNode<((Microsoft.CodeAnalysis.SyntaxTree, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.SyntaxNode>), Microsoft.CodeAnalysis.Compilation)> source)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.TransformNode<((Microsoft.CodeAnalysis.SyntaxTree, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.SyntaxNode>), Microsoft.CodeAnalysis.Compilation), Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax>.UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable.Builder builder, Microsoft.CodeAnalysis.NodeStateTable<Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax> previousTable, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.DriverStateTable.Builder.GetLatestStateTableForNode<Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax>(Microsoft.CodeAnalysis.IIncrementalGeneratorNode<Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax> source)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.BatchNode<Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax>.UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable.Builder builder, Microsoft.CodeAnalysis.NodeStateTable<System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax>> previousTable, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.DriverStateTable.Builder.GetLatestStateTableForNode<System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax>>(Microsoft.CodeAnalysis.IIncrementalGeneratorNode<System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax>> source)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.CombineNode<Microsoft.CodeAnalysis.Compilation, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax>>.UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable.Builder graphState, Microsoft.CodeAnalysis.NodeStateTable<(Microsoft.CodeAnalysis.Compilation, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax>)> previousTable, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.DriverStateTable.Builder.GetLatestStateTableForNode<(Microsoft.CodeAnalysis.Compilation, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax>)>(Microsoft.CodeAnalysis.IIncrementalGeneratorNode<(Microsoft.CodeAnalysis.Compilation, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax>)> source)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.SourceOutputNode<(Microsoft.CodeAnalysis.Compilation, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax>)>.UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable.Builder graphState, Microsoft.CodeAnalysis.NodeStateTable<(System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.GeneratedSourceText>, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.Diagnostic>)> previousTable, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.DriverStateTable.Builder.GetLatestStateTableForNode<(System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.GeneratedSourceText>, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.Diagnostic>)>(Microsoft.CodeAnalysis.IIncrementalGeneratorNode<(System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.GeneratedSourceText>, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.Diagnostic>)> source)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.SourceOutputNode<(System.__Canon, System.Collections.Immutable.ImmutableArray<System.__Canon>)>.AppendOutputs(Microsoft.CodeAnalysis.IncrementalExecutionContext context, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.GeneratorDriver.UpdateOutputs(System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.IIncrementalGeneratorOutputNode> outputNodes, Microsoft.CodeAnalysis.IncrementalGeneratorOutputKind outputKind, Microsoft.CodeAnalysis.GeneratorRunStateTable.Builder generatorRunStateBuilder, System.Threading.CancellationToken cancellationToken, Microsoft.CodeAnalysis.DriverStateTable.Builder driverStateBuilder)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.GeneratorDriver.RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation compilation, Microsoft.CodeAnalysis.DiagnosticBag diagnosticsBag, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.GeneratorDriver.RunGenerators(Microsoft.CodeAnalysis.Compilation compilation, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.FinalizeCompilationAsync(Microsoft.CodeAnalysis.SolutionState solution, Microsoft.CodeAnalysis.Compilation compilationWithoutGenerators, Microsoft.CodeAnalysis.SolutionState.CompilationTracker.CompilationTrackerGeneratorInfo generatorInfo, Microsoft.CodeAnalysis.Compilation compilationWithStaleGeneratedTrees, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.BuildCompilationInfoFromScratchAsync(Microsoft.CodeAnalysis.SolutionState solution, Microsoft.CodeAnalysis.SolutionState.CompilationTracker.CompilationTrackerGeneratorInfo generatorInfo, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.BuildCompilationInfoAsync(Microsoft.CodeAnalysis.SolutionState solution, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.GetOrBuildCompilationInfoAsync(Microsoft.CodeAnalysis.SolutionState solution, bool lockGate, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.GetCompilationSlowAsync(Microsoft.CodeAnalysis.SolutionState solution, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.GetCompilationAsync(Microsoft.CodeAnalysis.SolutionState solution, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.GetMetadataReferenceAsync(Microsoft.CodeAnalysis.SolutionState.ICompilationTracker tracker, Microsoft.CodeAnalysis.ProjectState fromProject, Microsoft.CodeAnalysis.ProjectReference projectReference, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.GetMetadataReferenceAsync(Microsoft.CodeAnalysis.ProjectReference projectReference, Microsoft.CodeAnalysis.ProjectState fromProject, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.FinalizeCompilationAsync(Microsoft.CodeAnalysis.SolutionState solution, Microsoft.CodeAnalysis.Compilation compilationWithoutGenerators, Microsoft.CodeAnalysis.SolutionState.CompilationTracker.CompilationTrackerGeneratorInfo generatorInfo, Microsoft.CodeAnalysis.Compilation compilationWithStaleGeneratedTrees, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.BuildCompilationInfoFromScratchAsync(Microsoft.CodeAnalysis.SolutionState solution, Microsoft.CodeAnalysis.SolutionState.CompilationTracker.CompilationTrackerGeneratorInfo generatorInfo, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.BuildCompilationInfoAsync(Microsoft.CodeAnalysis.SolutionState solution, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.GetOrBuildCompilationInfoAsync(Microsoft.CodeAnalysis.SolutionState solution, bool lockGate, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.GetCompilationSlowAsync(Microsoft.CodeAnalysis.SolutionState solution, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.GetCompilationAsync(Microsoft.CodeAnalysis.SolutionState solution, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.GetMetadataReferenceAsync(Microsoft.CodeAnalysis.SolutionState.ICompilationTracker tracker, Microsoft.CodeAnalysis.ProjectState fromProject, Microsoft.CodeAnalysis.ProjectReference projectReference, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.GetMetadataReferenceAsync(Microsoft.CodeAnalysis.ProjectReference projectReference, Microsoft.CodeAnalysis.ProjectState fromProject, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.FinalizeCompilationAsync(Microsoft.CodeAnalysis.SolutionState solution, Microsoft.CodeAnalysis.Compilation compilationWithoutGenerators, Microsoft.CodeAnalysis.SolutionState.CompilationTracker.CompilationTrackerGeneratorInfo generatorInfo, Microsoft.CodeAnalysis.Compilation compilationWithStaleGeneratedTrees, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.BuildCompilationInfoFromScratchAsync(Microsoft.CodeAnalysis.SolutionState solution, Microsoft.CodeAnalysis.SolutionState.CompilationTracker.CompilationTrackerGeneratorInfo generatorInfo, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.BuildCompilationInfoAsync(Microsoft.CodeAnalysis.SolutionState solution, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.GetOrBuildCompilationInfoAsync(Microsoft.CodeAnalysis.SolutionState solution, bool lockGate, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.GetCompilationSlowAsync(Microsoft.CodeAnalysis.SolutionState solution, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.CompilationTracker.GetCompilationAsync(Microsoft.CodeAnalysis.SolutionState solution, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.SolutionState.GetCompilationAsync(Microsoft.CodeAnalysis.ProjectState project, System.Threading.CancellationToken cancellationToken)	Unknown
 	Microsoft.WebTools.ProjectSystem.dll!Microsoft.WebTools.ProjectSystem.Web.Telemetry.WebProjectDetailsTelemetryCollector.CollectDataAndPostTelemetryAsync()	Unknown
 	[External Code]	

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions