dotnet / linker

388 stars 126 forks source link

Debug.Assert (GetPreservedMethods (definition) == null) sometimes fails #3115

Open jtschuster opened 1 year ago

jtschuster commented 1 year ago

From https://github.com/dotnet/linker/issues/3112#issuecomment-1313617781

This fails with 7.0 linker, but works with Release build of main (8.0 linker). With Debug build of 8.0 linker this asserts here https://github.com/dotnet/linker/blob/9c993bf401377209cd7b4e84b60deab5e4f421a2/src/linker/Linker/Annotations.cs#L506 with callstack:

illink.dll!Mono.Linker.AnnotationStore.AddPreservedMethod(Mono.Cecil.IMemberDefinition definition, Mono.Cecil.MethodDefinition method) Line 506 C# illink.dll!Mono.Linker.AnnotationStore.AddPreservedMethod(Mono.Cecil.TypeDefinition type, Mono.Cecil.MethodDefinition method) Line 476 C# Microsoft.Android.Sdk.ILLink.dll!MonoDroid.Tuner.MarkJavaObjects.PreserveMethod(Mono.Cecil.TypeDefinition type, Mono.Cecil.MethodDefinition method) Line 154 C# Microsoft.Android.Sdk.ILLink.dll!MonoDroid.Tuner.MarkJavaObjects.PreserveIntPtrConstructor(Mono.Cecil.TypeDefinition type) Line 112 C# Microsoft.Android.Sdk.ILLink.dll!MonoDroid.Tuner.MarkJavaObjects.PreserveJavaObjectImplementation(Mono.Cecil.TypeDefinition type) Line 61 C# Microsoft.Android.Sdk.ILLink.dll!MonoDroid.Tuner.MarkJavaObjects.ProcessType(Mono.Cecil.TypeDefinition type) Line 46 C# illink.dll!Mono.Linker.Steps.MarkStep.MarkType(Mono.Cecil.TypeReference reference, Mono.Linker.DependencyInfo reason, Mono.Linker.MessageOrigin? origin) Line 1961 C#

jtschuster commented 1 year ago

@sbomer Could you look at this part of #3112?