Assert failing when trimming Maui Android app
- Dominant language
- C#
- Stars
- 392
- Forks
- 128
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 2
Description
### Repro steps
1. Install Maui, or build it from source: https://github.com/dotnet/maui/blob/main/.github/DEVELOPMENT.md (ping @eerhardt if you are going to set it up yourself. It is currently a little hard to set up.)
2. `dotnet new maui`
3. `dotnet restore`
4. `dotnet build -f net6.0-android -r android-arm64 -c Release --no-restore /bl`
5. Look at the command line passed to `$task illink`, and use that command line with a `Debug` built linker.
6. Running the Debug linker with the same command line hits assertions here:
https://github.com/dotnet/linker/blob/c4abaf33f967a8fa42eb20fc386b774ad74ef319/src/linker/Linker/Annotations.cs#L490-L495

| Name | Value | Type
-- | -- | -- | --
◢ | GetPreservedMethods (definition) | Count = 1 | System.Collections.Generic.List
| ▶ [0] | {System.Void GoogleGson.FieldNamingPolicyInvoker::.ctor(System.IntPtr,Android.Runtime.JniHandleOwnership)} | Mono.Cecil.MethodDefinition
| ▶ Raw View | |
▶ | method | {System.Void GoogleGson.FieldNamingPolicyInvoker::.ctor(System.IntPtr,Android.Runtime.JniHandleOwnership)} | Mono.Cecil.MethodDefinition
```
> illink.dll!Mono.Linker.AnnotationStore.AddPreservedMethod(Mono.Cecil.IMemberDefinition definition, Mono.Cecil.MethodDefinition method) Line 494 C#
illink.dll!Mono.Linker.AnnotationStore.AddPreservedMethod(Mono.Cecil.TypeDefinition type, Mono.Cecil.MethodDefinition method) Line 464 C#
Microsoft.Android.Sdk.ILLink.dll!MonoDroid.Tuner.MarkJavaObjects.PreserveMethod(Mono.Cecil.TypeDefinition type, Mono.Cecil.MethodDefinition method) Line 151 C#
Microsoft.Android.Sdk.ILLink.dll!MonoDroid.Tuner.MarkJavaObjects.PreserveIntPtrConstructor(Mono.Cecil.TypeDefinition type) Line 109 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 44 C#
illink.dll!Mono.Linker.Steps.MarkStep.MarkType(Mono.Cecil.TypeReference reference, Mono.Linker.DependencyInfo reason, Mono.Linker.MessageOrigin? origin) Line 1870 C#
illink.dll!Mono.Linker.Steps.MarkStep.MarkField(Mono.Cecil.FieldDefinition field, Mono.Linker.DependencyInfo reason) Line 1679 C#
illink.dll!Mono.Linker.Steps.MarkStep.MarkEntireType(Mono.Cecil.TypeDefinition type, Mono.Linker.DependencyInfo reason) Line 377 C#
illink.dll!Mono.Linker.Steps.MarkStep.MarkEntireAssembly(Mono.Cecil.AssemblyDefinition assembly) Line 1409 C#
illink.dll!Mono.Linker.Steps.MarkStep.MarkAssembly(Mono.Cecil.AssemblyDefinition assembly, Mono.Linker.DependencyInfo reason) Line 1385 C#
illink.dll!Mono.Linker.Steps.MarkStep.MarkModule(Mono.Cecil.ModuleDefinition module, Mono.Linker.DependencyInfo reason) Line 1736 C#
illink.dll!Mono.Linker.Steps.MarkStep.ProcessMarkedPending() Line 503 C#
illink.dll!Mono.Linker.Steps.MarkStep.Initialize() Line 250 C#
illink.dll!Mono.Linker.Steps.MarkStep.Process(Mono.Linker.LinkContext context) Line 240 C#
illink.dll!Mono.Linker.Pipeline.ProcessStep(Mono.Linker.LinkContext context, Mono.Linker.Steps.IStep step) Line 166 C#
illink.dll!Mono.Linker.Pipeline.Process(Mono.Linker.LinkContext context) Line 159 C#
illink.dll!Mono.Linker.Driver.Run(Mono.Linker.ILogger customLogger, bool throwOnFatalLinkerException) Line 779 C#
illink.dll!Mono.Linker.Driver.Main(string[] args) Line 61 C#
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.