Assertion fails in CSharpCompilation.EnsureEmbeddableAttributeExists when compiling EnC delta
- Dominant language
- C#
- Stars
- 20.7k
- Forks
- 4.3k
- PR merge metrics
- PR metrics pending
Description
Repro:
see https://github.com/dotnet/roslyn/issues/79320
Assertion:
`Debug.Assert(!modifyCompilation || !_needsGeneratedAttributes_IsFrozen);`
Values:
Call stack:
```
> Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CSharpCompilation.EnsureEmbeddableAttributeExists(Microsoft.CodeAnalysis.CSharp.EmbeddableAttributes attribute, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag diagnostics, Microsoft.CodeAnalysis.Location location, bool modifyCompilation) Line 516 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CSharpCompilation.EnsureNullableContextAttributeExists(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag diagnostics, Microsoft.CodeAnalysis.Location location, bool modifyCompilation) Line 562 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol.AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase conversions, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag diagnostics) Line 992 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodOrUserDefinedOperatorSymbol.AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase conversions, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag diagnostics) Line 222 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol.AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase conversions, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag diagnostics) Line 713 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol.CheckSpecialMemberErrors(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag diagnostics) Line 2534 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol.AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag diagnostics) Line 1861 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol.ForceComplete(Microsoft.CodeAnalysis.SourceLocation locationOpt, System.Predicate filter, System.Threading.CancellationToken cancellationToken) Line 634 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol.IsMetadataVirtual(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol.IsMetadataVirtualOption option) Line 594 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Symbols.MethodToClassRewriter.VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall node) Line 105 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.ClosureConversion.VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall node) Line 1108 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundCall.Accept(Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor visitor) Line 6186 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.VisitExpressionOrPatternWithoutStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode node) Line 233 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.VisitExpressionOrPatternWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode node) Line 243 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.VisitExpressionOrPatternWithStackGuard(ref int recursionDepth, Microsoft.CodeAnalysis.CSharp.BoundNode node) Line 217 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode node) Line 220 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitExpressionStatement(Microsoft.CodeAnalysis.CSharp.BoundExpressionStatement node) Line 11433 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundExpressionStatement.Accept(Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor visitor) Line 3680 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode node) Line 223 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitSequencePoint(Microsoft.CodeAnalysis.CSharp.BoundSequencePoint node) Line 11357 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundSequencePoint.Accept(Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor visitor) Line 3156 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode node) Line 223 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.ClosureConversion.RewriteBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock node, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder prologue, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder newLocals) Line 1184 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.ClosureConversion.VisitBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock node) Line 1165 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundBlock.Accept(Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor visitor) Line 3324 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode node) Line 223 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.ClosureConversion.RewriteBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock node, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder prologue, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder newLocals) Line 1184 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.ClosureConversion.VisitBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock node) Line 1165 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundBlock.Accept(Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor visitor) Line 3324 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode node) Line 223 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.ClosureConversion.Rewrite(Microsoft.CodeAnalysis.CSharp.BoundStatement loweredBody, Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol thisType, Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol thisParameter, Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol method, int methodOrdinal, Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol substitutedSourceMethod, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder lambdaDebugInfoBuilder, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder lambdaRuntimeRudeEditsBuilder, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder closureDebugInfoBuilder, Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator slotAllocator, Microsoft.CodeAnalysis.CSharp.TypeCompilationState compilationState, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag diagnostics, System.Collections.Generic.HashSet assignLocals) Line 277 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.LowerBodyOrInitializer(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol method, Microsoft.CodeAnalysis.CSharp.Symbols.SourceExtensionImplementationMethodSymbol extensionImplementationMethod, int methodOrdinal, Microsoft.CodeAnalysis.CSharp.BoundStatement body, Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields previousSubmissionFields, Microsoft.CodeAnalysis.CSharp.TypeCompilationState compilationState, Microsoft.CodeAnalysis.Emit.MethodInstrumentation instrumentation, Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider debugDocumentProvider, out System.Collections.Immutable.ImmutableArray codeCoverageSpans, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag diagnostics, ref Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator lazyVariableSlotAllocator, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder lambdaDebugInfoBuilder, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder lambdaRuntimeRudeEditsBuilder, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder closureDebugInfoBuilder, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder stateMachineStateDebugInfoBuilder, out Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol stateMachineTypeOpt) Line 1558 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol methodSymbol, int methodOrdinal, ref Microsoft.CodeAnalysis.CSharp.Binder.ProcessedFieldInitializers processedInitializers, Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields previousSubmissionFields, Microsoft.CodeAnalysis.CSharp.TypeCompilationState compilationState) Line 1222 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol containingType) Line 561 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.VisitNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol symbol, Microsoft.CodeAnalysis.CSharp.TypeCompilationState arg) Line 434 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol.Accept(Microsoft.CodeAnalysis.CSharp.CSharpSymbolVisitor visitor, Microsoft.CodeAnalysis.CSharp.TypeCompilationState argument) Line 769 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamespace(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol symbol) Line 413 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.VisitNamespace(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol symbol, Microsoft.CodeAnalysis.CSharp.TypeCompilationState arg) Line 388 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol.Accept(Microsoft.CodeAnalysis.CSharp.CSharpSymbolVisitor visitor, Microsoft.CodeAnalysis.CSharp.TypeCompilationState argument) Line 141 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamespace(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol symbol) Line 413 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethodBodies(Microsoft.CodeAnalysis.CSharp.CSharpCompilation compilation, Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder moduleBeingBuiltOpt, bool emittingPdb, bool hasDeclarationErrors, bool emitMethodBodies, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag diagnostics, System.Predicate filterOpt, System.Threading.CancellationToken cancellationToken) Line 159 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileMethods(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder moduleBuilder, bool emittingPdb, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, System.Predicate filterOpt, System.Threading.CancellationToken cancellationToken) Line 3602 C#
Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.Compilation.Compile(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder moduleBuilder, bool emittingPdb, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, System.Predicate filterOpt, System.Threading.CancellationToken cancellationToken) Line 2619 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Emit.EmitHelpers.EmitDifference(Microsoft.CodeAnalysis.CSharp.CSharpCompilation compilation, Microsoft.CodeAnalysis.Emit.EmitBaseline baseline, System.Collections.Generic.IEnumerable edits, System.Func isAddedSymbol, System.IO.Stream metadataStream, System.IO.Stream ilStream, System.IO.Stream pdbStream, Microsoft.CodeAnalysis.Emit.EmitDifferenceOptions options, Microsoft.CodeAnalysis.CodeGen.CompilationTestData testData, System.Threading.CancellationToken cancellationToken) Line 124 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CSharpCompilation.EmitDifference(Microsoft.CodeAnalysis.Emit.EmitBaseline baseline, System.Collections.Generic.IEnumerable edits, System.Func isAddedSymbol, System.IO.Stream metadataStream, System.IO.Stream ilStream, System.IO.Stream pdbStream, Microsoft.CodeAnalysis.Emit.EmitDifferenceOptions options, Microsoft.CodeAnalysis.CodeGen.CompilationTestData testData, System.Threading.CancellationToken cancellationToken) Line 3851 C#
Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.Compilation.EmitDifference(Microsoft.CodeAnalysis.Emit.EmitBaseline baseline, System.Collections.Generic.IEnumerable edits, System.Func isAddedSymbol, System.IO.Stream metadataStream, System.IO.Stream ilStream, System.IO.Stream pdbStream, Microsoft.CodeAnalysis.Emit.EmitDifferenceOptions options, System.Threading.CancellationToken cancellationToken) Line 3148 C#
Microsoft.CodeAnalysis.Features.dll!Microsoft.CodeAnalysis.EditAndContinue.EditSession.EmitSolutionUpdateAsync(Microsoft.CodeAnalysis.Solution solution, Microsoft.CodeAnalysis.EditAndContinue.ActiveStatementSpanProvider solutionActiveStatementSpanProvider, Microsoft.CodeAnalysis.EditAndContinue.UpdateId updateId, System.Collections.Immutable.ImmutableDictionary runningProjects, System.Threading.CancellationToken cancellationToken) Line 1354 C#
```
Contributor guide
Assessment
This issue has not been assessed yet.