Skip to content

StackOverflowException on web project code analysis #76953

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]	

Activity

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

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions