Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

csc.exe exited with code -2146232797. Null reference exception in CSharp.SpillSequenceSpiller.Spill #47191

Closed
vsfeedback opened this issue Aug 27, 2020 · 2 comments · Fixed by #47428

Comments

@vsfeedback
Copy link

This issue has been moved from a ticket on Developer Community.


[severity:I'm unable to use this version of Visual Studio] [regression] [worked-in:16.6.5]
Project build fails in multiple modules (large project) since upgrading to either 16.7.1 and 16.7.2. Uninstalling and reinstalling VS 16.6.5 succeeds.

  • System

    • Provider

    [ Name] .NET Runtime

    • EventID 1025

    [ Qualifiers] 0

    Version 0

    Level 2

    Task 0

    Opcode 0

    Keywords 0x80000000000000

    • TimeCreated

    [ SystemTime] 2020-08-26T16:20:47.9100490Z

    EventRecordID 18327

    Correlation

    • Execution

    [ ProcessID] 0
    [ ThreadID] 0

    Channel Application

    Computer BRODSKY-OMEN

    Security

  • EventData
    Application: csc.exe Framework Version: v4.0.30319 Description: The application requested process termination through System.Environment.FailFast(string message). Message: System.NullReferenceException: Object reference not set to an instance of an object. at Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller.Spill(BoundSpillSequenceBuilder builder, BoundExpression expression, RefKind refKind, Boolean sideEffectsOnly) at Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller.g__fieldWithSpilledReceiver|28_0(BoundFieldAccess field, BoundSpillSequenceBuilder& leftBuilder, Boolean isAssignmentTarget) at Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller.g__fieldWithSpilledReceiver|28_0(BoundFieldAccess field, BoundSpillSequenceBuilder& leftBuilder, Boolean isAssignmentTarget) at Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller.VisitAssignmentOperator(BoundAssignmentOperator node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.VisitExpressionWithoutStackGuard(BoundExpression node) at Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.VisitExpressionWithStackGuard(BoundExpression node) at Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.VisitExpressionWithStackGuard(Int32& recursionDepth, BoundExpression node) at Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller.VisitExpression(BoundSpillSequenceBuilder& builder, BoundExpression expression) at Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller.VisitExpressionStatement(BoundExpressionStatement node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(BoundNode node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitSequencePoint(BoundSequencePoint node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(BoundNode node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.DoVisitList[T](ImmutableArray1 list) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitStatementList(BoundStatementList node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(BoundNode node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.DoVisitList[T](ImmutableArray1 list) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitBlock(BoundBlock node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(BoundNode node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitSequencePointWithSpan(BoundSequencePointWithSpan node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(BoundNode node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.DoVisitList[T](ImmutableArray1 list) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitBlock(BoundBlock node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(BoundNode node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.DoVisitList[T](ImmutableArray1 list) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitStatementList(BoundStatementList node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(BoundNode node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitSequencePointWithSpan(BoundSequencePointWithSpan node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(BoundNode node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.DoVisitList[T](ImmutableArray1 list) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitBlock(BoundBlock node) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(BoundNode node) at Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller.Rewrite(BoundStatement body, MethodSymbol method, TypeCompilationState compilationState, DiagnosticBag diagnostics) at Microsoft.CodeAnalysis.CSharp.LocalRewriter.Rewrite(CSharpCompilation compilation, MethodSymbol method, Int32 methodOrdinal, NamedTypeSymbol containingType, BoundStatement statement, TypeCompilationState compilationState, SynthesizedSubmissionFields previousSubmissionFields, Boolean allowOmissionOfConditionalCalls, Boolean instrumentForDynamicAnalysis, ImmutableArray1& dynamicAnalysisSpans, DebugDocumentProvider debugDocumentProvider, DiagnosticBag diagnostics, Boolean& sawLambdas, Boolean& sawLocalFunctions, Boolean& sawAwaitInExceptionHandler) at Microsoft.CodeAnalysis.CSharp.MethodCompiler.LowerBodyOrInitializer(MethodSymbol method, Int32 methodOrdinal, BoundStatement body, SynthesizedSubmissionFields previousSubmissionFields, TypeCompilationState compilationState, Boolean instrumentForDynamicAnalysis, DebugDocumentProvider debugDocumentProvider, ImmutableArray1& dynamicAnalysisSpans, DiagnosticBag diagnostics, VariableSlotAllocator& lazyVariableSlotAllocator, ArrayBuilder1 lambdaDebugInfoBuilder, ArrayBuilder1 closureDebugInfoBuilder, StateMachineTypeSymbol& stateMachineTypeOpt) at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(MethodSymbol methodSymbol, Int32 methodOrdinal, ProcessedFieldInitializers& processedInitializers, SynthesizedSubmissionFields previousSubmissionFields, TypeCompilationState compilationState) at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(NamedTypeSymbol containingType) at Microsoft.CodeAnalysis.CSharp.MethodCompiler.<>c__DisplayClass22_0.<CompileNamedTypeAsync>b__0() Stack: at System.Environment.FailFast(System.String, System.Exception) at Microsoft.CodeAnalysis.FailFast.OnFatalException(System.Exception) at Microsoft.CodeAnalysis.FatalError.ReportUnlessCanceled(System.Exception) at Microsoft.CodeAnalysis.CSharp.MethodCompiler+<>c__DisplayClass22_0.<CompileNamedTypeAsync>b__0() at Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller.Spill(BoundSpillSequenceBuilder, Microsoft.CodeAnalysis.CSharp.BoundExpression, Microsoft.CodeAnalysis.RefKind, Boolean) at Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller.<VisitAssignmentOperator>g__fieldWithSpilledReceiver|28_0(Microsoft.CodeAnalysis.CSharp.BoundFieldAccess, BoundSpillSequenceBuilder ByRef, Boolean) at Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller.<VisitAssignmentOperator>g__fieldWithSpilledReceiver|28_0(Microsoft.CodeAnalysis.CSharp.BoundFieldAccess, BoundSpillSequenceBuilder ByRef, Boolean) at Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller.VisitAssignmentOperator(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.VisitExpressionWithoutStackGuard(Microsoft.CodeAnalysis.CSharp.BoundExpression) at Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.VisitExpressionWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundExpression) at Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.VisitExpressionWithStackGuard(Int32 ByRef, Microsoft.CodeAnalysis.CSharp.BoundExpression) at Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller.VisitExpression(BoundSpillSequenceBuilder ByRef, Microsoft.CodeAnalysis.CSharp.BoundExpression) at Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller.VisitExpressionStatement(Microsoft.CodeAnalysis.CSharp.BoundExpressionStatement) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitSequencePoint(Microsoft.CodeAnalysis.CSharp.BoundSequencePoint) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.DoVisitList[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Collections.Immutable.ImmutableArray1<System.__Canon>) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitStatementList(Microsoft.CodeAnalysis.CSharp.BoundStatementList) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.DoVisitList[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089] at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitSequencePointWithSpan(Microsoft.CodeAnalysis.CSharp.BoundSequencePointWithSpan) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.DoVisitList[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089] at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.DoVisitList[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089] at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitStatementList(Microsoft.CodeAnalysis.CSharp.BoundStatementList) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitSequencePointWithSpan(Microsoft.CodeAnalysis.CSharp.BoundSequencePointWithSpan) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.DoVisitList[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089] at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock) at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriterWithStackGuard.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode) at Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller.Rewrite(Microsoft.CodeAnalysis.CSharp.BoundStatement, Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Microsoft.CodeAnalysis.CSharp.TypeCompilationState, Microsoft.CodeAnalysis.DiagnosticBag) at Microsoft.CodeAnalysis.CSharp.LocalRewriter.Rewrite(Microsoft.CodeAnalysis.CSharp.CSharpCompilation, Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Int32, Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol, Microsoft.CodeAnalysis.CSharp.BoundStatement, Microsoft.CodeAnalysis.CSharp.TypeCompilationState, Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields, Boolean, Boolean, System.Collections.Immutable.ImmutableArray1<Microsoft.CodeAnalysis.CodeGen.SourceSpan> ByRef, Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider, Microsoft.CodeAnalysis.DiagnosticBag, Boolean ByRef, Boolean ByRef, Boolean ByRef) at Microsoft.CodeAnalysis.CSharp.MethodCompiler.LowerBodyOrInitializer(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Int32, Microsoft.CodeAnalysis.CSharp.BoundStatement, Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields, Microsoft.CodeAnalysis.CSharp.TypeCompilationState, Boolean, Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider, System.Collections.Immutable.ImmutableArray1<Microsoft.CodeAnalysis.CodeGen.SourceSpan> ByRef, Microsoft.CodeAnalysis.DiagnosticBag, Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator ByRef, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1<Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo>, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1<Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo>, Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol ByRef) at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Int32, ProcessedFieldInitializers ByRef, Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields, Microsoft.CodeAnalysis.CSharp.TypeCompilationState) at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol) at Microsoft.CodeAnalysis.CSharp.MethodCompiler+<>c__DisplayClass22_0.b__0() at Roslyn.Utilities.UICultureUtilities+<>c__DisplayClass5_0.b__0() at System.Threading.Tasks.Task.Execute() at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef) at System.Threading.Tasks.Task.ExecuteEntry(Boolean) at System.Threading.ThreadPoolWorkQueue.Dispatch()

Original Comments

Dada Huo [MSFT] on 8/27/2020, 02:13 AM:

Thank you for your feedback! In order for us to investigate this further, could you please provide a sample solution that has this problem so that we can conduct further research? It would be very helpful if you could provide some screenshots of this problem.

We look forward to hearing from you!

Mark Brodsky on 8/27/2020, 08:52 AM:

Attempting to narrow down:

Build inside VS or command-line: csc.exe exception

Build project from command-line: csc.exe exception

Execute csc.exe command from command-line (e.g. no msbuild): builds successfully. Copy/pasted command from msbuild output into bat(ch) file and executed batch file.


Original Solutions

(no solutions)

@jaredpar
Copy link
Member

jaredpar commented Sep 3, 2020

With Mark's help (thank you!) we were able to track down a repro for this problem.

using System;
using System.Threading.Tasks;
struct S1
{
    public int Field;
}

public class C 
{
    static S1 lightingDefault;
    static async Task M(Task<int> t) 
    {
        lightingDefault.Field = await t;
    }
}

The key is that we're doing an update on a nested struct field where the container is stack. The spilling of that is causing the crash to occur

@RikkiGibson
Copy link
Contributor

Fixed in #47428

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

Successfully merging a pull request may close this issue.

3 participants