Skip to content

Strict mode DiskReadViolation while initializing HttpClient #4817

@insearching

Description

@insearching

Hi all,
I'm facing a disk read violation while initializing my HttpClient with Koin DI.

Here is how I initialize the HttpClient:
val remoteModule = module { single { HttpClientFactory.create(CIO.create()) } }

Here is the configuration of StrictMode:

StrictMode.setThreadPolicy( ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() .penaltyLog() .build() )

And here is a stack of a StrinctMode itself:

StrictMode policy violation; ~duration=227 ms: android.os.strictmode.DiskReadViolation (Ask Gemini) at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1728) at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:301) at java.io.File.isDirectory(File.java:859) at dalvik.system.DexPathList$Element.findResource(DexPathList.java:788) at dalvik.system.DexPathList.findResources(DexPathList.java:572) at dalvik.system.BaseDexClassLoader.findResources(BaseDexClassLoader.java:330) at java.lang.ClassLoader.getResources(ClassLoader.java:1450) at java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(ServiceLoader.java:1157) at java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1184) at java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1238) at java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1367) at java.nio.channels.spi.SelectorProvider.loadProviderAsService(SelectorProvider.java:122) at java.nio.channels.spi.SelectorProvider.-$$Nest$smloadProviderAsService(Unknown Source:0) at java.nio.channels.spi.SelectorProvider$1.run(SelectorProvider.java:180) at java.nio.channels.spi.SelectorProvider$1.run(SelectorProvider.java:176) at java.security.AccessController.doPrivileged(AccessController.java:46) at java.nio.channels.spi.SelectorProvider.provider(SelectorProvider.java:175) at io.ktor.network.selector.SelectorManagerSupport.<init>(SelectorManagerSupport.kt:18) at io.ktor.network.selector.ActorSelectorManager.<init>(ActorSelectorManager.kt:18) at io.ktor.network.selector.SelectorManagerKt.SelectorManager(SelectorManager.kt:13) at io.ktor.client.engine.cio.CIOEngine.<init>(CIOEngine.kt:32) at io.ktor.client.engine.cio.CIO.create(CIOCommon.kt:34) at io.ktor.client.engine.HttpClientEngineFactory$DefaultImpls.create$default(HttpClientEngine.kt:118) at kma.voice.text.recorder.di.RemoteModuleKt.remoteModule$lambda$1$lambda$0(RemoteModule.kt:12) at kma.voice.text.recorder.di.RemoteModuleKt.$r8$lambda$wr-v9Z4C-b0NtNszDlru3pGEF6g(Unknown Source:0) at kma.voice.text.recorder.di.RemoteModuleKt$$ExternalSyntheticLambda0.invoke(D8$$SyntheticClass:0) at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:51) at org.koin.core.instance.SingleInstanceFactory.create(SingleInstanceFactory.kt:46) at org.koin.core.instance.SingleInstanceFactory.get$lambda$0(SingleInstanceFactory.kt:55) at org.koin.core.instance.SingleInstanceFactory.$r8$lambda$DuRNwghYWsMwMsdJERKYXVNSM_0(Unknown Source:0) at org.koin.core.instance.SingleInstanceFactory$$ExternalSyntheticLambda0.invoke(D8$$SyntheticClass:0) at org.koin.mp.KoinPlatformTools.synchronized(KoinPlatformTools.kt:36) at org.koin.core.instance.SingleInstanceFactory.get(SingleInstanceFactory.kt:53) at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:110) at org.koin.core.scope.Scope.resolveFromRegistry(Scope.kt:321) at org.koin.core.scope.Scope.resolveFromContext(Scope.kt:311) at org.koin.core.scope.Scope.stackParametersCall(Scope.kt:273) at org.koin.core.scope.Scope.resolveInstance(Scope.kt:259) at org.koin.core.scope.Scope.resolveWithOptionalLogging(Scope.kt:232) at org.koin.core.scope.Scope.get(Scope.kt:215) at kma.voice.text.recorder.di.RemoteModuleKt$remoteModule$lambda$1$$inlined$singleOf$default$1.invoke(SingleOf.kt:227) at kma.voice.text.recorder.di.RemoteModuleKt$remoteModule$lambda$1$$inlined$singleOf$default$1.invoke(SingleOf.kt:52) at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:51) at org.koin.core.instance.SingleInstanceFactory.create(SingleInstanceFactory.kt:46) at org.koin.core.instance.SingleInstanceFactory.get$lambda$0(SingleInstanceFactory.kt:55) at org.koin.core.instance.SingleInstanceFactory.$r8$lambda$DuRNwghYWsMwMsdJERKYXVNSM_0(Unknown Source:0) at org.koin.core.instance.SingleInstanceFactory$$ExternalSyntheticLambda0.invoke(D8$$SyntheticClass:0) 2025-04-29 16:56:04.094 20596-20596 StrictMode kma.voice.text.recorder D at org.koin.mp.KoinPlatformTools.synchronized(KoinPlatformTools.kt:36) (Ask Gemini) at org.koin.core.instance.SingleInstanceFactory.get(SingleInstanceFactory.kt:53) at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:110) at org.koin.core.scope.Scope.resolveFromRegistry(Scope.kt:321) at org.koin.core.scope.Scope.resolveFromContext(Scope.kt:311) at org.koin.core.scope.Scope.stackParametersCall(Scope.kt:273) at org.koin.core.scope.Scope.resolveInstance(Scope.kt:259) at org.koin.core.scope.Scope.resolveWithOptionalLogging(Scope.kt:232) at org.koin.core.scope.Scope.get(Scope.kt:215) at kma.voice.text.recorder.di.AppModuleKt$appModule$lambda$18$$inlined$singleOf$1.invoke(SingleOf.kt:227) at kma.voice.text.recorder.di.AppModuleKt$appModule$lambda$18$$inlined$singleOf$1.invoke(SingleOf.kt:76) at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:51) at org.koin.core.instance.SingleInstanceFactory.create(SingleInstanceFactory.kt:46) at org.koin.core.instance.SingleInstanceFactory.get$lambda$0(SingleInstanceFactory.kt:55) at org.koin.core.instance.SingleInstanceFactory.$r8$lambda$DuRNwghYWsMwMsdJERKYXVNSM_0(Unknown Source:0) at org.koin.core.instance.SingleInstanceFactory$$ExternalSyntheticLambda0.invoke(D8$$SyntheticClass:0) at org.koin.mp.KoinPlatformTools.synchronized(KoinPlatformTools.kt:36) at org.koin.core.instance.SingleInstanceFactory.get(SingleInstanceFactory.kt:53) at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:110) at org.koin.core.scope.Scope.resolveFromRegistry(Scope.kt:321) at org.koin.core.scope.Scope.resolveFromContext(Scope.kt:311) at org.koin.core.scope.Scope.stackParametersCall(Scope.kt:273) at org.koin.core.scope.Scope.resolveInstance(Scope.kt:259) at org.koin.core.scope.Scope.resolveWithOptionalLogging(Scope.kt:232) at org.koin.core.scope.Scope.get(Scope.kt:215) at kma.voice.text.recorder.di.AppModuleKt$appModule$lambda$18$$inlined$viewModelOf$default$2.invoke(ViewModelOf.kt:226) at kma.voice.text.recorder.di.AppModuleKt$appModule$lambda$18$$inlined$viewModelOf$default$2.invoke(ViewModelOf.kt:67) at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:51) at org.koin.core.instance.FactoryInstanceFactory.get(FactoryInstanceFactory.kt:38) at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:110) at org.koin.core.scope.Scope.resolveFromRegistry(Scope.kt:321) at org.koin.core.scope.Scope.resolveFromContext(Scope.kt:311) at org.koin.core.scope.Scope.stackParametersCall(Scope.kt:281) at org.koin.core.scope.Scope.resolveInstance(Scope.kt:259) at org.koin.core.scope.Scope.resolveWithOptionalLogging(Scope.kt:232) at org.koin.core.scope.Scope.get(Scope.kt:215) at org.koin.viewmodel.factory.KoinViewModelFactory.create(KoinViewModelFactory.kt:39) at androidx.lifecycle.viewmodel.ViewModelProviderImpl_androidKt.createViewModel(ViewModelProviderImpl.android.kt:34) at androidx.lifecycle.viewmodel.ViewModelProviderImpl.getViewModel$lifecycle_viewmodel_release(ViewModelProviderImpl.kt:65) at androidx.lifecycle.viewmodel.ViewModelProviderImpl.getViewModel$lifecycle_viewmodel_release$default(ViewModelProviderImpl.kt:47) at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.android.kt:91) at org.koin.viewmodel.GetViewModelKt.resolveViewModel(GetViewModel.kt:60) at kma.voice.text.recorder.presentation.record_list.RecordListScreenKt.RecordListScreenRoot(RecordListScreen.kt:463) at kma.voice.text.recorder.ComposableSingletons$MainActivityKt$lambda-1$1$2$1$1$1.invoke(MainActivity.kt:107) at kma.voice.text.recorder.ComposableSingletons$MainActivityKt$lambda-1$1$2$1$1$1.invoke(MainActivity.kt:106) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:139) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at androidx.navigation.compose.NavHostKt$NavHost$32$1.invoke(NavHost.kt:704) 2025-04-29 16:56:04.094 20596-20596 StrictMode kma.voice.text.recorder D at androidx.navigation.compose.NavHostKt$NavHost$32$1.invoke(NavHost.kt:703) (Ask Gemini) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:401) at androidx.compose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider(SaveableStateHolder.kt:85) at androidx.navigation.compose.NavBackStackEntryProviderKt.SaveableStateProvider(NavBackStackEntryProvider.kt:65) at androidx.navigation.compose.NavBackStackEntryProviderKt.access$SaveableStateProvider(NavBackStackEntryProvider.kt:1) at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:52) at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:51) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:380) at androidx.navigation.compose.NavBackStackEntryProviderKt.LocalOwnersProvider(NavBackStackEntryProvider.kt:47) at androidx.navigation.compose.NavHostKt$NavHost$32.invoke(NavHost.kt:703) at androidx.navigation.compose.NavHostKt$NavHost$32.invoke(NavHost.kt:683) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:139) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1$5.invoke(AnimatedContent.kt:803) at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1$5.invoke(AnimatedContent.kt:792) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:118) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at androidx.compose.animation.AnimatedVisibilityKt.AnimatedEnterExitImpl(AnimatedVisibility.kt:771) at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1.invoke(AnimatedContent.kt:774) at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1.invoke(AnimatedContent.kt:757) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at androidx.compose.animation.AnimatedContentKt.AnimatedContent(AnimatedContent.kt:816) at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:655) at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:356)

Any ideas why there might be a problem with a disk read violation?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions