Yalantis / uCrop

Image Cropping Library for Android
https://yalantis.com/blog/introducing-ucrop-our-own-image-cropping-library-for-android/
11.81k stars 2.14k forks source link

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

Open code-n-roll opened 1 year ago

code-n-roll commented 1 year ago

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

JenyaKirmiza commented 2 months ago

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