dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
14.5k stars 4.52k forks source link

Android App crashes with abort_application() #102752

Open Cheesebaron opened 4 weeks ago

Cheesebaron commented 4 weeks ago

Description

I asked the Android team on Discord for help and @grendello suggested I ask here.

We have an net8.0-android App which over the past 28 days has crashed 1.18k times, with a stack trace looking like this:

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 15428 >>> dk.TrackMan.Range <<<

backtrace:
  #00  pc 0x000000000005b730  /apex/com.android.runtime/lib64/bionic/libc.so (abort+168)
  #01  pc 0x000000000001f360  /data/app/~~oWkaprkaM-X9XxV2Lq1pYQ==/dk.TrackMan.Range-O-vSFm8F64wPfrurmwaykg==/split_config.arm64_v8a.apk!libmono-android.release.so (xamarin::android::Helpers::abort_application()+8) (BuildId: 7feeaaea39e016c6c3bff7e94f0388b70b31f6ba)
  #02  pc 0x0000000000035660  /data/app/~~oWkaprkaM-X9XxV2Lq1pYQ==/dk.TrackMan.Range-O-vSFm8F64wPfrurmwaykg==/split_config.arm64_v8a.apk!libmono-android.release.so (xamarin::android::internal::MonodroidRuntime::mono_log_handler(char const*, char const*, char const*, int, void*)+144) (BuildId: 7feeaaea39e016c6c3bff7e94f0388b70b31f6ba)
  #03  pc 0x00000000001d71e4  /data/app/~~oWkaprkaM-X9XxV2Lq1pYQ==/dk.TrackMan.Range-O-vSFm8F64wPfrurmwaykg==/split_config.arm64_v8a.apk!libmonosgen-2.0.so (BuildId: 0f098099f9864f5dd2f171de2c2842c264a97a1d)
  #04  pc 0x00000000001d726c  /data/app/~~oWkaprkaM-X9XxV2Lq1pYQ==/dk.TrackMan.Range-O-vSFm8F64wPfrurmwaykg==/split_config.arm64_v8a.apk!libmonosgen-2.0.so (BuildId: 0f098099f9864f5dd2f171de2c2842c264a97a1d)
  #05  pc 0x0000000000151814  /data/app/~~oWkaprkaM-X9XxV2Lq1pYQ==/dk.TrackMan.Range-O-vSFm8F64wPfrurmwaykg==/split_config.arm64_v8a.apk!libmonosgen-2.0.so (BuildId: 0f098099f9864f5dd2f171de2c2842c264a97a1d)
  #06  pc 0x0000000000151eb4  /data/app/~~oWkaprkaM-X9XxV2Lq1pYQ==/dk.TrackMan.Range-O-vSFm8F64wPfrurmwaykg==/split_config.arm64_v8a.apk!libmonosgen-2.0.so (BuildId: 0f098099f9864f5dd2f171de2c2842c264a97a1d)
  #07  pc 0x0000000000152e8c  /data/app/~~oWkaprkaM-X9XxV2Lq1pYQ==/dk.TrackMan.Range-O-vSFm8F64wPfrurmwaykg==/split_config.arm64_v8a.apk!libmonosgen-2.0.so (BuildId: 0f098099f9864f5dd2f171de2c2842c264a97a1d)
  #08  pc 0x0000000000005500 

It seems to be happening mostly on arm64 devices, but they are also the most prevalent in our install base:

crashes distributed by Android version and by Device

@grendello asked me for the libmonosgen-2.0.so file to figure out where the crash happens and he ended up here:

0x151814
/__w/1/s/src/mono/mono/mini/mini-trampolines.c:217

0x151eb4
/__w/1/s/src/mono/mono/mini/mini-trampolines.c:478

0x152e8c
/__w/1/s/src/mono/mono/mini/mini-trampolines.c:850

The libmonosgen-2.0.so and libmonodroid.so files Archive.zip

The app is built with the following properties:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0-android</TargetFramework>
    <OutputType>Exe</OutputType>
    <ApplicationId>dk.TrackMan.Range</ApplicationId>
    <ApplicationVersion>1337</ApplicationVersion>
    <ApplicationDisplayVersion>2.10.0</ApplicationDisplayVersion>
    <RootNamespace>TrackMan.DrivingRangeApp.Droid</RootNamespace>

    <Configurations>Debug;Release;Labs;UITest</Configurations>

    <AndroidHttpClientHandlerType>Xamarin.Android.Net.AndroidMessageHandler</AndroidHttpClientHandlerType>
    <AndroidPackageFormat>apk</AndroidPackageFormat>
    <SupportedOSPlatformVersion>28</SupportedOSPlatformVersion>
  </PropertyGroup>

  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <AndroidPackageFormat>aab</AndroidPackageFormat>
    <JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
    <AndroidEnableMultiDex>true</AndroidEnableMultiDex>
    <EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
    <AndroidUseAssemblyStore>true</AndroidUseAssemblyStore>
  </PropertyGroup>

  <PropertyGroup Condition=" '$(TF_BUILD)' == 'true' ">
    <DesignTimeBuild>false</DesignTimeBuild>
    <ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
    <Deterministic>false</Deterministic>
  </PropertyGroup>

Using dotnet publish project.csproj /p:PublishTrimmed=true

Reproduction Steps

I have no idea how to reproduce it and haven't seen it myself. Only the 1.18k crashes in Google Play Console.

Expected behavior

Preferably the App would not crash.

Actual behavior

Lots of Crashes.

Regression?

I see it for older versions of the App to, so I don't believe so.

Known Workarounds

No response

Configuration

@(#)Version 8.0.524.21615 @Commit: 087e15321bb712ef6fe8b0ba6f8bd12facf92629

Android 14, 13, 12, 10

Arm64

net8.0-android

In the pipeline this was built on Windows using .NET 8.0.300

Workloads:

microsoft.net.sdk.android version 34.0.95 Microsoft.Android.Sdk.Windows version 33.0.95 Microsoft.Android.Runtime.34.android-arm64 version 34.0.95 Microsoft.NETCore.App.Runtime.Mono.android-arm64 version 8.0.5 Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm64 version 8.0.5

Other information

No response

dotnet-policy-service[bot] commented 4 weeks ago

Tagging subscribers to this area: @lambdageek, @steveisok See info in area-owners.md if you want to be subscribed.