horologist icon indicating copy to clipboard operation
horologist copied to clipboard

Crash with WearNavScaffold

Open Digipom opened this issue 3 years ago • 5 comments

Version 0.1.11

I've only seen this crash in production so far. It's the most frequent crash on the Wear OS version of my app. I haven't yet reproduced this locally.

Exception java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference
  at com.google.android.horologist.compose.navscaffold.WearNavScaffoldKt$WearNavScaffold$3.invoke (WearNavScaffold.kt:86)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:34)
  at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd (Composer.kt:2304)
  at androidx.compose.runtime.ComposerImpl.skipToGroupEnd (Composer.kt:2634)
  at androidx.wear.compose.material.ScaffoldKt.Scaffold (Scaffold.kt:63)
  at com.google.android.horologist.compose.navscaffold.WearNavScaffoldKt.WearNavScaffold (WearNavScaffold.kt:77)
  at com.google.android.horologist.compose.navscaffold.WearNavScaffoldKt$WearNavScaffold$5.invoke (WearNavScaffold.kt)
  at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd (Composer.kt:2304)
  at androidx.compose.runtime.ComposerImpl.skipToGroupEnd (Composer.kt:2634)
  at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke (ComposeView.android.kt:247)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:34)
  at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider (CompositionLocal.kt:226)
  at androidx.compose.ui.platform.CompositionLocalsKt.ProvideCommonCompositionLocals (CompositionLocals.kt:176)
  at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke (AndroidCompositionLocals.android.kt:122)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:34)
  at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider (CompositionLocal.kt:226)
  at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.ProvideAndroidCompositionLocals (AndroidCompositionLocals.android.kt:87)
  at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$4.invoke (AndroidCompositionLocals.android.kt)
  at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd (Composer.kt:2304)
  at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke (Composer.kt:3191)
  at androidx.compose.runtime.SnapshotStateKt__DerivedStateKt.observeDerivedStateRecalculations (SnapshotStateKt__DerivedStateKt.java:245)
  at androidx.compose.runtime.ComposerImpl.doCompose (Composer.kt:3158)
  at androidx.compose.runtime.CompositionImpl.recompose (Composition.kt:743)
  at androidx.compose.runtime.Recomposer.performRecompose (Recomposer.kt:866)
  at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke (Recomposer.kt:454)
  at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame (AndroidUiFrameClock.android.kt:34)
  at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame (AndroidUiDispatcher.android.kt:67)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:996)
  at android.view.Choreographer.doCallbacks (Choreographer.java:796)
  at android.view.Choreographer.doFrame (Choreographer.java:727)
  at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:983)
  at android.os.Handler.handleCallback (Handler.java:938)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:7690)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:593)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:995)

Digipom avatar Sep 21 '22 00:09 Digipom

A similar crash was also occurring with version 0.0.27.

Digipom avatar Sep 21 '22 00:09 Digipom

Thanks for the report, I'll dig in.

yschimke avatar Sep 21 '22 05:09 yschimke

It's presumably failing here

https://github.com/google/horologist/blob/v0.1.11/compose-layout/src/main/java/com/google/android/horologist/compose/navscaffold/WearNavScaffold.kt#L103

But the line number isn't helpful and I'm not sure how it can get into that state?

I'll try a fix to avoid NPE here, defaulting to index 1, and offset 0. If you can test with a new release, or give any other insight into the context it would be great.

yschimke avatar Sep 21 '22 08:09 yschimke

Maybe fixed, can you let me know if you see it with 0.1.12?

yschimke avatar Sep 21 '22 12:09 yschimke

Ah that was very fast, thank you! I'll go give it a try.

Digipom avatar Sep 21 '22 12:09 Digipom

I haven't seen the crash come back. Looks like we're good now! Thank you again.

Digipom avatar Sep 23 '22 12:09 Digipom