Skip to content

Stackoverflow in BindNonGenericSimpleNamespaceOrTypeOrAliasSymbol in C# extension #80987

@dibarbet

Description

@dibarbet

Version Used:
Version 2.96.3 of the C# extension
Compiler version: 5.3.0-1.25514.3 (225ca71)'. Language version: 14.0

Steps to Reproduce:

  1. Open an empty vscode window
  2. File -> new text file
  3. Set the language mode for the file to C#
  4. Paste the following code
namespace Magic
{
    public enum Cookie : UInt32;
}

Important - this does not reproduce if the code is pasted into a file an existing project. Seems to be misc file / FBP only?

Expected:
Server doesn't crash

Actual:
Stack overflow:

2025-11-01 10:22:04.892 [error] [stderr] Stack overflow.

2025-11-01 10:22:04.897 [error] [stderr] Repeated 2515 times:
--------------------------------
   at Microsoft.CodeAnalysis.CSharp.Binder.BindNonGenericSimpleNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag, Roslyn.Utilities.ConsList`1<Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>, Boolean, Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol)
   at Microsoft.CodeAnalysis.CSharp.Binder.BindNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag, Roslyn.Utilities.ConsList`1<Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>, Boolean)
   at Microsoft.CodeAnalysis.CSharp.Binder.BindTypeOrAlias(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag, Roslyn.Utilities.ConsList`1<Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>, Boolean)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol.FindBaseRefSyntax(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol)

2025-11-01 10:22:04.897 [error] [stderr]    at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol.MakeAcyclicBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol.get_BaseTypeNoUseSiteDiagnostics()
   at Microsoft.CodeAnalysis.CSharp.Binder.LookupMembersInClass(Microsoft.CodeAnalysis.CSharp.LookupResult, Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, System.String, Int32, Roslyn.Utilities.ConsList`1<Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>, Microsoft.CodeAnalysis.CSharp.LookupOptions, Microsoft.CodeAnalysis.CSharp.Binder, Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, Boolean, Microsoft.CodeAnalysis.CompoundUseSiteInfo`1<Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol> ByRef)
   at Microsoft.CodeAnalysis.CSharp.Binder.LookupMembersInType(Microsoft.CodeAnalysis.CSharp.LookupResult, Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, System.String, Int32, Roslyn.Utilities.ConsList`1<Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>, Microsoft.CodeAnalysis.CSharp.LookupOptions, Microsoft.CodeAnalysis.CSharp.Binder, Boolean, Microsoft.CodeAnalysis.CompoundUseSiteInfo`1<Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol> ByRef)
   at Microsoft.CodeAnalysis.CSharp.Binder.LookupSymbolsInternal(Microsoft.CodeAnalysis.CSharp.LookupResult, System.String, Int32, Roslyn.Utilities.ConsList`1<Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>, Microsoft.CodeAnalysis.CSharp.LookupOptions, Boolean, Microsoft.CodeAnalysis.CompoundUseSiteInfo`1<Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol> ByRef)
--------------------------------
   at Microsoft.CodeAnalysis.CSharp.Binder.BindNonGenericSimpleNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag, Roslyn.Utilities.ConsList`1<Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>, Boolean, Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol)
   at Microsoft.CodeAnalysis.CSharp.Binder.BindNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag, Roslyn.Utilities.ConsList`1<Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>, Boolean)
   at Microsoft.CodeAnalysis.CSharp.Binder.BindTypeOrAlias(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag, Roslyn.Utilities.ConsList`1<Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>, Boolean)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol.FindBaseRefSyntax(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol.MakeAcyclicBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol.CheckBase(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol.ForceComplete(Microsoft.CodeAnalysis.SourceLocation, System.Predicate`1<Microsoft.CodeAnalysis.CSharp.Symbol>, System.Threading.CancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol.ForceComplete(Microsoft.CodeAnalysis.SourceLocation, System.Predicate`1<Microsoft.CodeAnalysis.CSharp.Symbol>, System.Threading.CancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol.ForceComplete(Microsoft.CodeAnalysis.SourceLocation, System.Predicate`1<Microsoft.CodeAnalysis.CSharp.Symbol>, System.Threading.CancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol.ForceComplete(Microsoft.CodeAnalysis.SourceLocation, System.Predicate`1<Microsoft.CodeAnalysis.CSharp.Symbol>, System.Threading.CancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceModuleSymbol.ForceComplete(Microsoft.CodeAnalysis.SourceLocation, System.Predicate`1<Microsoft.CodeAnalysis.CSharp.Symbol>, System.Threading.CancellationToken)
   at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.GetSourceDeclarationDiagnostics(Microsoft.CodeAnalysis.SyntaxTree, System.Nullable`1<Microsoft.CodeAnalysis.Text.TextSpan>, System.Func`4<System.Collections.Generic.IEnumerable`1<Microsoft.CodeAnalysis.Diagnostic>,Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1<Microsoft.CodeAnalysis.Text.TextSpan>,System.Collections.Generic.IEnumerable`1<Microsoft.CodeAnalysis.Diagnostic>>, System.Predicate`1<Microsoft.CodeAnalysis.CSharp.Symbol>, System.Threading.CancellationToken)
   at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.GetDiagnosticsForSyntaxTree(Microsoft.CodeAnalysis.CompilationStage, Microsoft.CodeAnalysis.SyntaxTree, System.Nullable`1<Microsoft.CodeAnalysis.Text.TextSpan>, Boolean, System.Threading.CancellationToken)
   at Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers.GetCompilationEventsForSingleFileAnalysis(Microsoft.CodeAnalysis.Compilation, Microsoft.CodeAnalysis.Diagnostics.AnalysisScope, System.Collections.Immutable.ImmutableArray`1<Microsoft.CodeAnalysis.AdditionalText>, Boolean, System.Threading.CancellationToken)
   at Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<ComputeAnalyzerDiagnosticsAsync>d__62.MoveNext()
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<ComputeAnalyzerDiagnosticsAsync>d__62, Microsoft.CodeAnalysis, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]].MoveNext(System.Threading.Thread)
   at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Runtime.CompilerServices.IAsyncStateMachineBox, Boolean)
   at System.Threading.Tasks.Task.RunContinuations(System.Object)
   at System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].TrySetResult(System.__Canon)
   at Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41.MoveNext()
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.__Canon, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41, Microsoft.CodeAnalysis, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]].MoveNext(System.Threading.Thread)

2025-11-01 10:22:04.898 [error] [stderr]    at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Runtime.CompilerServices.IAsyncStateMachineBox, Boolean)
   at System.Threading.Tasks.Task.RunContinuations(System.Object)
   at System.Threading.Tasks.UnwrapPromise`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].TrySetFromTask(System.Threading.Tasks.Task, Boolean)
   at System.Threading.Tasks.Task.RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction, Boolean)
   at System.Threading.Tasks.Task.RunContinuations(System.Object)
   at Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver+<>c__DisplayClass88_0+<<Initialize>b__0>d.MoveNext()
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver+<>c__DisplayClass88_0+<<Initialize>b__0>d, Microsoft.CodeAnalysis, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]].MoveNext(System.Threading.Thread)
   at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Runtime.CompilerServices.IAsyncStateMachineBox, Boolean)
   at System.Threading.Tasks.Task.RunContinuations(System.Object)
   at Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver+<GetAnalyzerActionsAsync>d__151.MoveNext()
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.ValueTuple`2[[Microsoft.CodeAnalysis.Diagnostics.AnalyzerActions, Microsoft.CodeAnalysis, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[System.__Canon, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver+<GetAnalyzerActionsAsync>d__151, Microsoft.CodeAnalysis, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]].MoveNext(System.Threading.Thread)
   at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Runtime.CompilerServices.IAsyncStateMachineBox, Boolean)
   at System.Threading.Tasks.Task.RunContinuations(System.Object)
   at Microsoft.CodeAnalysis.Diagnostics.AnalyzerManager+<GetAnalyzerActionsAsync>d__12.MoveNext()
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[Microsoft.CodeAnalysis.Diagnostics.AnalyzerActions, Microsoft.CodeAnalysis, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.Diagnostics.AnalyzerManager+<GetAnalyzerActionsAsync>d__12, Microsoft.CodeAnalysis, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]].MoveNext(System.Threading.Thread)
   at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Runtime.CompilerServices.IAsyncStateMachineBox, Boolean)
   at System.Threading.Tasks.Task.RunContinuations(System.Object)
   at System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].TrySetResult(System.__Canon)
   at Microsoft.CodeAnalysis.Diagnostics.AnalyzerManager+<GetSessionAnalysisScopeAsync>d__10.MoveNext()
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.__Canon, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.CodeAnalysis.Diagnostics.AnalyzerManager+<GetSessionAnalysisScopeAsync>d__10, Microsoft.CodeAnalysis, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]].MoveNext(System.Threading.Thread)
   at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Runtime.CompilerServices.IAsyncStateMachineBox, Boolean)
   at System.Threading.Tasks.Task.RunContinuations(System.Object)
   at System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].TrySetResult(System.__Canon)
   at Microsoft.CodeAnalysis.Diagnostics.AnalyzerManager+<GetSessionAnalysisScopeCoreAsync>d__11.MoveNext()
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)

2025-11-01 10:22:04.898 [error] [stderr]    at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.__Canon, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.CodeAnalysis.Diagnostics.AnalyzerManager+<GetSessionAnalysisScopeCoreAsync>d__11, Microsoft.CodeAnalysis, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]].MoveNext(System.Threading.Thread)
   at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Runtime.CompilerServices.IAsyncStateMachineBox, Boolean)
   at System.Threading.Tasks.Task.RunContinuations(System.Object)
   at System.Threading.Tasks.Task.FinishSlow(Boolean)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef, System.Threading.Thread)
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading.PortableThreadPool+WorkerThread.WorkerThreadStart()

Metadata

Metadata

Assignees

Type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions