Assigned
Status Update
Comments
ha...@google.com <ha...@google.com>
al...@google.com <al...@google.com> #2
Also doesn't work in AS 2024.3.2 Canary 4 and Compose 1.8.0-beta01
an...@google.com <an...@google.com> #3
Andrei: Is this the same as
Description
Jetpack Compose component(s) used: rememberSaveable
Android Studio Build: #AI-223.8836.35.2231.10671973, built on August 17, 2023
Kotlin version: 1.9.0
Steps to Reproduce or Code Sample to Reproduce:
1. Create a saveable set of Serializable items
```
var mySet by rememberSaveable { mutableStateOf(emptySet<T>()) }
```
2. Save two items in that set
3. Invoke config change (rotate screen)
4. Crash
Notes:
Will not crash when saving a list instead of set. Will not crash if there's only one item in the set, only crashes for >1. Fwiw it seems like each item is saved individually (see screenshot for the debugger dump).
Stack trace:
```
java.lang.IllegalStateException: Check failed.
at androidx.compose.runtime.saveable.SaveableStateRegistryImpl.performSave(SaveableStateRegistry.kt:138)
at androidx.compose.ui.platform.DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$registered$1.saveState(DisposableSaveableStateRegistry.android.kt:83)
at androidx.savedstate.SavedStateRegistry.performSave(SavedStateRegistry.kt:247)
at androidx.savedstate.SavedStateRegistryController.performSave(SavedStateRegistryController.kt:81)
at androidx.activity.ComponentActivity.onSaveInstanceState(ComponentActivity.java:399)
at android.app.Activity.performSaveInstanceState(Activity.java:2288)
at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1635)
at android.app.ActivityThread.callActivityOnSaveInstanceState(ActivityThread.java:5962)
at android.app.ActivityThread.callActivityOnStop(ActivityThread.java:5382)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5920)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5842)
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:76)
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
```