uCrop icon indicating copy to clipboard operation
uCrop copied to clipboard

Fatal Exception: java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap

Open code-n-roll opened this issue 1 year ago • 1 comments

Do you want to request a feature or report a bug? bug

What is the current behavior? Fatal Exception: java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@6991aad

What is the expected behavior? No exception

If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem. Don't know, cause taken from user's device from Crashlytics

Please attach any image files, URL and stack trace that can be used to reproduce the bug.

stacktrace
Fatal Exception: java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@6991aad
       at android.graphics.BaseCanvas.throwIfCannotDraw(BaseCanvas.java:87)
       at android.graphics.RecordingCanvas.throwIfCannotDraw(RecordingCanvas.java:264)
       at android.graphics.BaseRecordingCanvas.drawBitmap(BaseRecordingCanvas.java:97)

       at com.yalantis.ucrop.util.FastBitmapDrawable.draw(FastBitmapDrawable.java:41)

       at android.widget.ImageView.onDraw(ImageView.java:1462)
       at android.view.View.draw(View.java:23898)
       at android.view.View.updateDisplayListIfDirty(View.java:22767)
       at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
       at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
       at android.view.View.updateDisplayListIfDirty(View.java:22714)
       at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
       at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
       at android.view.View.updateDisplayListIfDirty(View.java:22714)
       at android.view.View.draw(View.java:23628)
       at android.view.ViewGroup.drawChild(ViewGroup.java:5355)
       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5112)
       at android.view.View.updateDisplayListIfDirty(View.java:22753)
       at android.view.View.draw(View.java:23628)
       at android.view.ViewGroup.drawChild(ViewGroup.java:5355)
       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5112)
       at android.view.View.updateDisplayListIfDirty(View.java:22753)
       at android.view.View.draw(View.java:23628)
       at android.view.ViewGroup.drawChild(ViewGroup.java:5355)
       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5112)
       at android.view.View.updateDisplayListIfDirty(View.java:22753)
       at android.view.View.draw(View.java:23628)
       at android.view.ViewGroup.drawChild(ViewGroup.java:5355)
       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5112)
       at android.view.View.updateDisplayListIfDirty(View.java:22753)
       at android.view.View.draw(View.java:23628)
       at android.view.ViewGroup.drawChild(ViewGroup.java:5355)
       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5112)
       at android.view.View.updateDisplayListIfDirty(View.java:22753)
       at android.view.View.draw(View.java:23628)
       at android.view.ViewGroup.drawChild(ViewGroup.java:5355)
       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5112)
       at android.view.View.draw(View.java:23901)
       at com.android.internal.policy.DecorView.draw(DecorView.java:1378)
       at android.view.View.updateDisplayListIfDirty(View.java:22767)
       at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:602)
       at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:608)
       at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:684)
       at android.view.ViewRootImpl.draw(ViewRootImpl.java:5445)
       at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:5153)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4217)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2924)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10513)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1108)
       at android.view.Choreographer.doCallbacks(Choreographer.java:866)
       at android.view.Choreographer.doFrame(Choreographer.java:797)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1092)
       at android.os.Handler.handleCallback(Handler.java:938)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loopOnce(Looper.java:226)
       at android.os.Looper.loop(Looper.java:313)
       at android.app.ActivityThread.main(ActivityThread.java:8751)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)

Which versions of uCrop, and which Android API versions are affected by this issue? Did this work in previous versions of uCrop?

Lib version: 2.2.6 Android version: 12 Device: Galaxy A13 5G work in previous version: unknown

code-n-roll avatar Jan 05 '23 19:01 code-n-roll

probably check this https://stackoverflow.com/questions/62571397/crash-outofmemory-canvas-trying-to-use-a-recycled-bitmap-when-using-glide-4-to

JenyaKirmiza avatar Apr 23 '24 10:04 JenyaKirmiza