Automattic / stories-android

Loop concept app - WP Stories library
GNU General Public License v2.0
20 stars 6 forks source link

Crash while adding a video from media library #592

Closed mzorz closed 3 years ago

mzorz commented 3 years ago

I had taken a few photos with the camera, and then added a new page and tried to select a video from the media library. It looked successful but landed back on a black screen and after about a minute crashed. Here’s a link to the log file. I’m able to reproduce this crash with the following steps:

  1. Click to create a new Story post
  2. Use the device camera to add 2 pages
  3. Then add another page by selecting a photo
  4. Then add a fourth page by selecting a video from the wordpress media library.
  5. Click the checkmark…and wait. Crash.
         OpenGLRenderer  D  endAllActiveAnimators on 0x6f7d7af830 (RippleDrawable) with handle 0x6e9d479ac0
        WordPress-UTILS  E  Error reading orientation of the file: /storage/emulated/0/DCIM/Camera/PXL_20201020_200221811.jpg
                         E  java.lang.IllegalArgumentException: Volume storage not found
                         E      at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:172)
                         E      at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
                         E      at android.content.ContentProviderProxy.query(ContentProviderNative.java:472)
                         E      at android.content.ContentResolver.query(ContentResolver.java:1183)
                         E      at android.content.ContentResolver.query(ContentResolver.java:1115)
                         E      at android.content.ContentResolver.query(ContentResolver.java:1071)
                         E      at org.wordpress.android.util.ImageUtils.getImageOrientation(ImageUtils.java:101)
                         E      at org.wordpress.android.util.ImageUtils.optimizeImage(ImageUtils.java:548)
                         E      at org.wordpress.android.util.WPMediaUtils.getOptimizedMedia(WPMediaUtils.java:72)
                         E      at org.wordpress.android.util.MediaUtilsWrapper.getOptimizedMedia(MediaUtilsWrapper.kt:27)
                         E      at org.wordpress.android.ui.posts.editor.media.OptimizeMediaUseCase.optimizeMediaAndTrackEvent(OptimizeMediaUseCase.kt:52)
                         E      at org.wordpress.android.ui.posts.editor.media.OptimizeMediaUseCase.access$optimizeMediaAndTrackEvent(OptimizeMediaUseCase.kt:21)
                         E      at org.wordpress.android.ui.posts.editor.media.OptimizeMediaUseCase$optimizeMediaIfSupportedAsync$2$invokeSuspend$$inlined$map$lambda$1.invokeSuspend(OptimizeMediaUs
                            eCase.kt:33)
                         E      at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
                         E      at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
                         E      at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
                         E      at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738)
                         E      at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
                         E      at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
        WordPress-STATS  I  🔵 Tracked: media_photo_optimized
                         I  🔵 Tracked: editor_photo_added, Properties: {"ext":"jpg","blog_id":184589754,"age_ms":391,"bytes":714755,"mime":"image\/jpeg","megapixels":5,"is_jetpack":false,"via":"de
                            vice_library"}
        PhotoEditorView  D  onBitmapLoaded() called with: sourceBitmap = [null]
                 chatty  I  uid=10370(org.wordpress.android.prealpha) identical 4 lines
        PhotoEditorView  D  onBitmapLoaded() called with: sourceBitmap = [null]
                         D  onBitmapLoaded() called with: sourceBitmap = [android.graphics.Bitmap@a2bba6]
                         D  onBitmapLoaded() called with: sourceBitmap = [null]
                         D  onBitmapLoaded() called with: sourceBitmap = [null]
                         D  onBitmapLoaded() called with: sourceBitmap = [android.graphics.Bitmap@bdb997e]
  AppCompatViewInflater  I  app:theme is now deprecated. Please move to using android:theme instead.
           RecyclerView  E  No adapter attached; skipping layout
                 Camera  D  Use cases [ImageCapture:androidx.camera.core.ImageCapture-1f312ac8-5a66-45f7-b524-508dfde0f590, Preview:androidx.camera.core.Preview-4960559f-d391-4ce3-a3a1-475e2455f406
                            ] OFFLINE for camera 0
                         D  Resetting Capture Session
                         D  releasing session in state OPENED
                         D  Closing camera: 0
                         D  Transitioning camera internal state: OPENED --> CLOSING
                         D  Resetting Capture Session
                         D  releasing session in state CLOSING
         CaptureSession  D  CameraCaptureSession.onReady() RELEASING
                         D  CameraCaptureSession.onClosed()
                 Camera  D  CameraDevice.onClosed(): 0
                         D  Transitioning camera internal state: CLOSING --> INITIALIZED
        WordPress-STATS  I  🔵 Tracked: media_picker_wordpress_library_opened
  AppCompatViewInflater  I  app:theme is now deprecated. Please move to using android:theme instead.
              TabLayout  W  MODE_SCROLLABLE + GRAVITY_FILL is not supported, GRAVITY_START will be used instead
          WordPress-API  D  Dispatching action: MediaAction-FETCH_MEDIA_LIST
                         D  Dispatching action: SiteAction-FETCH_SITE
        WordPress-UTILS  V  trackLastActivity, activityId: Media Library
        WordPress-MEDIA  V  No more media items to delete. Stopping MediaDeleteService.
          WordPress-API  D  Dispatching action: SiteAction-UPDATE_SITE
           WordPress-DB  D  Site found by (local) ID: 4
                         D  Updating site: https://amandassimpletestblog2020.wordpress.com
                  Glide  W  Load failed for  with size [174x174]
                         W  class com.bumptech.glide.load.engine.GlideException: Failed to load resource
        WordPress-MEDIA  V  Fetched media list for site with size: 34
          WordPress-API  D  Dispatching action: MediaAction-FETCHED_MEDIA_LIST
  AppCompatViewInflater  I  app:theme is now deprecated. Please move to using android:theme instead.
        PhotoEditorView  D  onBitmapLoaded() called with: sourceBitmap = [android.graphics.Bitmap@bdb997e]
                 Camera  D  Use cases [ImageCapture:androidx.camera.core.ImageCapture-1f312ac8-5a66-45f7-b524-508dfde0f590, Preview:androidx.camera.core.Preview-4960559f-d391-4ce3-a3a1-475e2455f406
                            ] ONLINE for camera 0
     UseCaseAttachState  D  Active and online use case: [androidx.camera.core.ImageCapture-1f312ac8-5a66-45f7-b524-508dfde0f590, androidx.camera.core.Preview-4960559f-d391-4ce3-a3a1-475e2455f406] f
                            or camera: 0
                 Camera  D  Resetting Capture Session
                         D  releasing session in state INITIALIZED
                         D  Transitioning camera internal state: INITIALIZED --> OPENING
                         D  Opening camera: 0
     UseCaseAttachState  D  All use case: [androidx.camera.core.ImageCapture-1f312ac8-5a66-45f7-b524-508dfde0f590, androidx.camera.core.Preview-4960559f-d391-4ce3-a3a1-475e2455f406] for camera: 0
                 Camera  D  CameraDevice.onOpened(): 0
                         D  Transitioning camera internal state: OPENING --> OPENED
     UseCaseAttachState  D  All use case: [androidx.camera.core.ImageCapture-1f312ac8-5a66-45f7-b524-508dfde0f590, androidx.camera.core.Preview-4960559f-d391-4ce3-a3a1-475e2455f406] for camera: 0
        WordPress-STATS  I  🔵 Tracked: editor_photo_added, Properties: {"blog_id":184589754,"is_jetpack":false,"via":"media_library"}
         CaptureSession  D  Opening capture session.
        PhotoEditorView  D  onBitmapLoaded() called with: sourceBitmap = [null]
                 chatty  I  uid=10370(org.wordpress.android.prealpha) identical 2 lines
        PhotoEditorView  D  onBitmapLoaded() called with: sourceBitmap = [null]
         CaptureSession  D  Attempting to send capture request onConfigured
                         D  Issuing request for session.
                         D  CameraCaptureSession.onConfigured() mState=OPENED
                         D  CameraCaptureSession.onReady() OPENED
         AndroidRuntime  D  Shutting down VM
                         E  FATAL EXCEPTION: main
                         E  Process: org.wordpress.android.prealpha, PID: 3312
                         E  com.bumptech.glide.load.engine.CallbackException: Unexpected exception thrown by non-Glide code
                         E      at com.bumptech.glide.load.engine.EngineJob.callCallbackOnResourceReady(EngineJob.java:160)
                         E      at com.bumptech.glide.load.engine.EngineJob$CallResourceReady.run(EngineJob.java:424)
                         E      at android.os.Handler.handleCallback(Handler.java:938)
                         E      at android.os.Handler.dispatchMessage(Handler.java:99)
                         E      at android.os.Looper.loop(Looper.java:223)
                         E      at android.app.ActivityThread.main(ActivityThread.java:7656)
                         E      at java.lang.reflect.Method.invoke(Native Method)
                         E      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
                         E      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
                         E  Caused by: java.lang.ClassCastException: com.bumptech.glide.load.resource.gif.GifDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
                         E      at com.automattic.photoeditor.views.background.fixed.BackgroundImageView.getBitmap(BackgroundImageView.kt:25)
                         E      at com.automattic.photoeditor.views.background.fixed.BackgroundImageView.setImageDrawable(BackgroundImageView.kt:74)
                         E      at com.bumptech.glide.request.target.DrawableImageViewTarget.setResource(DrawableImageViewTarget.java:24)
                         E      at com.bumptech.glide.request.target.DrawableImageViewTarget.setResource(DrawableImageViewTarget.java:8)
                         E      at com.bumptech.glide.request.target.ImageViewTarget.setResourceInternal(ImageViewTarget.java:124)
                         E      at com.bumptech.glide.request.target.ImageViewTarget.onResourceReady(ImageViewTarget.java:101)
                         E      at com.bumptech.glide.request.SingleRequest.onResourceReady(SingleRequest.java:624)
                         E      at com.bumptech.glide.request.SingleRequest.onResourceReady(SingleRequest.java:568)
                         E      at com.bumptech.glide.load.engine.EngineJob.callCallbackOnResourceReady(EngineJob.java:158)
                         E      ... 8 more
                 System  W  A resource failed to call release.
         ndroid.prealph  I  Thread[6,tid=3322,WaitingInMainSignalCatcherLoop,Thread*=0x6fed45a2c0,peer=0x15940a98,"Signal Catcher"]: reacting to signal 3
mzorz commented 3 years ago

I was able to reproduce, this is when selecting an existing media item from the WP Media Library for the site, that is a GIF file instead of a plain image:

2020-11-03 18:35:29.610 24175-24175/org.wordpress.android E/AndroidRuntime: FATAL EXCEPTION: main
    Process: org.wordpress.android, PID: 24175
    com.bumptech.glide.load.engine.CallbackException: Unexpected exception thrown by non-Glide code
        at com.bumptech.glide.load.engine.EngineJob.callCallbackOnResourceReady(EngineJob.java:160)
        at com.bumptech.glide.load.engine.EngineJob$CallResourceReady.run(EngineJob.java:424)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: java.lang.ClassCastException: com.bumptech.glide.load.resource.gif.GifDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
        at com.automattic.photoeditor.views.background.fixed.BackgroundImageView.getBitmap(BackgroundImageView.kt:25)
        at com.automattic.photoeditor.views.background.fixed.BackgroundImageView.setImageDrawable(BackgroundImageView.kt:74)
        at com.bumptech.glide.request.target.DrawableImageViewTarget.setResource(DrawableImageViewTarget.java:24)
        at com.bumptech.glide.request.target.DrawableImageViewTarget.setResource(DrawableImageViewTarget.java:8)
        at com.bumptech.glide.request.target.ImageViewTarget.setResourceInternal(ImageViewTarget.java:124)
        at com.bumptech.glide.request.target.ImageViewTarget.onResourceReady(ImageViewTarget.java:101)
        at com.bumptech.glide.request.SingleRequest.onResourceReady(SingleRequest.java:624)
        at com.bumptech.glide.request.SingleRequest.onResourceReady(SingleRequest.java:568)
        at com.bumptech.glide.load.engine.EngineJob.callCallbackOnResourceReady(EngineJob.java:158)
        at com.bumptech.glide.load.engine.EngineJob$CallResourceReady.run(EngineJob.java:424) 
        at android.os.Handler.handleCallback(Handler.java:883) 
        at android.os.Handler.dispatchMessage(Handler.java:100) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
2020-11-03 18:35:29.660 14023-24928/? E/ResolverController: No valid NAT64 prefix (101, <unspecified>/0)

Ideal solution would be to prevent the user from being able to pick those files, but we can also probably workaround it and place the check on the stories library side. Will follow up.

aforcier commented 3 years ago

Resolved in https://github.com/wordpress-mobile/WordPress-Android/pull/13287.