Skip to content

Linker OutputStep failing  #1713

@mdh1418

Description

@mdh1418

When running dotnet/runtime library tests in the effort to trim out assemblies, this linker error is hit.

ILLink: error IL1012: IL Linker has encountered an unexpected error. Please report the issue at https://github.com/mono/linker/issues
Fatal error in IL Linker
Unhandled exception. Mono.Linker.InternalErrorException: Step 'OutputStep' failed when processing assembly 'Microsoft.DotNet.RemoteExecutor, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
 ---> Mono.Linker.LinkerFatalErrorException: ILLink: error IL1011: Failed to write 'linked/Microsoft.DotNet.RemoteExecutor.dll
 ---> System.ArgumentException: Member 'System.Int32 Microsoft.DotNet.RemoteExecutor.Program::Main(System.String[])' is declared in another module and needs to be imported
   at Mono.Cecil.MetadataBuilder.LookupToken(IMetadataTokenProvider provider)
   at Mono.Cecil.MetadataBuilder.BuildModule()
   at Mono.Cecil.MetadataBuilder.BuildMetadata()
   at Mono.Cecil.ModuleWriter.<>c.<BuildMetadata>b__2_0(MetadataBuilder builder, MetadataReader _)
   at Mono.Cecil.ModuleDefinition.Read[TItem,TRet](TItem item, Func`3 read)
   at Mono.Cecil.ModuleWriter.BuildMetadata(ModuleDefinition module, MetadataBuilder metadata)
   at Mono.Cecil.ModuleWriter.Write(ModuleDefinition module, Disposable`1 stream, WriterParameters parameters)
   at Mono.Cecil.ModuleWriter.WriteModule(ModuleDefinition module, Disposable`1 stream, WriterParameters parameters)
   at Mono.Cecil.ModuleDefinition.Write(String fileName, WriterParameters parameters)
   at Mono.Cecil.AssemblyDefinition.Write(String fileName, WriterParameters parameters)
   at Mono.Linker.Steps.OutputStep.WriteAssembly(AssemblyDefinition assembly, String directory, WriterParameters writerParameters)
   --- End of inner exception stack trace ---
   at Mono.Linker.Steps.OutputStep.WriteAssembly(AssemblyDefinition assembly, String directory, WriterParameters writerParameters)
   at Mono.Linker.Steps.OutputStep.WriteAssembly(AssemblyDefinition assembly, String directory)
   at Mono.Linker.Steps.OutputStep.OutputAssembly(AssemblyDefinition assembly)
   at Mono.Linker.Steps.OutputStep.ProcessAssembly(AssemblyDefinition assembly)
   at Mono.Linker.Steps.BaseStep.Process(LinkContext context)
   --- End of inner exception stack trace ---
   at Mono.Linker.Steps.BaseStep.Process(LinkContext context)
   at Mono.Linker.Pipeline.Process(LinkContext context)
   at Mono.Linker.Driver.Run(ILogger customLogger)
   at Mono.Linker.Driver.Main(String[] args)
Abort trap: 6

Zip file repro steps
Unzip the following and modify the first part of repro.sh /Users/mdhwang/runtime_wasm_clean/.dotnet/dotnet "/Users/mdhwang/.nuget/packages/microsoft.net.illink.tasks/6.0.0-alpha.1.20621.1/tools/net5.0/illink.dll" to conform to local dotnet and illink.
OutputStepLinker.zip

Dotnet/runtime repro steps
Check out https://github.com/mdh1418/runtime/commits/mdhwang/trim_library_tests_linker_bug
In the repo root
./build.sh -os Browser -arch wasm -c Debug
./dotnet.sh build /t:Test src/libraries/System.Buffers/tests/ /p:TargetOS=Browser /p:TargetArchitecture=wasm /p:Configuration=Debug /p:RunNormal=true

/cc @marek-safar

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions