Skip to content

Compilation fails when using module initializers and DebugType:pdbonly #56412

@zvirja

Description

@zvirja

Version Used:
.NET SDK 6.0.100-rc.1.21458.32

Steps to Reproduce:

  1. Create project with a single file:

    Proj.csproj

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <TargetFramework>net5.0</TargetFramework>
        <DebugType>pdbonly</DebugType>
      </PropertyGroup>
    </Project>

    ModuleInitializer.cs

    using System.Runtime.CompilerServices;
    
    internal static class ModuleInitializer
    {
        [ModuleInitializer]
        internal static void Init()
        {
        }
    }
  2. Build the project using e.g. dotnet build or Visual Studio/Rider

Expected Behavior: Project compiles

Actual Behavior:

Project compilation fails with an error: System.InvalidOperationException: This program location is thought to be unreachable

C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error : Unhandled exception. System.InvalidOperationException: This program location is thought to be unreachable. [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.Cci.RootModuleType.Microsoft.Cci.INamespaceTypeReference.GetUnit(EmitContext context) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.Cci.MetadataWriter.GetDefiningUnitReference(ITypeReference typeReference, EmitContext context) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.Cci.MetadataWriter.GetMethodHandle(IMethodReference methodReference) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.Cci.PdbWriter.SerializeDebugInfo(IMethodBody methodBody, StandaloneSignatureHandle localSignatureHandleOpt, CustomDebugInfoWriter customDebugInfoWriter) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.Cci.MetadataWriter.SerializeMethodBodies(BlobBuilder ilBuilder, PdbWriter nativePdbWriterOpt, Blob& mvidStringFixup) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.Cci.MetadataWriter.BuildMetadataAndIL(PdbWriter nativePdbWriterOpt, BlobBuilder ilBuilder, BlobBuilder mappedFieldDataBuilder, BlobBuilder managedResourceDataBuilder, Blob& mvidFixup, Blob& mvidStringFixup) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.Cci.PeWriter.WritePeToStream(EmitContext context, CommonMessageProvider messageProvider, Func`1 getPeStream, Func`1 getPortablePdbStreamOpt, PdbWriter nativePdbWriterOpt, String pdbPathOpt, Boolean metadataOnly, Boolean isDeterministic, Boolean emitTestCoverageData, Nullable`1 privateKeyOpt, CancellationToken cancellationToken) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.CodeAnalysis.Compilation.SerializePeToStream(CommonPEModuleBuilder moduleBeingBuilt, DiagnosticBag metadataDiagnostics, CommonMessageProvider messageProvider, Func`1 getPeStream, Func`1 getMetadataPeStreamOpt, Func`1 getPortablePdbStreamOpt, PdbWriter nativePdbWriterOpt, String pdbPathOpt, RebuildData rebuildData, Boolean metadataOnly, Boolean includePrivateMembers, Boolean isDeterministic, Boolean emitTestCoverageData, Nullable`1 privateKeyOpt, CancellationToken cancellationToken) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.CodeAnalysis.Compilation.SerializeToPeStream(CommonPEModuleBuilder moduleBeingBuilt, EmitStreamProvider peStreamProvider, EmitStreamProvider metadataPEStreamProvider, EmitStreamProvider pdbStreamProvider, RebuildData rebuildData, Func`2 testSymWriterFactory, DiagnosticBag diagnostics, EmitOptions emitOptions, Nullable`1 privateKeyOpt, CancellationToken cancellationToken) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.CodeAnalysis.CommonCompiler.CompileAndEmit(TouchedFileLogger touchedFilesLogger, Compilation& compilation, ImmutableArray`1 analyzers, ImmutableArray`1 generators, ImmutableArray`1 additionalTextFiles, AnalyzerConfigSet analyzerConfigSet, ImmutableArray`1 sourceFileAnalyzerConfigOptions, ImmutableArray`1 embeddedTexts, DiagnosticBag diagnostics, CancellationToken cancellationToken, CancellationTokenSource& analyzerCts, Boolean& reportAnalyzer, AnalyzerDriver& analyzerDriver) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.CodeAnalysis.CommonCompiler.RunCore(TextWriter consoleOutput, ErrorLogger errorLogger, CancellationToken cancellationToken) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.CodeAnalysis.CommonCompiler.Run(TextWriter consoleOutput, CancellationToken cancellationToken) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.CodeAnalysis.CSharp.CommandLine.Csc.<>c__DisplayClass1_0.<Run>b__0(TextWriter tw) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.CodeAnalysis.CommandLine.ConsoleUtil.RunWithUtf8Output[T](Func`2 func) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.CodeAnalysis.CommandLine.ConsoleUtil.RunWithUtf8Output[T](Boolean utf8Output, TextWriter textWriter, Func`2 func) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.CodeAnalysis.CSharp.CommandLine.Csc.Run(String[] args, BuildPaths buildPaths, TextWriter textWriter, IAnalyzerAssemblyLoader analyzerLoader) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.CodeAnalysis.CommandLine.BuildClient.RunCompilation(IEnumerable`1 originalArguments, BuildPaths buildPaths, TextWriter textWriter, String pipeName) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.CodeAnalysis.CommandLine.BuildClient.Run(IEnumerable`1 arguments, RequestLanguage language, CompileFunc compileFunc, CompileOnServerFunc compileOnServerFunc) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.CodeAnalysis.CSharp.CommandLine.Program.MainCore(String[] args) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Roslyn\Microsoft.CSharp.Core.targets(75,5): error :    at Microsoft.CodeAnalysis.CSharp.CommandLine.Program.Main(String[] args) [C:\Projects_External\ModuleInitializerPlayground\ModuleInitializerPlayground\ModuleInitializerPlayground.csproj]

Notes

It works fine with .NET Core SDK 5.0.401 (or any prior 5.x one).

It's a huge blocker as we rely on module initializers and it could block our migration to .NET Core 6 once that's RTM.

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions