Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OkHttp resource leak with 4.0 #1996

Closed
rubengees opened this issue Jun 2, 2017 · 8 comments
Closed

OkHttp resource leak with 4.0 #1996

rubengees opened this issue Jun 2, 2017 · 8 comments
Labels
Milestone

Comments

@rubengees
Copy link

Glide Version: 4.0.0-SNAPSHOT, also happens with 4.0.0-RC

Integration libraries: OkHttp, same version

Device/Android Version: OnePlus 3, 7.1.2. Haven't tested with others yet

Issue details / Repro steps / Use case background:

I recently migrated to Glide 4.0 and am now seeing these reource leak warnings from time to time. I have StrictMode with all settings enabled. I use Glide very heaviliy in RecyclerViews with multiple images per line (about 6 on screen mostly). I don't know too much about the internals of Glide, so I may be doing something wrong. Apart from this everything seems to work properly.

Glide load line / GlideModule (if any) / list Adapter code (if any):

My GlideModule:

@GlideModule
class MyGlideModule : AppGlideModule() {

    override fun applyOptions(context: Context, builder: GlideBuilder) {
        builder.setDefaultRequestOptions(RequestOptions()
                .diskCacheStrategy(DiskCacheStrategy.DATA))
    }

    override fun registerComponents(context: Context, registry: Registry) {
        registry.replace(GlideUrl::class.java, InputStream::class.java,
                OkHttpUrlLoader.Factory(client))
        // The client is a plain static imported OkHttpClient
    }

    override fun isManifestParsingEnabled() = false
}

A typical load line:

glide.load(url) // GlideRequests instance and Plain String
     .transition(DrawableTransitionOptions.withCrossFade())
     .into(view) // Plain ImageView

Also note, that I use this in my RecyclerView.Adapters:

override fun onViewRecycled(holder: SomeViewHolder) {
    glide.clear(holder.image)
    // GlideRequests instance (with Fragment Context) and plain ImageView
}

I thought that would help freeing memory and clearing any ongoing requests. Am I supposed to do this?

Stack trace / LogCat (Formatted for readability):

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:180)
    at java.lang.reflect.Method.invoke(Native Method)
    at okhttp3.internal.platform.AndroidPlatform$CloseGuard.createAndOpen(AndroidPlatform.java:272)
    at okhttp3.internal.platform.AndroidPlatform.getStackTraceForCloseable(AndroidPlatform.java:138)
    at okhttp3.RealCall.captureCallStackTrace(RealCall.java:78)
    at okhttp3.RealCall.enqueue(RealCall.java:87)
    at com.bumptech.glide.integration.okhttp3.OkHttpStreamFetcher.loadData(OkHttpStreamFetcher.java:44)
    at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:93)
    at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.startNextOrFail(MultiModelLoader.java:140)
    at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(MultiModelLoader.java:134)
    at com.bumptech.glide.integration.okhttp3.OkHttpStreamFetcher$1.onFailure(OkHttpStreamFetcher.java:50)
    at okhttp3.RealCall$AsyncCall.execute(RealCall.java:138)
    at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
    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)

If you need any more information or prefer Java code instead of Kotlin (I was to lazy to rewrite it), please let me know!

@ikarsokolov
Copy link

ikarsokolov commented Aug 8, 2017

I am experiencing same problem with glide 4.0.0 release, both on emulator and real devices.

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:184)
         at java.lang.reflect.Method.invokeNative(Native Method)
         at java.lang.reflect.Method.invoke(Method.java:525)
         at okhttp3.internal.platform.AndroidPlatform$CloseGuard.createAndOpen(AndroidPlatform.java:272)
         at okhttp3.internal.platform.AndroidPlatform.getStackTraceForCloseable(AndroidPlatform.java:138)
         at okhttp3.RealCall.captureCallStackTrace(RealCall.java:78)
         at okhttp3.RealCall.enqueue(RealCall.java:87)
         at com.bumptech.glide.integration.okhttp3.OkHttpStreamFetcher.loadData(OkHttpStreamFetcher.java:45)
         at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:61)
         at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:282)
         at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:252)
         at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:222)
         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
         at java.lang.Thread.run(Thread.java:841)
         at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:347)

This happens a lot when fast-scrolling recycler view.

@sjudd
Copy link
Collaborator

sjudd commented Sep 7, 2017

Yeah sorry I can still reproduce this in the flickr sample :/. I'll try and get this fixed for real for the next release.

@sjudd
Copy link
Collaborator

sjudd commented Sep 7, 2017

Interesting I actually was reproducing this with the Glide's default HttpUrlFetcher, not the okhttp3 integration. That turns out to be an issue with redirects, I doubt the same thing applies to okhttp3. I'll investigate this next.

sjudd added a commit to sjudd/glide that referenced this issue Sep 8, 2017
Previously some of the logic in run() might null out the data fetcher
instance variable, even if it had been set when run() was first called.
As a result, the data fetcher would not be cleared. Now the initial 
data fetcher is held on to as a local variable so the instance variable
can be freed without affecting the behavior of cleanup().

Progress towards bumptech#1996, bumptech#2352
sjudd added a commit to sjudd/glide that referenced this issue Sep 10, 2017
In addition to v3.0.1 being super old, it looks like earlier version(s)
of OkHttp have a race that will leak resources when requests are
enqueued instead of executed and cancel is called.

Progress towards bumptech#1996.
@sjudd
Copy link
Collaborator

sjudd commented Sep 11, 2017

I think this is fixed, or at least I'm no longer able to trivially reproduce it.

@sjudd sjudd closed this as completed Sep 11, 2017
@rubengees
Copy link
Author

I just got another one of these, with version 4.6.1 and the okhttp-integration library. OkHttp is 3.10.0.
Stacktrace:

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:341)
        at okhttp3.internal.platform.AndroidPlatform.getStackTraceForCloseable(AndroidPlatform.java:156)
        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:97)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.startNextOrFail(MultiModelLoader.java:148)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(MultiModelLoader.java:142)
        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)

I use similar code as in the first post.

@kirilamenski
Copy link

kirilamenski commented Aug 9, 2018

Same here.
@sjudd For me it's happens when I try to load broken url in RecycleView (for example http://www.bbc.com//m.files.bbci.co.uk/modules/bbc-morph-news-waf-page-meta/2.2.1/bbc_news_logo.png) then I got this message:

08-09 10:12:23.004 28073-28073/com.fishbowlmedia.fishbowl.dev I/Glide: Root cause (1 of 2)
    com.bumptech.glide.load.HttpException: Not Found
        at com.bumptech.glide.integration.okhttp3.OkHttpStreamFetcher.onResponse(OkHttpStreamFetcher.java:73)
        at okhttp3.RealCall$AsyncCall.execute(RealCall.java:153)
        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)
08-09 10:12:23.010 28073-28073/com.fishbowlmedia.fishbowl.dev I/Glide: Root cause (2 of 2)
    java.io.FileNotFoundException: No content provider: http://www.bbc.com//m.files.bbci.co.uk/modules/bbc-morph-news-waf-page-meta/2.2.1/bbc_news_logo.png
        at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1396)
        at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1247)
        at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1170)
        at com.bumptech.glide.load.data.AssetFileDescriptorLocalUriFetcher.loadResource(AssetFileDescriptorLocalUriFetcher.java:22)
        at com.bumptech.glide.load.data.AssetFileDescriptorLocalUriFetcher.loadResource(AssetFileDescriptorLocalUriFetcher.java:13)
        at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:44)
        at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)
        at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302)
        at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:272)
        at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:233)
        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:446)

After further scrolling, I get this message until the application stops responding:

WARNING: A connection to https://... was leaked. Did you forget to close a response body?

08-09 10:16:42.815 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 4(32KB) AllocSpace objects, 21(65MB) LOS objects, 17% free, 115MB/139MB, paused 374us total 132.970ms
08-09 10:16:43.084 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 3(16KB) AllocSpace objects, 28(80MB) LOS objects, 20% free, 92MB/116MB, paused 191us total 120.041ms
08-09 10:16:43.233 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 4(32KB) AllocSpace objects, 37(100MB) LOS objects, 22% free, 83MB/107MB, paused 374us total 106.440ms
08-09 10:16:43.382 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 4(32KB) AllocSpace objects, 36(92MB) LOS objects, 22% free, 84MB/108MB, paused 100us total 121.641ms
08-09 10:16:43.525 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 3(16KB) AllocSpace objects, 38(92MB) LOS objects, 35% free, 43MB/67MB, paused 98us total 101.976ms
08-09 10:16:43.955 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 4(32KB) AllocSpace objects, 33(68MB) LOS objects, 26% free, 66MB/90MB, paused 438us total 109.579ms
08-09 10:16:44.237 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 4(32KB) AllocSpace objects, 27(49MB) LOS objects, 30% free, 53MB/77MB, paused 374us total 115.451ms
08-09 10:16:44.496 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 3(16KB) AllocSpace objects, 37(63MB) LOS objects, 38% free, 38MB/62MB, paused 604us total 133.184ms
08-09 10:16:44.733 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 3(16KB) AllocSpace objects, 32(49MB) LOS objects, 37% free, 40MB/64MB, paused 740us total 110.344ms
08-09 10:16:44.954 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 3(16KB) AllocSpace objects, 35(49MB) LOS objects, 41% free, 33MB/57MB, paused 432us total 127.729ms
08-09 10:16:45.238 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 3(16KB) AllocSpace objects, 33(42MB) LOS objects, 42% free, 32MB/56MB, paused 495us total 124.802ms
08-09 10:16:45.537 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 3(16KB) AllocSpace objects, 36(41MB) LOS objects, 40% free, 35MB/59MB, paused 507us total 123.901ms
08-09 10:16:45.798 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 4(32KB) AllocSpace objects, 44(44MB) LOS objects, 40% free, 35MB/59MB, paused 654us total 132.242ms
08-09 10:16:46.083 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 4(47KB) AllocSpace objects, 54(45MB) LOS objects, 46% free, 27MB/51MB, paused 505us total 131.550ms
08-09 10:16:46.376 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 4(16KB) AllocSpace objects, 61(37MB) LOS objects, 49% free, 24MB/48MB, paused 350us total 110.096ms
08-09 10:16:48.646 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 131(2MB) AllocSpace objects, 23(53MB) LOS objects, 23% free, 79MB/103MB, paused 240us total 647.925ms
08-09 10:16:51.114 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 526252(17MB) AllocSpace objects, 0(0B) LOS objects, 19% free, 96MB/120MB, paused 289us total 914.018ms
08-09 10:16:54.124 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 636181(18MB) AllocSpace objects, 0(0B) LOS objects, 16% free, 117MB/141MB, paused 752us total 1.335s
08-09 10:16:57.360 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 721454(21MB) AllocSpace objects, 0(0B) LOS objects, 14% free, 137MB/161MB, paused 278us total 1.438s
08-09 10:17:01.013 28073-28091/com.* I/zygote64: Background concurrent copying GC freed 742596(21MB) AllocSpace objects, 0(0B) LOS objects, 13% free, 159MB/183MB, paused 274us total 1.766s
08-09 10:17:03.163 28073-28466/com.* I/zygote64: Waiting for a blocking GC Alloc

I tried all the versions from 3.8.0 to 4.7.1 and this happens on all of them but only for android devices with version 8 and above.
I guess it also related with #2894 (comment)
and square/okhttp#4155

@sjudd
Copy link
Collaborator

sjudd commented Aug 11, 2018

Thanks @kirilamenski, that's helpful context. It's possible the leak is fixed in Glide's usage of OkHttp, but there may be other resource leaks in OkHttp (or the Android framework) itself.

@kirilamenski
Copy link

@sjudd I don't know if this will be helpful too, but I found the same problem in Picasso (v. 2.71828). Sometimes it just freeze the application sometimes just throws an error:

08-11 10:53:31.381 19629-19629/com.fishbowlmedia.fishbowl.dev E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.fishbowlmedia.fishbowl.dev, PID: 19629
    java.lang.RuntimeException: Canvas: trying to draw too large(142277184bytes) bitmap.
        at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:229)
        at android.view.RecordingCanvas.drawBitmap(RecordingCanvas.java:97)
        at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:529)
        at com.squareup.picasso.PicassoDrawable.draw(PicassoDrawable.java:109)
        at android.widget.ImageView.onDraw(ImageView.java:1367)
        at android.view.View.draw(View.java:19192)
        at android.view.View.updateDisplayListIfDirty(View.java:18142)
        at android.view.View.draw(View.java:18920)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
        at android.view.View.draw(View.java:19195)
        at android.view.View.updateDisplayListIfDirty(View.java:18142)
        at android.view.View.draw(View.java:18920)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
        at android.view.View.draw(View.java:19195)
        at android.view.View.updateDisplayListIfDirty(View.java:18142)
        at android.view.View.draw(View.java:18920)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
        at android.view.View.updateDisplayListIfDirty(View.java:18133)
        at android.view.View.draw(View.java:18920)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
        at android.view.View.draw(View.java:19195)
        at android.view.View.updateDisplayListIfDirty(View.java:18142)
        at android.view.View.draw(View.java:18920)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
        at android.support.v7.widget.RecyclerView.drawChild(RecyclerView.java:4774)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
        at android.view.View.draw(View.java:19195)
        at android.support.v7.widget.RecyclerView.draw(RecyclerView.java:4173)
        at android.view.View.updateDisplayListIfDirty(View.java:18142)
        at android.view.View.draw(View.java:18920)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
        at android.view.View.draw(View.java:19195)
        at android.view.View.updateDisplayListIfDirty(View.java:18142)
        at android.view.View.draw(View.java:18920)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
        at android.view.View.updateDisplayListIfDirty(View.java:18133)
        at android.view.View.draw(View.java:18920)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
        at android.view.View.draw(View.java:19195)
        at android.support.v4.view.ViewPager.draw(ViewPager.java:2426)
        at android.view.View.updateDisplayListIfDirty(View.java:18142)
        at android.view.View.draw(View.java:18920)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
        at android.support.design.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1246)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
        at android.view.View.draw(View.java:19195)
        at android.view.View.updateDisplayListIfDirty(View.java:18142)
        at android.view.View.draw(View.java:18920)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
        at android.view.View.draw(View.java:19195)
        at android.view.View.updateDisplayListIfDirty(View.java:18142)
        at android.view.View.draw(View.java:18920)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
        at android.view.View.updateDisplayListIfDirty(View.java:18133)
        at android.view.View.draw(View.java:18920)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
        at android.view.View.updateDisplayListIfDirty(View.java:18133)
08-11 10:53:31.382 19629-19629/com.fishbowlmedia.fishbowl.dev E/AndroidRuntime:     at android.view.View.draw(View.java:18920)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
        at android.view.View.updateDisplayListIfDirty(View.java:18133)
        at android.view.View.draw(View.java:18920)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
        at android.view.View.updateDisplayListIfDirty(View.java:18133)
        at android.view.View.draw(View.java:18920)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
        at android.view.View.draw(View.java:19195)
        at com.android.internal.policy.DecorView.draw(DecorView.java:788)
        at android.view.View.updateDisplayListIfDirty(View.java:18142)
        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:669)
        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:675)
        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:783)
        at android.view.ViewRootImpl.draw(ViewRootImpl.java:2992)
        at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2806)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2359)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1392)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6752)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
        at android.view.Choreographer.doCallbacks(Choreographer.java:723)
        at android.view.Choreographer.doFrame(Choreographer.java:658)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

As hotfix for users I used Ion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants