Skip to content

DiskReadViolation on Timber.e #4647

@francescoDojo

Description

@francescoDojo

Integration

sentry-android

Build System

Gradle

AGP Version

8.10.1

Proguard

Enabled

Version

8.19.1 or 8.17.0

Steps to Reproduce

        val threadPolicyBuilder = StrictMode.ThreadPolicy.Builder()
            .detectAll()
            .penaltyLog()
            .penaltyDialog()
            .penaltyDeath()

        StrictMode.setThreadPolicy(threadPolicyBuilder.build())

Call the following method with Timber integration.

 Timber.e(IllegalStateException(), "Some message")

Note that this looks like happening with Android 7.1.1 and 8.0, not able to test with other devices.
Note that if using Timber.e(IllegalStateException()) without message looks like the disk read violation is not happening

Expected Result

No StrictMode violations should happen

Actual Result

 StrictMode policy violation; ~duration=64 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=458783 violation=2 (Ask Gemini)
	at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1293)
	at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:249)
	at java.io.File.exists(File.java:780)
	at android.app.ContextImpl.ensureExternalDirsExistOrFilter(ContextImpl.java:2252)
	at android.app.ContextImpl.getExternalFilesDirs(ContextImpl.java:635)
	at android.content.ContextWrapper.getExternalFilesDirs(ContextWrapper.java:245)
	at io.sentry.android.core.DeviceInfoUtil.getExternalStorageDep(DeviceInfoUtil.java:413)
	at io.sentry.android.core.DeviceInfoUtil.getExternalStorageStat(DeviceInfoUtil.java:401)
	at io.sentry.android.core.DeviceInfoUtil.setDeviceIO(DeviceInfoUtil.java:237)
	at io.sentry.android.core.DeviceInfoUtil.collectDeviceInformation(DeviceInfoUtil.java:151)
	at io.sentry.android.core.DefaultAndroidEventProcessor.setDevice(DefaultAndroidEventProcessor.java:187)
	at io.sentry.android.core.DefaultAndroidEventProcessor.setCommons(DefaultAndroidEventProcessor.java:144)
	at io.sentry.android.core.DefaultAndroidEventProcessor.process(DefaultAndroidEventProcessor.java:85)
	at io.sentry.SentryClient.processEvent(SentryClient.java:445)
	at io.sentry.SentryClient.captureEvent(SentryClient.java:154)
	at io.sentry.Scopes.captureEventInternal(Scopes.java:158)
	at io.sentry.Scopes.captureEvent(Scopes.java:132)
	at io.sentry.Sentry.captureEvent(Sentry.java:724)
	at io.sentry.ScopesAdapter.captureEvent(ScopesAdapter.java:31)
	at io.sentry.IScopes.captureEvent(IScopes.java:40)
	at io.sentry.android.timber.SentryTimberTree.captureEvent(SentryTimberTree.kt:214)
	at io.sentry.android.timber.SentryTimberTree.logWithSentry(SentryTimberTree.kt:184)
	at io.sentry.android.timber.SentryTimberTree.e(SentryTimberTree.kt:112)
	at timber.log.Timber$Forest.e(Timber.kt:342)
	...
	at android.view.View.performClick(View.java:5637)
	at android.view.View$PerformClick.run(View.java:22433)
	at android.os.Handler.handleCallback(Handler.java:751)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:154)
	at android.app.ActivityThread.main(ActivityThread.java:6121)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)

Metadata

Metadata

Assignees

Labels

No fields configured for issues without a type.

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions