Skip to content

ANR: io.sentry.android.core.DeviceInfoUtil.lambda$setDeviceIO$0 #4963

@akniyetc

Description

@akniyetc

Integration

sentry-android

Build System

Gradle

AGP Version

8.13.0

Proguard

Enabled

Version

8.25.0

Steps to Reproduce

Enable additional context collection

SentryAndroid.init(context) { options ->
     options.isCollectAdditionalContext = true
}

Whenever sentry tries to capture device metadata via android.app.ContextImpl.getExternalFilesDirs any other threads trying to access android.app.ContextImpl.getExternalFilesDirs is blocked

Expected Result

No ANRs, device metadata captured asynchronously

Actual Result

  1. ANR
"DefaultDispatcher-worker-9" tid=54 Blocked
  at android.app.ContextImpl.getExternalFilesDirs (ContextImpl.java:836)
  at android.content.ContextWrapper.getExternalFilesDirs (ContextWrapper.java:307)
  at io.sentry.android.core.DeviceInfoUtil.getExternalStorageDep (DeviceInfoUtil.java:419)
  at io.sentry.android.core.DeviceInfoUtil.getExternalStorageStat (DeviceInfoUtil.java:407)
  at io.sentry.android.core.DeviceInfoUtil.lambda$setDeviceIO$0 (DeviceInfoUtil.java:242)
  at io.sentry.android.core.internal.util.AndroidRuntimeManager.lambda$runWithRelaxedPolicy$0 (AndroidRuntimeManager.java:28)
  at io.sentry.android.core.internal.util.AndroidRuntimeManager.runWithRelaxedPolicy (AndroidRuntimeManager.java:17)
  at io.sentry.android.core.internal.util.AndroidRuntimeManager.runWithRelaxedPolicy (AndroidRuntimeManager.java:26)
  at io.sentry.android.core.DeviceInfoUtil.setDeviceIO (DeviceInfoUtil.java:232)
  at io.sentry.android.core.DeviceInfoUtil.collectDeviceInformation (DeviceInfoUtil.java:151)
  at io.sentry.android.core.DefaultAndroidEventProcessor.setDevice (DefaultAndroidEventProcessor.java:185)
  at io.sentry.android.core.DefaultAndroidEventProcessor.setCommons (DefaultAndroidEventProcessor.java:141)
  at io.sentry.android.core.DefaultAndroidEventProcessor.process (DefaultAndroidEventProcessor.java:82)
  at io.sentry.SentryClient.processEvent (SentryClient.java:444)
  at io.sentry.SentryClient.captureEvent (SentryClient.java:153)
  at io.sentry.Scopes.captureEventInternal (Scopes.java:156)
  at io.sentry.Scopes.captureEvent (Scopes.java:130)
  at io.sentry.IScopes.captureEvent (IScopes.java:40)
  at io.sentry.Sentry.captureEvent (Sentry.java:746)
  at com.deliveryhero.errormonitoring.sentry.SentryTimberTree$captureEvent$1.invokeSuspend (SentryTimberTree.java:80)
  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:34)
  at kotlinx.coroutines.DispatchedTask.run (DispatchedTask.kt:100)
  at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely (CoroutineScheduler.java:586)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask (CoroutineScheduler.kt:829)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker (CoroutineScheduler.kt:717)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run (CoroutineScheduler.kt:704)

"main" tid=1 Blocked
  at android.app.ContextImpl.getFilesDir (ContextImpl.java:791)
  at android.content.ContextWrapper.getFilesDir (ContextWrapper.java:282)
  at m140.dch.a (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:2)
  at com.google.android.gms.maps.internal.CreatorImpl.c (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:151)
  at com.google.android.gms.maps.internal.CreatorImpl.newMapViewDelegate (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:23)
  at com.google.android.gms.maps.internal.h.bt (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:311)
  at m140.ayg.onTransact (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:21)
  at android.os.Binder.transact (Binder.java:1164)
  at com.google.android.gms.internal.maps.zza.zzJ (zza.java:2)
  at com.google.android.gms.maps.internal.zze.zzg (com.google.android.gms:play-services-maps@@19.0.0:4)
  at com.google.android.gms.maps.zzai.zzb (com.google.android.gms:play-services-maps@@19.0.0:4)
  at com.google.android.gms.maps.zzai.createDelegate (com.google.android.gms:play-services-maps@@19.0.0:1)
  at com.google.android.gms.dynamic.DeferredLifecycleHelper.zaf (com.google.android.gms:play-services-base@@18.7.2:6)
  at com.google.android.gms.dynamic.DeferredLifecycleHelper.onCreate (DeferredLifecycleHelper.java:1)
  at com.google.android.gms.maps.MapView.onCreate (com.google.android.gms:play-services-maps@@19.0.0:4)
  at com.deliveryhero.multimapsdk.googleprovider.ui.GoogleMapProviderFragment.onCreateView (GoogleMapProviderFragment.kt:30)
  at androidx.fragment.app.Fragment.performCreateView (Fragment.java:3119)
  at androidx.fragment.app.FragmentStateManager.createView (FragmentStateManager.java:577)
  at androidx.fragment.app.FragmentStateManager.moveToExpectedState (FragmentStateManager.java:286)
  at androidx.fragment.app.FragmentManager.executeOpsTogether (FragmentManager.java:2214)
  at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute (FragmentManager.java:2109)
  at androidx.fragment.app.FragmentManager.execPendingActions (FragmentManager.java:2052)
  at androidx.fragment.app.FragmentManager$5.run (FragmentManager.java:703)
  at android.os.Handler.handleCallback (Handler.java:942)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:201)
  at android.os.Looper.loop (Looper.java:288)
  at android.app.ActivityThread.main (ActivityThread.java:8046)
  at java.lang.reflect.Method.invoke (Native method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:703)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:911)
  1. ANR:
"DefaultDispatcher-worker-45" tid=172 Native
  #00  pc 0x00000000000e5598  /apex/com.android.runtime/lib64/bionic/libc.so (mkdirat+8)
  #01  pc 0x00000000000243a4  /apex/com.android.art/lib64/libopenjdk.so (Java_java_io_UnixFileSystem_createDirectory0+92)
  at java.io.UnixFileSystem.createDirectory0 (Native method)
  at java.io.UnixFileSystem.createDirectory (UnixFileSystem.java:405)
  at java.io.File.mkdir (File.java:1339)
  at java.io.File.mkdirs (File.java:1378)
  at java.io.File.mkdirs (File.java:1377)
  at android.app.ContextImpl.ensureExternalDirsExistOrFilter (ContextImpl.java:3537)
  at android.app.ContextImpl.getExternalFilesDirs (ContextImpl.java:858)
  at android.app.ContextImpl.getExternalFilesDir (ContextImpl.java:847)
  at android.content.ContextWrapper.getExternalFilesDir (ContextWrapper.java:302)
  at io.sentry.android.core.DeviceInfoUtil.lambda$setDeviceIO$0 (DeviceInfoUtil.java:234)
  at io.sentry.android.core.internal.util.AndroidRuntimeManager.lambda$runWithRelaxedPolicy$0 (AndroidRuntimeManager.java:28)
  at io.sentry.android.core.internal.util.AndroidRuntimeManager.runWithRelaxedPolicy (AndroidRuntimeManager.java:17)
  at io.sentry.android.core.internal.util.AndroidRuntimeManager.runWithRelaxedPolicy (AndroidRuntimeManager.java:26)
  at io.sentry.android.core.DeviceInfoUtil.setDeviceIO (DeviceInfoUtil.java:232)
  at io.sentry.android.core.DeviceInfoUtil.collectDeviceInformation (DeviceInfoUtil.java:151)
  at io.sentry.android.core.DefaultAndroidEventProcessor.setDevice (DefaultAndroidEventProcessor.java:185)
  at io.sentry.android.core.DefaultAndroidEventProcessor.setCommons (DefaultAndroidEventProcessor.java:141)
  at io.sentry.android.core.DefaultAndroidEventProcessor.process (DefaultAndroidEventProcessor.java:82)
  at io.sentry.SentryClient.processEvent (SentryClient.java:444)
  at io.sentry.SentryClient.captureEvent (SentryClient.java:153)
  at io.sentry.Scopes.captureEventInternal (Scopes.java:156)
  at io.sentry.Scopes.captureEvent (Scopes.java:130)
  at io.sentry.IScopes.captureEvent (IScopes.java:40)
  at io.sentry.Sentry.captureEvent (Sentry.java:746)
  at com.deliveryhero.errormonitoring.sentry.SentryTimberTree$captureEvent$1.invokeSuspend (SentryTimberTree.java:80)
  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:34)
  at kotlinx.coroutines.DispatchedTask.run (DispatchedTask.kt:100)
  at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely (CoroutineScheduler.java:586)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask (CoroutineScheduler.kt:829)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker (CoroutineScheduler.kt:717)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run (CoroutineScheduler.kt:704)

"main" tid=1 Blocked
  at android.app.ContextImpl.getFilesDir (ContextImpl.java:808)
  at android.content.ContextWrapper.getFilesDir (ContextWrapper.java:282)
  at m140.fuj.a (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:1)
  at m140.fui.c (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:214)
  at m140.fui.a (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:7)
  at m140.fui.d (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:9)
  at m140.fvc.b (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:5)
  at m140.fvb.a (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:1)
  at m140.fuf.b (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:5)
  at m140.fsd.a (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:608)
  at m140.frc.f (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:126)
  at m140.fqm.by (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:12)
  at m140.jgm.b (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:3)
  at m140.ciz.d (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:7)
  at m140.cle.f (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:9)
  at m140.cip.a (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:7)
  at m140.cle.i (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:166)
  at m140.cgw.b (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:33)
  at com.google.maps.api.android.lib6.impl.hl.c (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:48)
  at m140.cxl.run (:com.google.android.gms.policy_maps_core_dynamite@254125201@254125200025.815771884.815771884:14)
  at android.os.Handler.handleCallback (Handler.java:942)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:201)
  at android.os.Looper.loop (Looper.java:288)
  at android.app.ActivityThread.main (ActivityThread.java:8194)
  at java.lang.reflect.Method.invoke (Native method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:703)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:911)

Metadata

Metadata

Assignees

Projects

Status

Waiting for: Product Owner

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions