android icon indicating copy to clipboard operation
android copied to clipboard

[BUG] Crash in PreviewImageFragment (Play Console)

Open jesmrec opened this issue 9 months ago • 1 comments

Actual behaviour

Crash with some appearances in Play Store. It's a NPE:

Exception java.lang.NullPointerException:
  at com.owncloud.android.ui.preview.PreviewImageFragment.onPrepareOptionsMenu (PreviewImageFragment.kt:195)
  at androidx.fragment.app.Fragment.performPrepareOptionsMenu (Fragment.java:3258)
  at androidx.fragment.app.FragmentManager.dispatchPrepareOptionsMenu (FragmentManager.java:3099)
  at androidx.fragment.app.FragmentManager$2.onPrepareMenu (FragmentManager.java:475)
  at androidx.core.view.MenuHostHelper.onPrepareMenu (MenuHostHelper.java:80)
  at androidx.activity.ComponentActivity.onPreparePanel (ComponentActivity.java:513)
  at androidx.appcompat.view.WindowCallbackWrapper.onPreparePanel (WindowCallbackWrapper.java:100)
  at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.onPreparePanel (AppCompatDelegateImpl.java:3477)
  at androidx.appcompat.app.AppCompatDelegateImpl.preparePanel (AppCompatDelegateImpl.java:2054)
  at androidx.appcompat.app.AppCompatDelegateImpl.doInvalidatePanelMenu (AppCompatDelegateImpl.java:2313)
  at androidx.appcompat.app.AppCompatDelegateImpl$2.run (AppCompatDelegateImpl.java:278)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1689)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1698)
  at android.view.Choreographer.doCallbacks (Choreographer.java:1153)
  at android.view.Choreographer.doFrame (Choreographer.java:1069)
  at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1646)
  at android.os.Handler.handleCallback (Handler.java:958)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:230)
  at android.os.Looper.loop (Looper.java:319)
  at android.app.ActivityThread.main (ActivityThread.java:8919)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:578)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1103)

Expected behaviour

No crash

Steps to reproduce

undefined.

Image

jesmrec avatar Apr 21 '25 08:04 jesmrec

The crash is not easy to reproduce (I haven't been able to) but, based on the logs it is located here:

 override fun onPrepareOptionsMenu(menu: Menu) {

        ...

        file = mContainerActivity.storageManager.getFileById(file.id ?: -1)

        ...
 }

In this line, there are two different variables that can be nullable: storageManager and file. The nullability of the first one is handled on BaseActivity and the logs don't show anything related to that class such as previous crashes reported by Play Console like this one: https://github.com/owncloud/android/issues/4333. So... we can discard it. On the other hand, file variable can be null in some scenarios (probably related to device performance or hacky actions) 🤔 To prevent the crash a nullability check will be added before using file object.

joragua avatar Jun 11 '25 12:06 joragua

Fixed starting from v4.6.0

joragua avatar Aug 08 '25 10:08 joragua