Skip to content

AccessViolationException in ILLink in .NET 7 #86807

@jonathanpeppers

Description

@jonathanpeppers

We have a integration test that builds 100 class libraries for use in an Android app. This works most of the time, but sometimes on Windows we hit:

    Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
       at Mono.Cecil.MetadataReader.RangesSize(Mono.Cecil.Range[])
       at Mono.Cecil.MetadataReader.ReadCustomAttributes(Mono.Cecil.ICustomAttributeProvider)
       at Mono.Cecil.Mixin+<>c.<GetCustomAttributes>b__13_0(Mono.Cecil.ICustomAttributeProvider, Mono.Cecil.MetadataReader)
       at Mono.Cecil.ModuleDefinition.Read[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.__Canon ByRef, System.__Canon, System.Func`3<System.__Canon,Mono.Cecil.MetadataReader,System.__Canon>)
       at Mono.Cecil.Mixin.GetCustomAttributes(Mono.Cecil.ICustomAttributeProvider, Mono.Collections.Generic.Collection`1<Mono.Cecil.CustomAttribute> ByRef, Mono.Cecil.ModuleDefinition)
       at Mono.Cecil.MethodDefinition.get_CustomAttributes()
       at Microsoft.Android.Sdk.ILLink.ApplyPreserveAttribute.GetPreserveAttributes(Mono.Cecil.ICustomAttributeProvider)
       at Microsoft.Android.Sdk.ILLink.ApplyPreserveAttribute.MarkMethodIfPreserved(Mono.Cecil.MethodDefinition)
       at Microsoft.Android.Sdk.ILLink.ApplyPreserveAttribute.ProcessMethod(Mono.Cecil.MethodDefinition)
       at Mono.Linker.Steps.MarkSubStepsDispatcher.DispatchMethod(Mono.Cecil.MethodDefinition)
       at Mono.Linker.Steps.MarkSubStepsDispatcher.BrowseTypes(Mono.Collections.Generic.Collection`1<Mono.Cecil.TypeDefinition>)
       at Mono.Linker.Steps.MarkSubStepsDispatcher.BrowseTypes(Mono.Collections.Generic.Collection`1<Mono.Cecil.TypeDefinition>)
       at Mono.Linker.Steps.MarkSubStepsDispatcher.BrowseAssembly(Mono.Cecil.AssemblyDefinition)
       at Mono.Linker.Steps.MarkSubStepsDispatcher.<Initialize>b__5_0(Mono.Cecil.AssemblyDefinition)
       at Mono.Linker.Steps.MarkStep.MarkAssembly(Mono.Cecil.AssemblyDefinition, Mono.Linker.DependencyInfo)
       at Mono.Linker.Steps.MarkStep.MarkModule(Mono.Cecil.ModuleDefinition, Mono.Linker.DependencyInfo)
       at Mono.Linker.Steps.MarkStep.MarkType(Mono.Cecil.TypeReference, Mono.Linker.DependencyInfo, System.Nullable`1<Mono.Linker.MessageOrigin>)
       at Mono.Linker.Steps.MarkStep.ProcessMarkedPending()
       at Mono.Linker.Steps.MarkStep.Initialize()
       at Mono.Linker.Steps.MarkStep.Process(Mono.Linker.LinkContext)
       at Mono.Linker.Pipeline.ProcessStep(Mono.Linker.LinkContext, Mono.Linker.Steps.IStep)
       at Mono.Linker.Pipeline.Process(Mono.Linker.LinkContext)
       at Mono.Linker.Driver.Run(Mono.Linker.ILogger)
       at Mono.Linker.Driver.Main(System.String[])
    Errors
        C:\a\_work\1\s\bin\Release\dotnet\sdk\7.0.100-rc.1.22425.9\Sdks\Microsoft.NET.ILLink.Tasks\build\Microsoft.NET.ILLink.targets(133,5): error MSB6006: "dotnet.exe" exited with code 57005. [C:\a\_work\1\a\TestRelease\08-31_14.34.17\temp\BuildAMassiveApp\App1\App1.csproj]
    OutputProperties
        _ILLinkExitCode = 57005

I believe this started happening here:

This Maestro bump, I believe, was the first time we ever saw something like this.

Logs: accessviolation.zip

Let me know if you need the entire project, I believe the solution with 100+ class libraries is too large to attach here.

/fyi @sbomer

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    No status

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions