glide icon indicating copy to clipboard operation
glide copied to clipboard

StrictMode: Explicit termination method 'response.body().close()' not called

Open hameno opened this issue 5 years ago • 13 comments

Glide Version: 4.8.0 Integration libraries: okhttp3-integration Device/Android Version: Pixel C, 8.0

Stack trace / LogCat:

2018-11-14 15:05:10.216 E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
    java.lang.Throwable: Explicit termination method 'response.body().close()' not called
        at dalvik.system.CloseGuard.open(CloseGuard.java:223)
        at java.lang.reflect.Method.invoke(Native Method)
        at okhttp3.internal.platform.AndroidPlatform$CloseGuard.createAndOpen(AndroidPlatform.java:343)
        at okhttp3.internal.platform.AndroidPlatform.getStackTraceForCloseable(AndroidPlatform.java:158)
        at okhttp3.RealCall.captureCallStackTrace(RealCall.java:89)
        at okhttp3.RealCall.enqueue(RealCall.java:98)
        at com.bumptech.glide.integration.okhttp3.OkHttpStreamFetcher.loadData(OkHttpStreamFetcher.java:53)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:99)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.startNextOrFail(MultiModelLoader.java:150)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(MultiModelLoader.java:144)
        at com.bumptech.glide.integration.okhttp3.OkHttpStreamFetcher.onFailure(OkHttpStreamFetcher.java:62)
        at okhttp3.RealCall$AsyncCall.execute(RealCall.java:161)
        at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
        at java.lang.Thread.run(Thread.java:764)

hameno avatar Nov 14 '18 14:11 hameno

This issue has been automatically marked as stale because it has not had activity in the last seven days. It will be closed if no further activity occurs within the next seven days. Thank you for your contributions.

stale[bot] avatar Nov 22 '18 02:11 stale[bot]

bump

hameno avatar Nov 22 '18 06:11 hameno

This issue has been automatically marked as stale because it has not had activity in the last seven days. It will be closed if no further activity occurs within the next seven days. Thank you for your contributions.

stale[bot] avatar Nov 29 '18 06:11 stale[bot]

bump

hameno avatar Nov 29 '18 06:11 hameno

Can you provide repro steps? Do you only see this on the one particular device?

sjudd avatar Dec 03 '18 17:12 sjudd

Not sure if I'm able. Its pretty much standard usage. Not only this device, but I didn't check which exactly, atleast on Android 8.0.

hameno avatar Dec 03 '18 17:12 hameno

I am using integration libraries okhttp3-integration. Same here. Crash in StrictMode

biaomingzhong avatar Mar 21 '20 03:03 biaomingzhong

Same issue here with glide 4.11 and okhttp3 3.12

E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
    java.lang.Throwable: Explicit termination method 'response.body().close()' not called
        at dalvik.system.CloseGuard.open(CloseGuard.java:223)
        at java.lang.reflect.Method.invoke(Native Method)
        at okhttp3.internal.platform.AndroidPlatform$CloseGuard.createAndOpen(AndroidPlatform.java:343)
        at okhttp3.internal.platform.AndroidPlatform.getStackTraceForCloseable(AndroidPlatform.java:158)
        at okhttp3.RealCall.captureCallStackTrace(RealCall.java:115)
        at okhttp3.RealCall.enqueue(RealCall.java:124)
        at com.bumptech.glide.integration.okhttp3.OkHttpStreamFetcher.loadData(OkHttpStreamFetcher.java:51)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100)
        at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70)
        at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63)
        at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310)
        at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:279)
        at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
        at java.lang.Thread.run(Thread.java:764)
        at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:393)

trevorwang avatar Jun 08 '20 01:06 trevorwang

By the current version of glide I am experiencing a similar bug, while using Strict Mode, here is the log:

E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
    java.lang.Throwable: Explicit termination method 'close' not called
        at dalvik.system.CloseGuard.open(CloseGuard.java:180)
        at java.net.AbstractPlainSocketImpl.create(AbstractPlainSocketImpl.java:103)
        at java.net.Socket.createImpl(Socket.java:470)
        at java.net.Socket.getImpl(Socket.java:536)
        at java.net.Socket.setSoTimeout(Socket.java:1127)
        at com.android.okhttp.Connection.connectSocket(Connection.java:195)
        at com.android.okhttp.Connection.connect(Connection.java:172)
        at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:367)
        at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:130)
        at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:329)
        at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:246)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:126)
        at com.android.tools.profiler.support.network.httpurl.TrackedHttpURLConnection.connect(TrackedHttpURLConnection.java:154)
        at com.android.tools.profiler.support.network.httpurl.HttpURLConnection$.connect(HttpURLConnection$.java:312)
        at com.bumptech.glide.load.data.HttpUrlFetcher.loadDataWithRedirects(HttpUrlFetcher.java:100)
        at com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher.java:56)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100)
        at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70)
        at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63)
        at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310)
        at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:279)
        at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:761)
        at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:393)

Sneyder2328 avatar Aug 08 '20 20:08 Sneyder2328

Seeing the same error, with strict mode enabled Glide: 4.11.0

E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
    java.lang.Throwable: Explicit termination method 'end' not called
        at dalvik.system.CloseGuard.open(CloseGuard.java:180)
        at java.util.zip.Inflater.<init>(Inflater.java:104)
        at com.android.okhttp.okio.GzipSource.<init>(GzipSource.java:62)
        at com.android.okhttp.internal.http.HttpEngine.unzip(HttpEngine.java:824)
        at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:1071)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:509)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:438)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:247)
        at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
        at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java)
        at com.bumptech.glide.load.data.HttpUrlFetcher.loadDataWithRedirects(HttpUrlFetcher.java:102)
        at com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher.java:56)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.startNextOrFail(MultiModelLoader.java:164)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(MultiModelLoader.java:154)
        at com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher.java:62)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100)
        at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70)
        at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63)
        at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310)
        at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:279)
        at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:762)
        at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:393)

saran2020 avatar Oct 05 '20 10:10 saran2020

Hello, to reproduce the issue follow this steps:

  1. Try to load the image from url, that is not available;
  2. After first image load is failed, load second image from url that is available;

I get this error with strict mode enabled.

menscikov avatar Jun 13 '21 14:06 menscikov

Having the same issue with Glide 4.13.2:

StrictMode policy violation: android.os.strictmode.LeakedClosableViolation: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks. at android.os.StrictMode$AndroidCloseGuardReporter.report(StrictMode.java:1786) at dalvik.system.CloseGuard.warnIfOpen(CloseGuard.java:264) at java.lang.reflect.Method.invoke(Native Method) at okhttp3.internal.platform.android.CloseGuard.warnIfOpen(CloseGuard.kt:47) at okhttp3.internal.platform.AndroidPlatform.logCloseableLeak(AndroidPlatform.kt:96) at okhttp3.internal.connection.RealConnectionPool.pruneAndGetAllocationCount(RealConnectionPool.kt:231) at okhttp3.internal.connection.RealConnectionPool.cleanup(RealConnectionPool.kt:155) at okhttp3.internal.connection.RealConnectionPool$cleanupTask$1.runOnce(RealConnectionPool.kt:44) at okhttp3.internal.concurrent.TaskRunner.runTask(TaskRunner.kt:116) at okhttp3.internal.concurrent.TaskRunner.access$runTask(TaskRunner.kt:42) at okhttp3.internal.concurrent.TaskRunner$runnable$1.run(TaskRunner.kt:65) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:764) Caused by: java.lang.Throwable: Explicit termination method 'response.body().close()' not called at dalvik.system.CloseGuard.open(CloseGuard.java:221) at java.lang.reflect.Method.invoke(Native Method) at okhttp3.internal.platform.android.CloseGuard.createAndOpen(CloseGuard.kt:35) at okhttp3.internal.platform.AndroidPlatform.getStackTraceForCloseable(AndroidPlatform.kt:93) at okhttp3.internal.connection.RealCall.callStart(RealCall.kt:170) at okhttp3.internal.connection.RealCall.enqueue(RealCall.kt:163) at com.google.firebase.perf.network.FirebasePerfOkHttpClient.enqueue(FirebasePerfOkHttpClient.java:71) at com.bumptech.glide.integration.okhttp3.OkHttpStreamFetcher.loadData(OkHttpStreamFetcher.java:51) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:95) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:88) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:311) at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:280) at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:235) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:413) at java.lang.Thread.run(Thread.java:764) at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultPriorityThreadFactory$1.run(GlideExecutor.java:372)

TReX24 avatar Jul 20 '22 08:07 TReX24

I think this happens after 404, my first though was its related to loading without target in application context. I also see UntaggedSocketViolation in logs from GlideExecutor.java:383 but it looks unrelated. Heres my code:

override suspend fun loadImage(url: String, callback: (Drawable) -> Unit) {
        try {
            callback(withContext(Dispatchers.IO) {
                Glide.with(context)
                    //.clearOnStop() //this not helping
                    .load(url)
                    .submit()
                    .get()
            })
        } catch (e: Exception) {
            when (e) {
                is IOException, is CancellationException, is ExecutionException -> {
                    throw ImageLoadingException("Error loading image using Glide", e)
                }
                else -> throw e
            }
        }
    }

Logs:

StrictMode policy violation: android.os.strictmode.LeakedClosableViolation: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
                                                              	at android.os.StrictMode$AndroidCloseGuardReporter.report(StrictMode.java:1986)
                                                              	at dalvik.system.CloseGuard.warnIfOpen(CloseGuard.java:336)
                                                              	at java.util.zip.Inflater.finalize(Inflater.java:407)
                                                              	at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:319)
                                                              	at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:306)
                                                              	at java.lang.Daemons$Daemon.run(Daemons.java:140)
                                                              	at java.lang.Thread.run(Thread.java:1012)
                                                              Caused by: java.lang.Throwable: Explicit termination method 'end' not called
                                                              	at dalvik.system.CloseGuard.openWithCallSite(CloseGuard.java:288)
                                                              	at dalvik.system.CloseGuard.open(CloseGuard.java:257)
                                                              	at java.util.zip.Inflater.<init>(Inflater.java:122)
                                                              	at com.android.okhttp.okio.GzipSource.<init>(GzipSource.java:64)
                                                              	at com.android.okhttp.internal.http.HttpEngine.unzip(HttpEngine.java:484)
                                                              	at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:661)
                                                              	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:475)
                                                              	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
                                                              	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:248)
                                                              	at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:211)
                                                              	at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:30)
                                                              	at com.bumptech.glide.load.data.HttpUrlFetcher.loadDataWithRedirects(HttpUrlFetcher.java:95)
                                                              	at com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher.java:58)
                                                              	at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100)
                                                              	at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:95)
                                                              	at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:88)
                                                              	at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:311)
                                                              	at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:280)
                                                              	at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:235)
                                                              	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
                                                              	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
                                                              	at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:424)
                                                              	at java.lang.Thread.run(Thread.java:1012)
                                                              	at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultPriorityThreadFactory$1.run(GlideExecutor.java:383)

freezerain avatar Nov 30 '23 13:11 freezerain