Skip to content

Potential ANR / GC regression in .NET 10 Android compared to .NET 9 #11327

@dbSoft-SoftwareSolutions

Description

Android framework version

net10.0-android

Affected platform version

Vs2026 net10

Description

We are seeing a significant increase in ANRs after moving our Android app from .NET 9 to .NET 10.

The same application and usage pattern appears stable on .NET 9, but when targeting .NET 10 we start receiving frequent ANR reports in Google Play Console.

Important detail:
Crashlytics does not report corresponding fatal crashes. The app appears to freeze / become unresponsive rather than crash with an uncaught exception.

Observed behavior:

  • .NET 9 Android build: ANRs are gone or extremely rare
  • .NET 10 Android build: ANRs return frequently
  • Same app logic
  • Same user workflow
  • Same devices / customers
  • No matching Crashlytics crashes

ANR traces often include native/runtime/GC related frames such as:

  • art::gc::collector::ConcurrentCopying
  • Runtime.gc
  • libart.so
  • Android Runtime / GC activity

App context:

  • Android POS / hospitality application
  • Built with C# / .NET for Android
  • Uses multiple Activities
  • Heavy UI rendering in some screens
  • Uses FFImageLoading / SVG image rendering and caching
  • ANRs appear sporadic, not always reproducible locally

We already tested disabling several build/runtime optimizations:

false None false false

These changes did not eliminate the ANRs in .NET 10.

Additional observations:

  • Adding more awaits / avoiding synchronous UI-heavy operations reduced ANRs, but did not fully explain the difference between .NET 9 and .NET 10.
  • The strongest signal is that .NET 9 behaves normally while .NET 10 produces ANRs under similar real-world usage.

Could there be a runtime / GC / Android workload regression in .NET 10 that could cause longer stalls or ANRs compared to .NET 9?

What diagnostic information would be most useful for us to provide?

Steps to Reproduce

  1. Build and deploy the application using .NET 10 for Android in Release mode.
  2. Use the application under normal production workload:
    • frequent Activity navigation
    • image rendering
    • SVG/image caching
    • async network/database operations
  3. Leave the application running during real-world usage for extended periods.
  4. After some time, Android starts reporting ANRs in Google Play Console.

Observed result:

  • ANRs occur sporadically
  • ANR traces frequently contain GC/runtime related frames:
    • art::gc::collector::ConcurrentCopying
    • Runtime.gc
    • libart.so
  • Firebase Crashlytics does not report matching fatal crashes.

Important comparison:

  • Rebuilding the same application on .NET 9 significantly reduces or eliminates the ANRs under the same workload and devices.

Did you find any workaround?

No response

Relevant log output

Most of errors contains Mediatek MT6769 processor

error1.txt
error2.txt
Image
Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    need-attentionA xamarin-android contributor needs to review

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions