"Internal error in the C# compiler" when try to evaluate statement in Watch\Immediate window
See original GitHub issueVersion Used: Microsoft Visual Studio Enterprise 2017 Version 15.0.26228.9 D15RTWSVC Microsoft .NET Framework Version 4.6.01586
Project target framework: .NETCoreApp 1.1 .NET Framework 4.5.2
Steps to Reproduce:
- Paste the following methods:
class Program
{
static void M(out int x) { x = 10; }
static void Main(string[] args)
{
}
}
-
Run the program and put a break point in the start of method “Main”
-
When break point hit, paste the following statement in Watch window or in the Immediate window:
new Func<int>(delegate { int x; var y = new Func<int>(() => { M(out x); return 1; }).Invoke(); return y; }).Invoke()
Expected Behavior: “1” will printed
Actual Behavior: “Internal error in the C# compiler” printed
StackTrace: “The given key was not present in the dictionary.”
> mscorlib.dll!System.Collections.Generic.Dictionary<System.__Canon, System.__Canon>.this[System.__Canon].get(System.__Canon key) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1.RecordVarRead(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol local) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1.VisitLocal(Microsoft.CodeAnalysis.CSharp.BoundLocal node) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundLocal.Accept(Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor visitor) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1.VisitExpressionCore(Microsoft.CodeAnalysis.CSharp.BoundExpression node, Microsoft.CodeAnalysis.CSharp.CodeGen.ExprContext context) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1.VisitExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression node, Microsoft.CodeAnalysis.CSharp.CodeGen.ExprContext context) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1.VisitAssignmentOperator(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator node) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator.Accept(Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor visitor) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1.VisitExpressionCore(Microsoft.CodeAnalysis.CSharp.BoundExpression node, Microsoft.CodeAnalysis.CSharp.CodeGen.ExprContext context) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1.VisitExpressionCoreWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundExpression node, Microsoft.CodeAnalysis.CSharp.CodeGen.ExprContext context) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1.VisitExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression node, Microsoft.CodeAnalysis.CSharp.CodeGen.ExprContext context) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1.VisitExpressionStatement(Microsoft.CodeAnalysis.CSharp.BoundExpressionStatement node) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundExpressionStatement.Accept(Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor visitor) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1.VisitStatement(Microsoft.CodeAnalysis.CSharp.BoundNode node) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode node) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.DoVisitList<Microsoft.CodeAnalysis.CSharp.BoundStatement>(System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CSharp.BoundStatement> list) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock node) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1.VisitBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock node) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.BoundBlock.Accept(Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor visitor) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1.VisitStatement(Microsoft.CodeAnalysis.CSharp.BoundNode node) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode node) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1.Analyze(Microsoft.CodeAnalysis.CSharp.BoundNode node, System.Collections.Generic.Dictionary<Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol, Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo> locals, bool debugFriendly) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.Optimizer.Optimize(Microsoft.CodeAnalysis.CSharp.BoundStatement src, bool debugFriendly, out System.Collections.Generic.HashSet<Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol> stackLocals) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.CodeGenerator(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol method, Microsoft.CodeAnalysis.CSharp.BoundStatement boundBody, Microsoft.CodeAnalysis.CodeGen.ILBuilder builder, Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder moduleBuilder, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, Microsoft.CodeAnalysis.OptimizationLevel optimizations, bool emittingPdb) Unknown
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.CodeGen.LambdaDebugInfo> lambdaDebugInfo, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo> closureDebugInfo, Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol stateMachineTypeOpt, Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator variableSlotAllocatorOpt, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider debugDocumentProvider, Microsoft.CodeAnalysis.CSharp.ImportChain importChainOpt, bool emittingPdb, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CodeGen.SourceSpan> dynamicAnalysisSpans) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileSynthesizedMethods(Microsoft.CodeAnalysis.CSharp.TypeCompilationState compilationState) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileSynthesizedMethods(System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> additionalTypes, Microsoft.CodeAnalysis.DiagnosticBag diagnostics) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethodBodies(Microsoft.CodeAnalysis.CSharp.CSharpCompilation compilation, Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder moduleBeingBuiltOpt, bool generateDebugInfo, bool hasDeclarationErrors, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, System.Predicate<Microsoft.CodeAnalysis.CSharp.Symbol> filterOpt, System.Threading.CancellationToken cancellationToken) Unknown
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileMethods(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder moduleBuilder, bool emittingPdb, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, System.Predicate<Microsoft.CodeAnalysis.ISymbol> filterOpt, System.Threading.CancellationToken cancellationToken) Unknown
Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.Compilation.Compile(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder moduleBuilder, bool emittingPdb, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, System.Predicate<Microsoft.CodeAnalysis.ISymbol> filterOpt, System.Threading.CancellationToken cancellationToken) Unknown
Microsoft.CodeAnalysis.CSharp.ExpressionEvaluator.ExpressionCompiler.dll!Microsoft.CodeAnalysis.CSharp.ExpressionEvaluator.CompilationContext.CompileExpression(string typeName, string methodName, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.ExpressionEvaluator.Alias> aliases, Microsoft.CodeAnalysis.CodeGen.CompilationTestData testData, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, out Microsoft.CodeAnalysis.ExpressionEvaluator.ResultProperties resultProperties) Unknown
Microsoft.CodeAnalysis.CSharp.ExpressionEvaluator.ExpressionCompiler.dll!Microsoft.CodeAnalysis.CSharp.ExpressionEvaluator.EvaluationContext.CompileExpression(string expr, Microsoft.VisualStudio.Debugger.Evaluation.DkmEvaluationFlags compilationFlags, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.ExpressionEvaluator.Alias> aliases, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, out Microsoft.CodeAnalysis.ExpressionEvaluator.ResultProperties resultProperties, Microsoft.CodeAnalysis.CodeGen.CompilationTestData testData) Unknown
Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.dll!Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.Microsoft.VisualStudio.Debugger.ComponentInterfaces.IDkmClrExpressionCompiler.CompileExpression.AnonymousMethod__1(Microsoft.CodeAnalysis.ExpressionEvaluator.EvaluationContextBase context, Microsoft.CodeAnalysis.DiagnosticBag diagnostics) Unknown
Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.dll!Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.CompileWithRetry<Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.CompileExpressionResult>(System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.ExpressionEvaluator.MetadataBlock> metadataBlocks, Microsoft.CodeAnalysis.DiagnosticFormatter formatter, Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.CreateContextDelegate createContext, Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.CompileDelegate<Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.CompileExpressionResult> compile, Microsoft.CodeAnalysis.ExpressionEvaluator.DkmUtilities.GetMetadataBytesPtrFunction getMetaDataBytesPtr, out string errorMessage) Unknown
Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.dll!Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.CompileWithRetry<Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.CompileExpressionResult>(Microsoft.VisualStudio.Debugger.Clr.DkmClrModuleInstance moduleInstance, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.ExpressionEvaluator.MetadataBlock> metadataBlocks, Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.CreateContextDelegate createContext, Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.CompileDelegate<Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.CompileExpressionResult> compile, out string errorMessage) Unknown
Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.dll!Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.Microsoft.VisualStudio.Debugger.ComponentInterfaces.IDkmClrExpressionCompiler.CompileExpression(Microsoft.VisualStudio.Debugger.Evaluation.DkmLanguageExpression expression, Microsoft.VisualStudio.Debugger.Clr.DkmClrInstructionAddress instructionAddress, Microsoft.VisualStudio.Debugger.Evaluation.DkmInspectionContext inspectionContext, out string error, out Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmCompiledClrInspectionQuery result) Unknown
Microsoft.VisualStudio.Debugger.Engine.dll!Microsoft.VisualStudio.Debugger.EntryPoint.IDkmClrExpressionCompiler_CompileExpression(System.IntPtr pvClassInfo, System.IntPtr Expression, System.IntPtr InstructionAddress, System.IntPtr InspectionContext, ref System.IntPtr Error, ref System.IntPtr Result) Unknown
[Native to Managed Transition]
[Managed to Native Transition]
Microsoft.VisualStudio.Debugger.Engine.dll!Microsoft.VisualStudio.Debugger.Evaluation.DkmLanguageExpression.CompileExpression(Microsoft.VisualStudio.Debugger.Clr.DkmClrInstructionAddress InstructionAddress, Microsoft.VisualStudio.Debugger.Evaluation.DkmInspectionContext InspectionContext, out string Error, out Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmCompiledClrInspectionQuery Result) Unknown
vsdebugeng.manimpl.dll!VSDebugEngine.ManagedEE.EntryPoint.Microsoft.VisualStudio.Debugger.ComponentInterfaces.IDkmLanguageExpressionEvaluator.EvaluateExpression(Microsoft.VisualStudio.Debugger.Evaluation.DkmInspectionContext inspectionContext, Microsoft.VisualStudio.Debugger.DkmWorkList workList, Microsoft.VisualStudio.Debugger.Evaluation.DkmLanguageExpression expression, Microsoft.VisualStudio.Debugger.CallStack.DkmStackWalkFrame stackFrame, Microsoft.VisualStudio.Debugger.DkmCompletionRoutine<Microsoft.VisualStudio.Debugger.Evaluation.DkmEvaluateExpressionAsyncResult> completionRoutine) Unknown
Microsoft.VisualStudio.Debugger.Engine.dll!Microsoft.VisualStudio.Debugger.EntryPoint.IDkmLanguageExpressionEvaluator_EvaluateExpression(System.IntPtr pvClassInfo, System.IntPtr InspectionContext, System.IntPtr WorkList, System.IntPtr Expression, System.IntPtr StackFrame, System.IntPtr CompletionRoutine) Unknown
Issue Analytics
- State:
- Created 6 years ago
- Comments:14 (12 by maintainers)
Top Results From Across the Web
VS 2017 immediate window shows "Internal error in the C# ...
Visual Studio gives me a warning about checking this option, but turning this on I can evaluate expressions in the immediate window again....
Read more >Watch: Internal error in the C++ compiler
I am trying to debug a C# unit test, this test calls managed C++ code. ... string "Internal error in the C++ compiler"...
Read more >errorReport (Report Internal Compiler Errors)
The compiler automatically sends reports of internal errors to Microsoft, if reporting is enabled by Windows Error Reporting.
Read more >Internal Compiler Error
This page provides details about the internal compiler error. It explains what actions you can take if you experience this error.
Read more >12 Errors and Error Handling
When the compiler fails to compile the program, for example a syntax error. Logical errors: When a program does not behave as intended,...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Unfortunately the issue still wasn’t fixed in VS 2022
@RussKie This error occurs when the expression being evaluated contains nested lambdas where the inner lambda closes over a local declared in the outer lambda.