sentry-java icon indicating copy to clipboard operation
sentry-java copied to clipboard

ANRWatchDog reports ANRs from another app when used in the system app

Open denis-bezrukov opened this issue 1 month ago • 2 comments

Integration

sentry-android

Build System

Gradle

AGP Version

8.6.1

Proguard

Enabled

Version

8.11.1

Steps to Reproduce

Other environment details: Android 6

  1. Make the main app (when sentry installed) a system app. To achieve that, add android:sharedUserId="android.uid.system" to the android manifest
  2. Trigger an ANR in another app - can be just an example app that simply uses Thread.sleep in the main thread
  3. In the main app, we use Workmanager and some periodic workers, so the application eventually wakes up, then sleeps.

To simplify testing, I did something like in the main app:

viewModelScope.launch { 
     while (true) {
        Timber.tag("ANR").i("isAnr=${ANRWatchDog.isProcessNotResponding}")
        delay(5000)
     }
}

Then, I opened another app which simply sleeps forever in onCreate.

This is happening because ANRWatchDog.isProcessNotResponding may return false positives for system apps. That's happening because for system app am.getProcessesInErrorState() may return processes that do not belong to the current app because of wider permissions. I was able to validate this by checking ActivityManager.ProcessErrorStateInfo.processName.

Expected Result

Main app doesn't report ANR from other apps

Actual Result

Main app does report ANR from other apps

denis-bezrukov avatar Nov 20 '25 13:11 denis-bezrukov

JAVA-251

linear[bot] avatar Nov 20 '25 13:11 linear[bot]

Thanks for reporting, we'll have a look into this!

markushi avatar Nov 24 '25 10:11 markushi