Skip to content

PreserveDependencyAttribute on a type causes a fatal error #797

@stephentoub

Description

@stephentoub

The PreserveDependencyAttribute defined in mono currently doesn't allow it to be specified on types, but it should. When I add that allowance in corefx and try to use it on a type, however, the linker blows up with a null ref:

  Fatal error in IL Linker

  Unhandled Exception: Mono.Linker.MarkException: Error processing method: 'System.Void System.Text.Json.JsonSerializerOptions::.ctor()' in assembly: 'System.Text.Json.dll' ---> System.NullReferenceException: Object reference not set to an instance of an object.
     at Mono.Linker.Steps.MarkStep.MarkCustomAttributes(ICustomAttributeProvider provider)
     at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference)
     at Mono.Linker.Steps.MarkStep.MarkGenericArguments(IGenericInstance instance)
     at Mono.Linker.Steps.MarkStep.GetOriginalType(TypeReference type)
     at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference)
     at Mono.Linker.Steps.MarkStep.MarkMethod(MethodReference reference)
     at Mono.Linker.Steps.MarkStep.MarkInstruction(Instruction instruction)
     at Mono.Linker.Steps.MarkStep.MarkMethodBody(MethodBody body)
     at Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method)
     at Mono.Linker.Steps.MarkStep.ProcessQueue()
     --- End of inner exception stack trace ---
     at Mono.Linker.Steps.MarkStep.ProcessQueue()
     at Mono.Linker.Steps.MarkStep.ProcessPrimaryQueue()
     at Mono.Linker.Steps.MarkStep.Process()
     at Mono.Linker.Steps.MarkStep.Process(LinkContext context)
     at Mono.Linker.Pipeline.ProcessStep(LinkContext context, IStep step)
     at Mono.Linker.Pipeline.Process(LinkContext context)
     at Mono.Linker.Driver.Run(ILogger customLogger)
     at Mono.Linker.Driver.Execute(String[] args, ILogger customLogger)
     at Mono.Linker.Driver.Main(String[] args)

cc: @marek-safar

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions