mediapipe icon indicating copy to clipboard operation
mediapipe copied to clipboard

Crash when running the llm inference on android

Open ishaan1995 opened this issue 1 year ago • 0 comments

Description

When running the app with a gemma 2b model, it crashes randomly after a few messages with error java.util.ConcurrentModificationException. I don't have much context on jetpack compose but it looks like a ui state issue.

Device Details

Model: gemma-2b-it-cpu-int4.bin (downloaded from kaggle) Pixel 6

Crash log

2024-04-22 01:57:41.765 15456-15456 InsetsController        com...diapipe.examples.llminference  D  show(ime(), fromIme=false)
2024-04-22 01:57:41.766 15456-15456 InputMethodManager      com...diapipe.examples.llminference  D  showSoftInput() view=androidx.compose.ui.platform.AndroidComposeView{b68342a VFED..... .F....ID 0,0-1080,2209 aid=1073741824} flags=0 reason=SHOW_SOFT_INPUT_BY_INSETS_API
2024-04-22 01:57:41.883 15456-15456 InsetsController        com...diapipe.examples.llminference  D  show(ime(), fromIme=true)
2024-04-22 01:57:49.772 15456-15456 AndroidRuntime          com...diapipe.examples.llminference  E  FATAL EXCEPTION: main
                                                                                                    Process: com.google.mediapipe.examples.llminference, PID: 15456
                                                                                                    java.util.ConcurrentModificationException
                                                                                                    	at androidx.compose.runtime.snapshots.StateListIterator.validateModification(SnapshotStateList.kt:320)
                                                                                                    	at androidx.compose.runtime.snapshots.StateListIterator.next(SnapshotStateList.kt:296)
                                                                                                    	at com.google.mediapipe.examples.llminference.GemmaUiState.getMessages(ChatUiState.kt:127)
                                                                                                    	at com.google.mediapipe.examples.llminference.ChatScreenKt$ChatScreen$1$1.invoke(ChatScreen.kt:77)
                                                                                                    	at com.google.mediapipe.examples.llminference.ChatScreenKt$ChatScreen$1$1.invoke(ChatScreen.kt:70)
                                                                                                    	at androidx.compose.foundation.lazy.LazyListIntervalContent.<init>(LazyListIntervalContent.kt:34)
                                                                                                    	at androidx.compose.foundation.lazy.LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$intervalContentState$1.invoke(LazyListItemProvider.kt:49)
                                                                                                    	at androidx.compose.foundation.lazy.LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$intervalContentState$1.invoke(LazyListItemProvider.kt:48)
                                                                                                    	at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2303)
                                                                                                    	at androidx.compose.runtime.DerivedSnapshotState.currentRecord(DerivedState.kt:200)
                                                                                                    	at androidx.compose.runtime.DerivedSnapshotState.current(DerivedState.kt:167)
                                                                                                    	at androidx.compose.runtime.DerivedSnapshotState$ResultRecord.readableHash(DerivedState.kt:142)
                                                                                                    	at androidx.compose.runtime.DerivedSnapshotState$ResultRecord.isValid(DerivedState.kt:114)
                                                                                                    	at androidx.compose.runtime.DerivedSnapshotState.currentRecord(DerivedState.kt:175)
                                                                                                    	at androidx.compose.runtime.DerivedSnapshotState.getCurrentRecord(DerivedState.kt:274)
                                                                                                    	at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.recordInvalidation(SnapshotStateObserver.kt:595)
                                                                                                    	at androidx.compose.runtime.snapshots.SnapshotStateObserver.drainChanges(SnapshotStateObserver.kt:69)
                                                                                                    	at androidx.compose.runtime.snapshots.SnapshotStateObserver.access$drainChanges(SnapshotStateObserver.kt:41)
                                                                                                    	at androidx.compose.runtime.snapshots.SnapshotStateObserver$applyObserver$1.invoke(SnapshotStateObserver.kt:48)
                                                                                                    	at androidx.compose.runtime.snapshots.SnapshotStateObserver$applyObserver$1.invoke(SnapshotStateObserver.kt:46)
                                                                                                    	at androidx.compose.runtime.snapshots.SnapshotKt.advanceGlobalSnapshot(Snapshot.kt:1815)
                                                                                                    	at androidx.compose.runtime.snapshots.SnapshotKt.advanceGlobalSnapshot(Snapshot.kt:1830)
                                                                                                    	at androidx.compose.runtime.snapshots.SnapshotKt.access$advanceGlobalSnapshot(Snapshot.kt:1)
                                                                                                    	at androidx.compose.runtime.snapshots.Snapshot$Companion.sendApplyNotifications(Snapshot.kt:583)
                                                                                                    	at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:561)
                                                                                                    	at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:551)
                                                                                                    	at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:41)
                                                                                                    	at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109)
                                                                                                    	at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41)
                                                                                                    	at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
                                                                                                    	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1229)
                                                                                                    	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
                                                                                                    	at android.view.Choreographer.doCallbacks(Choreographer.java:899)
                                                                                                    	at android.view.Choreographer.doFrame(Choreographer.java:827)
                                                                                                    	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
                                                                                                    	at android.os.Handler.handleCallback(Handler.java:942)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:201)
                                                                                                    	at android.os.Looper.loop(Looper.java:288)
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:7918)
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
2024-04-22 01:57:49.773 15456-15456 AndroidRuntime          com...diapipe.examples.llminference  E  	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
                                                                                                    	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.runtime.PausableMonotonicFrameClock@15910fd, androidx.compose.ui.platform.MotionDurationScaleImpl@6c781f2, StandaloneCoroutine{Cancelling}@fb64043, AndroidUiDispatcher@efff6c0]

ishaan1995 avatar Apr 21 '24 20:04 ishaan1995