Skip to content

An assertion failure in SourceMemberMethodSymbol.Flags.EnsureMetadataVirtual() #83978

@RikkiGibson

Description

@RikkiGibson

Version: 4dad840

I imagine that fixing the failed assertion will also fix the pool leak.
I tried to narrow down to the simplest possible reproducer, this is as far as I got.

I think what's essentially occurring is: emitting comp when it has a metadata reference to comp0, uses APIs on the source method symbol for U.Value.get, changing some internal state in the symbol. Then some related APIs are used by comp0.EmitToImageReference(), and a precondition gets violated.

This might be reproducible in non-union scenario also.

[Fact]
public void Repro_IsMetadataVirtualLocked_Assertion()
{
    var source1 = """
        public union U(int);
        """;

    var source2 = """
        class Program
        {
            int M1(U u)
            {
                return u switch
                {
                    object => 1
                };
            }
        }
        """;

    var comp0 = CreateCompilation([source1, UnionAttributeSource, IUnionSource], targetFramework: TargetFramework.Net100);
    var comp = CreateCompilation([source2], references: [comp0.ToMetadataReference()], targetFramework: TargetFramework.Net100);
    _ = comp.GetEmitDiagnostics();
    _ = comp0.EmitToImageReference();
}

Failure message:

      Microsoft.CodeAnalysis.CSharp.UnitTests.ClosedClassesTests.Repro_IsMetadataVirtualLocked_Assertion (1s 650ms): Error Message: System.AggregateException : One or more errors occurred. (One or more errors occurred. (!IsMetadataVirtualLocked)) (Pool leak detected! The following pooled objects were not returned:
        Microsoft.CodeAnalysis.DiagnosticBag (from DiagnosticBag.cs:340): 2
        Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag (from BindingDiagnosticBag.cs:16): 1
        Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedExplicitImplementationForwardingMethod] (from ArrayBuilder.cs:504): 1
        Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]] (from ArrayBuilder.cs:504): 1
      )
      ---- System.AggregateException : One or more errors occurred. (!IsMetadataVirtualLocked)
      -------- System.InvalidOperationException : !IsMetadataVirtualLocked
      ---- Pool leak detected! The following pooled objects were not returned:
        Microsoft.CodeAnalysis.DiagnosticBag (from DiagnosticBag.cs:340): 2
        Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag (from BindingDiagnosticBag.cs:16): 1
        Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedExplicitImplementationForwardingMethod] (from ArrayBuilder.cs:504): 1
        Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]] (from ArrayBuilder.cs:504): 1

      Stack Trace:

      ----- Inner Stack Trace #1 (System.AggregateException) -----
         at System.Threading.Tasks.TaskReplicator.Run[TState](ReplicatableUserAction`1 action, ParallelOptions options, Boolean stopOnFirstFailure)
         at System.Threading.Tasks.Parallel.ForWorker[TLocal,TInt](TInt fromInclusive, TInt toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
      --- End of stack trace from previous location ---
         at System.Threading.Tasks.Parallel.ForWorker[TLocal,TInt](TInt fromInclusive, TInt toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
         at System.Threading.Tasks.Parallel.For(Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body)
         at Roslyn.Utilities.RoslynParallel.For(Int32 fromInclusive, Int32 toExclusive, Action`1 body, CancellationToken cancellationToken) in C:\Users\rikki\src\roslyn\src\Compilers\Core\Portable\InternalUtilities\RoslynParallel.cs:line 24
         at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol.ForceComplete(SourceLocation locationOpt, Predicate`1 filter, CancellationToken cancellationToken) in C:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Symbols\Source\SourceNamespaceSymbol_Completion.cs:line 61
         at Microsoft.CodeAnalysis.CSharp.Symbols.SourceModuleSymbol.ForceComplete(SourceLocation locationOpt, Predicate`1 filter, CancellationToken cancellationToken) in C:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Symbols\Source\SourceModuleSymbol.cs:line 283
         at Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol.ForceComplete(SourceLocation locationOpt, Predicate`1 filter, CancellationToken cancellationToken) in C:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Symbols\Source\SourceAssemblySymbol.cs:line 930
         at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.GetSourceDeclarationDiagnostics(SyntaxTree syntaxTree, Nullable`1 filterSpanWithinTree, Func`4 locationFilterOpt, Predicate`1 symbolFilter, CancellationToken cancellationToken) in C:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Compilation\CSharpCompilation.cs:line 3408
         at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.GetDiagnosticsWithoutSeverityFiltering(CompilationStage stage, Boolean includeEarlierStages, BindingDiagnosticBag builder, Predicate`1 symbolFilter, CancellationToken cancellationToken) in C:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Compilation\CSharpCompilation.cs:line 3116
         at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.GetDiagnostics(CompilationStage stage, Boolean includeEarlierStages, DiagnosticBag diagnostics, Predicate`1 symbolFilter, CancellationToken cancellationToken) in C:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Compilation\CSharpCompilation.cs:line 3034
         at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.GetDiagnostics(CompilationStage stage, Boolean includeEarlierStages, Predicate`1 symbolFilter, CancellationToken cancellationToken) in C:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Compilation\CSharpCompilation.cs:line 3022
         at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileMethods(CommonPEModuleBuilder moduleBuilder, Boolean emittingPdb, DiagnosticBag diagnostics, Predicate`1 filterOpt, CancellationToken cancellationToken) in C:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Compilation\CSharpCompilation.cs:line 3657
         at Microsoft.CodeAnalysis.Compilation.Emit(Stream peStream, Stream metadataPEStream, Stream pdbStream, Stream xmlDocumentationStream, Stream win32Resources, IEnumerable`1 manifestResources, EmitOptions options, IMethodSymbol debugEntryPoint, Stream sourceLinkStream, IEnumerable`1 embeddedTexts, RebuildData rebuildData, CompilationTestData testData, C
      ancellationToken cancellationToken) in C:\Users\rikki\src\roslyn\src\Compilers\Core\Portable\Compilation\Compilation.cs:line 2988
         at Microsoft.CodeAnalysis.Test.Utilities.CompilationExtensions.EmitToArray(Compilation compilation, EmitOptions options, CompilationTestData testData, DiagnosticDescription[] expectedWarnings, Stream pdbStream, IMethodSymbol debugEntryPoint, Stream sourceLinkStream, IEnumerable`1 embeddedTexts, IEnumerable`1 manifestResources, Stream metadataPEStream
      ) in C:\Users\rikki\src\roslyn\src\Compilers\Test\Core\Compilation\CompilationExtensions.cs:line 75
         at Microsoft.CodeAnalysis.Test.Utilities.CompilationExtensions.EmitToPortableExecutableReference(Compilation comp, EmitOptions options, Boolean embedInteropTypes, ImmutableArray`1 aliases, DiagnosticDescription[] expectedWarnings, DocumentationProvider documentation) in C:\Users\rikki\src\roslyn\src\Compilers\Test\Core\Compilation\CompilationExtensio
      ns.cs:line 131
         at Microsoft.CodeAnalysis.Test.Utilities.CompilationExtensions.EmitToImageReference(Compilation comp, EmitOptions options, Boolean embedInteropTypes, ImmutableArray`1 aliases, DiagnosticDescription[] expectedWarnings, DocumentationProvider documentation) in C:\Users\rikki\src\roslyn\src\Compilers\Test\Core\Compilation\CompilationExtensions.cs:line 12
      1
         at Microsoft.CodeAnalysis.CSharp.UnitTests.ClosedClassesTests.Repro_IsMetadataVirtualLocked_Assertion() in C:\Users\rikki\src\roslyn\src\Compilers\CSharp\Test\CSharp15\ClosedClassesTests.cs:line 4704
         at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
         at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
      ----- Inner Stack Trace -----
         at Microsoft.CodeAnalysis.ThrowingTraceListener.Fail(String message, String detailMessage) in C:\Users\rikki\src\roslyn\src\Compilers\Shared\ThrowingTraceListener.cs:line 14
         at System.Diagnostics.TraceInternal.Fail(String message, String detailMessage)
         at System.Diagnostics.Debug.Fail(String message, String detailMessage)
         at Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol.Flags.EnsureMetadataVirtual() in C:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Symbols\Source\SourceMemberMethodSymbol.cs:line 284
         at Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol.EnsureMetadataVirtual() in C:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Symbols\Source\SourceMemberMethodSymbol.cs:line 604
         at Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol.SynthesizeInterfaceMemberImplementation(SymbolAndDiagnostics implementingMemberAndDiagnostics, Symbol interfaceMember) in C:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Symbols\Source\SourceMemberContainerSymbol_ImplementationChecks.cs:line 1909
         at Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol.ComputeInterfaceImplementations(BindingDiagnosticBag diagnostics, CancellationToken cancellationToken) in C:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Symbols\Source\SourceMemberContainerSymbol_ImplementationChecks.cs:line 179
         at Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol.GetSynthesizedExplicitImplementations(CancellationToken cancellationToken) in C:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Symbols\Source\SourceMemberContainerSymbol_ImplementationChecks.cs:line 52
         at Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol.ForceComplete(SourceLocation locationOpt, Predicate`1 filter, CancellationToken cancellationToken) in C:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Symbols\Source\SourceMemberContainerSymbol.cs:line 651
         at Microsoft.CodeAnalysis.CSharp.Symbol.ForceCompleteMemberConditionally(SourceLocation locationOpt, Predicate`1 filter, Symbol member, CancellationToken cancellationToken) in C:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Symbols\Symbol.cs:line 971
         at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol.<>c__DisplayClass68_1.<ForceComplete>b__0(Int32 i) in C:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Symbols\Source\SourceNamespaceSymbol_Completion.cs:line 64
         at Roslyn.Utilities.UICultureUtilities.<>c__DisplayClass1_0`1.<WithCurrentUICulture>b__0(T param) in C:\Users\rikki\src\roslyn\src\Compilers\Core\Portable\InternalUtilities\UICultureUtilities.cs:line 57
         at Roslyn.Utilities.RoslynParallel.<>c__DisplayClass1_0.<For>g__errorHandlingBody|0(Int32 i) in C:\Users\rikki\src\roslyn\src\Compilers\Core\Portable\InternalUtilities\RoslynParallel.cs:line 31
         at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`2.<ForWorker>b__1(RangeWorker& currentWorker, Int64 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
      --- End of stack trace from previous location ---
         at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`2.<ForWorker>b__1(RangeWorker& currentWorker, Int64 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
         at System.Threading.Tasks.TaskReplicator.Replica.Execute()
      ----- Inner Stack Trace #2 (Xunit.Sdk.XunitException) -----
         at Roslyn.Test.Utilities.ValidatePooledObjectsAttribute.After(MethodInfo methodUnderTest) in C:\Users\rikki\src\roslyn\src\Compilers\Test\Core\Assert\ValidatePooledObjectsAttribute.cs:line 101

Stack where the MetadataVirtualLocked bit is set:

Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol.Flags.IsMetadataVirtual(bool ignoreInterfaceImplementationChanges) Line 271 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Symbols\Source\SourceMemberMethodSymbol.cs:271)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol.IsMetadataVirtual(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol.IsMetadataVirtualOption option) Line 598 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Symbols\Source\SourceMemberMethodSymbol.cs:598)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.MayUseCallForStructMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol method) Line 2333 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitExpression.cs:2333)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitInstanceCallExpression.__determineEmitReceiverStrategy|164_0(Microsoft.CodeAnalysis.CSharp.BoundCall call, out Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.AddressKind? addressKind, out bool box) Line 1887 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitExpression.cs:1887)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitInstanceCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall call, Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.UseKind useKind) Line 1837 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitExpression.cs:1837)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall call, Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.UseKind useKind) Line 1641 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitExpression.cs:1641)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitExpressionCore(Microsoft.CodeAnalysis.CSharp.BoundExpression expression, bool used) Line 103 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitExpression.cs:103)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression expression, bool used) Line 67 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitExpression.cs:67)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitAssignmentValue(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator assignmentOperator) Line 3029 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitExpression.cs:3029)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitAssignmentExpression(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator assignmentOperator, Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.UseKind useKind) Line 2594 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitExpression.cs:2594)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitExpressionCore(Microsoft.CodeAnalysis.CSharp.BoundExpression expression, bool used) Line 99 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitExpression.cs:99)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitExpressionCoreWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundExpression expression, bool used) Line 83 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitExpression.cs:83)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression expression, bool used) Line 71 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitExpression.cs:71)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(Microsoft.CodeAnalysis.CSharp.BoundStatement statement) Line 60 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitStatement.cs:60)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatements(System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CSharp.BoundStatement> statements) Line 798 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitStatement.cs:798)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitUninstrumentedBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock block) Line 767 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitStatement.cs:767)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock block) Line 674 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitStatement.cs:674)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(Microsoft.CodeAnalysis.CSharp.BoundStatement statement) Line 32 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitStatement.cs:32)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatements(System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CSharp.BoundStatement> statements) Line 798 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitStatement.cs:798)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitUninstrumentedBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock block) Line 767 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitStatement.cs:767)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock block) Line 674 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitStatement.cs:674)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(Microsoft.CodeAnalysis.CSharp.BoundStatement statement) Line 32 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitStatement.cs:32)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatementAndCountInstructions(Microsoft.CodeAnalysis.CSharp.BoundStatement statement) Line 121 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitStatement.cs:121)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitSequencePointStatement(Microsoft.CodeAnalysis.CSharp.BoundSequencePoint node) Line 406 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\CodeGenerator.cs:406)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(Microsoft.CodeAnalysis.CSharp.BoundStatement statement) Line 40 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitStatement.cs:40)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatements(System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CSharp.BoundStatement> statements) Line 798 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitStatement.cs:798)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitUninstrumentedBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock block) Line 767 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitStatement.cs:767)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock block) Line 674 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitStatement.cs:674)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(Microsoft.CodeAnalysis.CSharp.BoundStatement statement) Line 32 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitStatement.cs:32)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatementList(Microsoft.CodeAnalysis.CSharp.BoundStatementList list) Line 129 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitStatement.cs:129)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(Microsoft.CodeAnalysis.CSharp.BoundStatement statement) Line 64 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\EmitStatement.cs:64)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.GenerateImpl() Line 296 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\CodeGenerator.cs:296)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.Generate(out bool hasStackalloc) Line 225 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\CodeGen\CodeGenerator.cs:225)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder moduleBuilder, Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol method, int methodOrdinal, Microsoft.CodeAnalysis.CSharp.BoundStatement block, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.Emit.EncLambdaInfo> lambdaDebugInfo, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CodeGen.LambdaRuntimeRudeEditInfo> orderedLambdaRuntimeRudeEdits, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.Emit.EncClosureInfo> closureDebugInfo, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CodeGen.StateMachineStateDebugInfo> stateMachineStateDebugInfos, Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol stateMachineTypeOpt, Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator variableSlotAllocatorOpt, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag diagnostics, Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider debugDocumentProvider, Microsoft.CodeAnalysis.CSharp.ImportChain importChainOpt, bool emittingPdb, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CodeGen.SourceSpan> codeCoverageSpans, Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEntryPointSymbol.AsyncForwardEntryPoint entryPointOpt) Line 1718 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Compiler\MethodCompiler.cs:1718)
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 1372 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Compiler\MethodCompiler.cs:1372)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol containingType) Line 561 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Compiler\MethodCompiler.cs:561)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.VisitNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol symbol, Microsoft.CodeAnalysis.CSharp.TypeCompilationState arg) Line 434 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Compiler\MethodCompiler.cs:434)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol.Accept<Microsoft.CodeAnalysis.CSharp.TypeCompilationState, object>(Microsoft.CodeAnalysis.CSharp.CSharpSymbolVisitor<Microsoft.CodeAnalysis.CSharp.TypeCompilationState, object> visitor, Microsoft.CodeAnalysis.CSharp.TypeCompilationState argument) Line 962 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Symbols\NamedTypeSymbol.cs:962)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamespace(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol symbol) Line 413 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Compiler\MethodCompiler.cs:413)
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<Microsoft.CodeAnalysis.CSharp.Symbol> filterOpt, System.Threading.CancellationToken cancellationToken) Line 159 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Compiler\MethodCompiler.cs:159)
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileMethods(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder moduleBuilder, bool emittingPdb, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, System.Predicate<Microsoft.CodeAnalysis.Symbols.ISymbolInternal> filterOpt, System.Threading.CancellationToken cancellationToken) Line 3722 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Portable\Compilation\CSharpCompilation.cs:3722)
Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.Compilation.Emit(System.IO.Stream peStream, System.IO.Stream metadataPEStream, System.IO.Stream pdbStream, System.IO.Stream xmlDocumentationStream, System.IO.Stream win32Resources, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.ResourceDescription> manifestResources, Microsoft.CodeAnalysis.Emit.EmitOptions options, Microsoft.CodeAnalysis.IMethodSymbol debugEntryPoint, System.IO.Stream sourceLinkStream, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.EmbeddedText> embeddedTexts, Microsoft.CodeAnalysis.RebuildData rebuildData, Microsoft.CodeAnalysis.CodeGen.CompilationTestData testData, System.Threading.CancellationToken cancellationToken) Line 2988 (c:\Users\rikki\src\roslyn\src\Compilers\Core\Portable\Compilation\Compilation.cs:2988)
Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.Compilation.Emit(System.IO.Stream peStream, System.IO.Stream pdbStream, System.IO.Stream xmlDocumentationStream, System.IO.Stream win32Resources, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.ResourceDescription> manifestResources, Microsoft.CodeAnalysis.Emit.EmitOptions options, Microsoft.CodeAnalysis.IMethodSymbol debugEntryPoint, System.IO.Stream sourceLinkStream, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.EmbeddedText> embeddedTexts, System.IO.Stream metadataPEStream, Microsoft.CodeAnalysis.RebuildData rebuildData, System.Threading.CancellationToken cancellationToken) Line 2929 (c:\Users\rikki\src\roslyn\src\Compilers\Core\Portable\Compilation\Compilation.cs:2929)
Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.Compilation.Emit(System.IO.Stream peStream, System.IO.Stream pdbStream, System.IO.Stream xmlDocumentationStream, System.IO.Stream win32Resources, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.ResourceDescription> manifestResources, Microsoft.CodeAnalysis.Emit.EmitOptions options, Microsoft.CodeAnalysis.IMethodSymbol debugEntryPoint, System.IO.Stream sourceLinkStream, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.EmbeddedText> embeddedTexts, System.IO.Stream metadataPEStream, System.Threading.CancellationToken cancellationToken) Line 2817 (c:\Users\rikki\src\roslyn\src\Compilers\Core\Portable\Compilation\Compilation.cs:2817)
Microsoft.CodeAnalysis.Test.Utilities.dll!Microsoft.CodeAnalysis.DiagnosticExtensions.GetEmitDiagnostics<Microsoft.CodeAnalysis.CSharp.CSharpCompilation>(Microsoft.CodeAnalysis.CSharp.CSharpCompilation c, Microsoft.CodeAnalysis.Emit.EmitOptions options, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.ResourceDescription> manifestResources) Line 369 (c:\Users\rikki\src\roslyn\src\Compilers\Test\Core\Diagnostics\DiagnosticExtensions.cs:369)
Microsoft.CodeAnalysis.Test.Utilities.dll!Microsoft.CodeAnalysis.DiagnosticExtensions.GetEmitDiagnostics<Microsoft.CodeAnalysis.CSharp.CSharpCompilation>(Microsoft.CodeAnalysis.CSharp.CSharpCompilation c) Line 381 (c:\Users\rikki\src\roslyn\src\Compilers\Test\Core\Diagnostics\DiagnosticExtensions.cs:381)
Microsoft.CodeAnalysis.CSharp.CSharp15.UnitTests.dll!Microsoft.CodeAnalysis.CSharp.UnitTests.ClosedClassesTests.Repro_IsMetadataVirtualLocked_Assertion() Line 4701 (c:\Users\rikki\src\roslyn\src\Compilers\CSharp\Test\CSharp15\ClosedClassesTests.cs:4701)

Metadata

Metadata

Assignees

Type

No fields configured for Bug.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions