Skip to content
This repository has been archived by the owner on May 1, 2024. It is now read-only.

[Crash] java.lang.ClassCastException: android.view.View$BaseSavedState cannot be cast to android.widget.CompoundButton$SavedState #14180

Open
inimirpaz opened this issue Apr 16, 2021 · 6 comments
Labels
i/high Completely doesn't work, crashes, or is unusably slow, has no obvious workaround; occurs less often p/Android s/needs-info ❓ A question has been asked that requires an answer before work can continue on this issue. s/needs-repro ❔ This reported issue doesn't include a sample project reproducing the issue. Please provide one. s/unverified New report that has yet to be verified t/bug 🐛

Comments

@inimirpaz
Copy link

Description

We often receive crash reports from our Android users but (sorry!) we could never really replicate it in a controlled test environment, neither do we have any insight from our users on when/how the crash occurs...
Could you shed some light on where to look for investigating this issue any further?

Android: 10
Android Build: QKQ1.190910.002
Manufacturer: Xiaomi
Model: MI MAX 3

java.lang.ClassCastException: android.view.View$BaseSavedState cannot be cast to android.widget.CompoundButton$SavedState
  at android.widget.CompoundButton.onRestoreInstanceState(CompoundButton.java:603)
  at android.view.View.dispatchRestoreInstanceState(View.java:19930)
  at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3892)
  at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3892)
  at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3892)
  at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3892)
  at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3892)
  at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3892)
  at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3892)
  at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3892)
  at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3892)
  at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3892)
  at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3892)
  at android.view.View.restoreHierarchyState(View.java:19908)
  at com.android.internal.policy.PhoneWindow.restoreHierarchyState(PhoneWindow.java:2162)
  at android.app.Activity.onRestoreInstanceState(Activity.java:1602)
  at android.app.Activity.performRestoreInstanceState(Activity.java:1557)
  at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1354)
  at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3348)
  at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
  at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
  at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2044)
  at android.os.Handler.dispatchMessage(Handler.java:107)
  at android.os.Looper.loop(Looper.java:224)
  at android.app.ActivityThread.main(ActivityThread.java:7562)
  at java.lang.reflect.Method.invoke(Method.java:-2)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

Thread 2:
0   dalvik.system.VMStack.getThreadStackTrace(VMStack.java:-2)
1   java.lang.Thread.getStackTrace(Thread.java:1720)
2   java.lang.Thread.getAllStackTraces(Thread.java:1796)
3   com.microsoft.appcenter.crashes.Crashes.saveUncaughtException(Crashes.java:1146)
4   com.microsoft.appcenter.crashes.Crashes.saveUncaughtException(Crashes.java:1110)
5   com.microsoft.appcenter.crashes.UncaughtExceptionHandler.uncaughtException(UncaughtExceptionHandler.java:20)
6   java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1073)
7   java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)
8   java.lang.Thread.dispatchUncaughtException(Thread.java:2187)

Thread 51397:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Object.wait(Object.java:442)
2   java.lang.Object.wait(Object.java:568)
3   java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:217)
4   java.lang.Daemons$Daemon.run(Daemons.java:139)
5   java.lang.Thread.run(Thread.java:919)

Thread 51398:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Object.wait(Object.java:442)
2   java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:190)
3   java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:211)
4   java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:273)
5   java.lang.Daemons$Daemon.run(Daemons.java:139)
6   java.lang.Thread.run(Thread.java:919)

Thread 51399:
0   java.lang.Thread.sleep(Thread.java:-2)
1   java.lang.Thread.sleep(Thread.java:440)
2   java.lang.Thread.sleep(Thread.java:356)
3   java.lang.Daemons$FinalizerWatchdogDaemon.sleepForMillis(Daemons.java:385)
4   java.lang.Daemons$FinalizerWatchdogDaemon.waitForFinalization(Daemons.java:413)
5   java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:325)
6   java.lang.Daemons$Daemon.run(Daemons.java:139)
7   java.lang.Thread.run(Thread.java:919)

Thread 51406:
0   sun.misc.Unsafe.park(Unsafe.java:-2)
1   java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
2   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
3   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
4   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
5   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
6   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
7   java.lang.Thread.run(Thread.java:919)

Thread 51407:
0   sun.misc.Unsafe.park(Unsafe.java:-2)
1   java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
2   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
3   java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1120)
4   java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:849)
5   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
6   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
7   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
8   com.google.android.gms.common.util.concurrent.zza.run(com.google.android.gms:play-services-basement@@17.5.0:6)
9   java.lang.Thread.run(Thread.java:919)

Thread 51408:
0   sun.misc.Unsafe.park(Unsafe.java:-2)
1   java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
2   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
3   java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1120)
4   java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:849)
5   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
6   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
7   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
8   com.google.android.gms.common.util.concurrent.zza.run(com.google.android.gms:play-services-basement@@17.5.0:6)
9   java.lang.Thread.run(Thread.java:919)

Thread 51410:
0   sun.misc.Unsafe.park(Unsafe.java:-2)
1   java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
2   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2109)
3   java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
4   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
5   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
6   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
7   com.google.android.gms.common.util.concurrent.zza.run(com.google.android.gms:play-services-basement@@17.5.0:6)
8   java.lang.Thread.run(Thread.java:919)

Thread 51414:
0   sun.misc.Unsafe.park(Unsafe.java:-2)
1   java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
2   java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:461)
3   java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
4   java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:937)
5   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
6   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
7   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
8   java.lang.Thread.run(Thread.java:919)

Thread 51416:
0   android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1   android.os.MessageQueue.next(MessageQueue.java:336)
2   android.os.Looper.loop(Looper.java:181)
3   android.os.HandlerThread.run(HandlerThread.java:67)

Thread 51418:
0   android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1   android.os.MessageQueue.next(MessageQueue.java:336)
2   android.os.Looper.loop(Looper.java:181)
3   android.os.HandlerThread.run(HandlerThread.java:67)

Thread 51420:
0   android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1   android.os.MessageQueue.next(MessageQueue.java:336)
2   android.os.Looper.loop(Looper.java:181)
3   android.os.HandlerThread.run(HandlerThread.java:67)

Thread 51422:
0   android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1   android.os.MessageQueue.next(MessageQueue.java:336)
2   android.os.Looper.loop(Looper.java:181)
3   android.os.HandlerThread.run(HandlerThread.java:67)

Version Information

=== Visual Studio Community 2019 for Mac ===

Version 8.9.6 (build 6)
Installation UUID: f3b4d2ff-0f82-4d7f-a199-41e0c964cb07
	GTK+ 2.24.23 (Raleigh theme)
	Xamarin.Mac 6.18.0.23 (d16-6 / 088c73638)

	Package version: 612000125

=== Mono Framework MDK ===

Runtime:
	Mono 6.12.0.125 (2020-02/8c552e98bd6) (64-bit)
	Package version: 612000125

=== Xamarin Designer ===

Version: 16.9.0.323
Hash: 1b4790c08
Branch: remotes/origin/d16-9
Build date: 2021-03-31 05:12:20 UTC

=== Roslyn (Language Service) ===

3.9.0-6.21152.10+c10f884b30737542ddd84ca889a4aad9281ce210

=== NuGet ===

Version: 5.8.0.6860

=== .NET Core SDK ===

SDK: /usr/local/share/dotnet/sdk/6.0.100-preview.3.21202.5/Sdks
SDK Versions:
	6.0.100-preview.3.21202.5
	6.0.100-preview.2.21155.3
	6.0.100-preview.1.21103.13
	5.0.202
	5.0.201
	5.0.103
	5.0.102
	5.0.101
	5.0.100
	3.1.408
	3.1.407
	3.1.406
	3.1.405
	3.1.404
	3.1.403
	3.1.402
	3.1.401
	3.1.302
	3.1.301
	3.1.300
	3.1.202
	3.1.200
	3.1.102
	3.1.101
	3.1.100
	3.0.101
	3.0.100
	2.1.701
MSBuild SDKs: /Applications/Visual Studio.app/Contents/Resources/lib/monodevelop/bin/MSBuild/Current/bin/Sdks

=== .NET Core Runtime ===

Runtime: /usr/local/share/dotnet/dotnet
Runtime Versions:
	6.0.0-preview.3.21201.4
	5.0.5
	5.0.4
	5.0.3
	5.0.2
	5.0.1
	5.0.0
	3.1.14
	3.1.13
	3.1.12
	3.1.11
	3.1.10
	3.1.9
	3.1.8
	3.1.7
	3.1.6
	3.1.5
	3.1.4
	3.1.2
	3.1.1
	3.1.0
	3.0.1
	3.0.0
	2.1.23
	2.1.22
	2.1.21
	2.1.20
	2.1.19
	2.1.18
	2.1.17
	2.1.16
	2.1.15
	2.1.14
	2.1.13
	2.1.12

=== .NET Core 3.1 SDK ===

SDK: 3.1.408

=== Xamarin.Profiler ===

Version: 1.6.12.26
Location: /Applications/Xamarin Profiler.app/Contents/MacOS/Xamarin Profiler

=== Updater ===

Version: 11

=== Apple Developer Tools ===

Xcode 12.4 (17801)
Build 12D4e

=== Xamarin.Mac ===

Version: 7.8.2.5 (Visual Studio Community)
Hash: 3836759d4
Branch: d16-9
Build date: 2021-02-10 17:56:43-0500

=== Xamarin.iOS ===

Version: 14.14.2.5 (Visual Studio Community)
Hash: 3836759d4
Branch: d16-9
Build date: 2021-02-10 17:56:44-0500

=== Xamarin.Android ===

Version: 11.2.2.1 (Visual Studio Community)
Commit: xamarin-android/d16-9/877f572
Android SDK: /Users/user/Library/Developer/Xamarin/android-sdk-macosx
	Supported Android versions:
		5.0 (API level 21)
		8.1 (API level 27)

SDK Tools Version: 26.1.1
SDK Platform Tools Version: 31.0.0
SDK Build Tools Version: 30.0.2

Build Information: 
Mono: 5e9cb6d
Java.Interop: xamarin/java.interop/d16-9@54f8c24
ProGuard: Guardsquare/proguard/v7.0.1@912d149
SQLite: xamarin/sqlite/3.34.1@daff8f4
Xamarin.Android Tools: xamarin/xamarin-android-tools/d16-9@d210f11

=== Microsoft OpenJDK for Mobile ===

Java SDK: /Users/user/Library/Developer/Xamarin/jdk/microsoft_dist_openjdk_1.8.0.25
1.8.0-25
Android Designer EPL code available here:
https://github.com/xamarin/AndroidDesigner.EPL

=== Android SDK Manager ===

Version: 16.9.0.22
Hash: a391de2
Branch: remotes/origin/d16-9~2
Build date: 2021-03-24 08:30:26 UTC

=== Android Device Manager ===

Version: 16.9.0.17
Hash: fc2b3db
Branch: remotes/origin/dev/jmt/d16-9bump~1
Build date: 2021-03-24 08:30:44 UTC

=== Build Information ===

Release ID: 809060006
Git revision: 47cf16e38721a785b8e2296ce6716502f34261ac
Build date: 2021-04-07 07:23:18-04
Build branch: release-8.9
Xamarin extensions: 47cf16e38721a785b8e2296ce6716502f34261ac

=== Operating System ===

Mac OS X 10.16.0
Darwin 20.3.0 Darwin Kernel Version 20.3.0
    Thu Jan 21 00:07:06 PST 2021
    root:xnu-7195.81.3~1/RELEASE_X86_64 x86_64

=== Enabled user installed extensions ===

AddinMaker 1.6.0


Edit:

Fix Attempts

We blindly tried to fix the issue many times already. Lately we tried with this https://stackoverflow.com/a/53895270/13370543 but it did not work.

@jpobst
Copy link

jpobst commented Apr 19, 2021

The StackOverflow link indicates this may be related to some state handling in Xamarin.Forms. I'm going to transfer it to them first and see if it's an issue in XF.

@jpobst jpobst transferred this issue from dotnet/android Apr 19, 2021
@rachelkang
Copy link
Contributor

Hi, @inimirpaz - thank you for submitting this issue! Are you able to share your project or a sample project that can help us get a sense of your general project structure, what controls you're using, etc? In particular, I'm curious about any code you might have related to state handling.

Also, do you have information on which devices and versions of Android that users are experiencing this crash on? And what version of XF are you using? Thanks :)

@rachelkang rachelkang added i/high Completely doesn't work, crashes, or is unusably slow, has no obvious workaround; occurs less often p/Android s/needs-info ❓ A question has been asked that requires an answer before work can continue on this issue. s/needs-repro ❔ This reported issue doesn't include a sample project reproducing the issue. Please provide one. s/unverified New report that has yet to be verified t/bug 🐛 labels Apr 29, 2021
@inimirpaz
Copy link
Author

inimirpaz commented Apr 30, 2021

Hi, @rachelkang thanks for your reply. Since we have not been able to repro this in any smaller project (not sure what to look for for reproducing this issue) I am not able to provide any sample project. We do not have any explicit Android state handling code beside the one we cited above from the StackOverflow post.

We are using Xamarin Forms 5 (we have been having this issue at least for every 5 release so far, I could check if the issue was there even with 4.8).

Here are the latest few errors we could find from our users (note that the last one is slightly different):

Mi Note 10 - Android 11
android.widget.CompoundButton.onRestoreInstanceState
CompoundButton.java, line 653
java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.CompoundButton$SavedState

android.widget.CompoundButton.onRestoreInstanceState CompoundButton.java:653 android.view.View.dispatchRestoreInstanceState View.java:20852 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014 android.view.View.restoreHierarchyState View.java:20830 com.android.internal.policy.PhoneWindow.restoreHierarchyState PhoneWindow.java:2185 android.app.Activity.onRestoreInstanceState Activity.java:1721 android.app.Activity.performRestoreInstanceState Activity.java:1674 android.app.Instrumentation.callActivityOnRestoreInstanceState Instrumentation.java:1357 android.app.ActivityThread.handleStartActivity ActivityThread.java:3543 android.app.servertransaction.TransactionExecutor.performLifecycleSequence TransactionExecutor.java:221 android.app.servertransaction.TransactionExecutor.cycleToPath TransactionExecutor.java:201 android.app.servertransaction.TransactionExecutor.executeLifecycleState TransactionExecutor.java:173 android.app.servertransaction.TransactionExecutor.execute TransactionExecutor.java:97 android.app.ActivityThread$H.handleMessage ActivityThread.java:2108 android.os.Handler.dispatchMessage Handler.java:106 android.os.Looper.loop Looper.java:236 android.app.ActivityThread.main ActivityThread.java:7876 java.lang.reflect.Method.invoke Method.java com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:656 com.android.internal.os.ZygoteInit.main ZygoteInit.java:967

Galaxy S10+ - Android 11
android.widget.CompoundButton.onRestoreInstanceState
CompoundButton.java, line 686
java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.CompoundButton$SavedState

android.widget.CompoundButton.onRestoreInstanceState CompoundButton.java:686 android.view.View.dispatchRestoreInstanceState View.java:22288 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805 android.view.View.restoreHierarchyState View.java:22266 com.android.internal.policy.PhoneWindow.restoreHierarchyState PhoneWindow.java:2267 android.app.Activity.onRestoreInstanceState Activity.java:1719 android.app.Activity.performRestoreInstanceState Activity.java:1672 android.app.Instrumentation.callActivityOnRestoreInstanceState Instrumentation.java:1356 android.app.ActivityThread.handleStartActivity ActivityThread.java:3834 android.app.servertransaction.TransactionExecutor.performLifecycleSequence TransactionExecutor.java:221 android.app.servertransaction.TransactionExecutor.cycleToPath TransactionExecutor.java:201 android.app.servertransaction.TransactionExecutor.executeLifecycleState TransactionExecutor.java:173 android.app.servertransaction.TransactionExecutor.execute TransactionExecutor.java:97 android.app.ActivityThread$H.handleMessage ActivityThread.java:2307 android.os.Handler.dispatchMessage Handler.java:106 android.os.Looper.loop Looper.java:246 android.app.ActivityThread.main ActivityThread.java:8506 java.lang.reflect.Method.invoke Method.java com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:602 com.android.internal.os.ZygoteInit.main ZygoteInit.java:1130

LM-X420 - Android 8.1.0
android.widget.CompoundButton.onRestoreInstanceState
CompoundButton.java, line 563
java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.CompoundButton$SavedState

android.widget.CompoundButton.onRestoreInstanceState CompoundButton.java:563 android.view.View.dispatchRestoreInstanceState View.java:17775 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825 android.view.View.restoreHierarchyState View.java:17753 com.android.internal.policy.PhoneWindow.restoreHierarchyState PhoneWindow.java:2166 android.app.Activity.onRestoreInstanceState Activity.java:1102 android.app.Activity.performRestoreInstanceState Activity.java:1057 android.app.Instrumentation.callActivityOnRestoreInstanceState Instrumentation.java:1261 android.app.ActivityThread.performLaunchActivity ActivityThread.java:2830 android.app.ActivityThread.handleLaunchActivity ActivityThread.java:2935 android.app.ActivityThread.-wrap11 android.app.ActivityThread$H.handleMessage ActivityThread.java:1627 android.os.Handler.dispatchMessage Handler.java:106 android.os.Looper.loop Looper.java:175 android.app.ActivityThread.main ActivityThread.java:6724 java.lang.reflect.Method.invoke Method.java com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:438 com.android.internal.os.ZygoteInit.main ZygoteInit.java:810

CPH1803RU - Android 8.1.0
android.widget.CompoundButton.onRestoreInstanceState
CompoundButton.java, line 563
java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.CompoundButton$SavedState

android.widget.CompoundButton.onRestoreInstanceState CompoundButton.java:563 android.view.View.dispatchRestoreInstanceState View.java:17944 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794 android.view.View.restoreHierarchyState View.java:17922 com.android.internal.policy.PhoneWindow.restoreHierarchyState PhoneWindow.java:2202 android.app.Activity.onRestoreInstanceState Activity.java:1182 android.app.Activity.performRestoreInstanceState Activity.java:1137 android.app.Instrumentation.callActivityOnRestoreInstanceState Instrumentation.java:1261 android.app.ActivityThread.performLaunchActivity ActivityThread.java:2968 android.app.ActivityThread.handleLaunchActivity ActivityThread.java:3073 android.app.ActivityThread.-wrap11 android.app.ActivityThread$H.handleMessage ActivityThread.java:1774 android.os.Handler.dispatchMessage Handler.java:106 android.os.Looper.loop Looper.java:198 android.app.ActivityThread.main ActivityThread.java:7055 java.lang.reflect.Method.invoke Method.java com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:523 com.android.internal.os.ZygoteInit.main ZygoteInit.java:836

realme C3 - Android 10
android.widget.CompoundButton.onRestoreInstanceState
CompoundButton.java, line 603
java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.CompoundButton$SavedState

android.widget.CompoundButton.onRestoreInstanceState CompoundButton.java:603 android.view.View.dispatchRestoreInstanceState View.java:20119 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968 android.view.View.restoreHierarchyState View.java:20097 com.android.internal.policy.PhoneWindow.restoreHierarchyState PhoneWindow.java:2166 android.app.Activity.onRestoreInstanceState Activity.java:1623 android.app.Activity.performRestoreInstanceState Activity.java:1571 android.app.Instrumentation.callActivityOnRestoreInstanceState Instrumentation.java:1353 android.app.ActivityThread.handleStartActivity ActivityThread.java:3574 android.app.servertransaction.TransactionExecutor.performLifecycleSequence TransactionExecutor.java:226 android.app.servertransaction.TransactionExecutor.cycleToPath TransactionExecutor.java:206 android.app.servertransaction.TransactionExecutor.executeLifecycleState TransactionExecutor.java:178 android.app.servertransaction.TransactionExecutor.execute TransactionExecutor.java:102 android.app.ActivityThread$H.handleMessage ActivityThread.java:2239 android.os.Handler.dispatchMessage Handler.java:107 android.os.Looper.loop Looper.java:227 android.app.ActivityThread.main ActivityThread.java:7822 java.lang.reflect.Method.invoke Method.java com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:492 com.android.internal.os.ZygoteInit.main ZygoteInit.java:1026

Redmi 8 - Android 10
android.widget.CompoundButton.onRestoreInstanceState
CompoundButton.java, line 603
java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.CompoundButton$SavedState

android.widget.CompoundButton.onRestoreInstanceState CompoundButton.java:603 android.view.View.dispatchRestoreInstanceState View.java:19930 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.View.restoreHierarchyState View.java:19908 com.android.internal.policy.PhoneWindow.restoreHierarchyState PhoneWindow.java:2162 android.app.Activity.onRestoreInstanceState Activity.java:1603 android.app.Activity.performRestoreInstanceState Activity.java:1558 android.app.Instrumentation.callActivityOnRestoreInstanceState Instrumentation.java:1354 android.app.ActivityThread.handleStartActivity ActivityThread.java:3348 android.app.servertransaction.TransactionExecutor.performLifecycleSequence TransactionExecutor.java:221 android.app.servertransaction.TransactionExecutor.cycleToPath TransactionExecutor.java:201 android.app.servertransaction.TransactionExecutor.executeLifecycleState TransactionExecutor.java:173 android.app.servertransaction.TransactionExecutor.execute TransactionExecutor.java:97 android.app.ActivityThread$H.handleMessage ActivityThread.java:2044 android.os.Handler.dispatchMessage Handler.java:107 android.os.Looper.loop Looper.java:223 android.app.ActivityThread.main ActivityThread.java:7562 java.lang.reflect.Method.invoke Method.java com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:539 com.android.internal.os.ZygoteInit.main ZygoteInit.java:950

MI MAX 3 - Android 10
android.widget.CompoundButton.onRestoreInstanceState
CompoundButton.java, line 603
java.lang.ClassCastException: android.view.View$BaseSavedState cannot be cast to android.widget.CompoundButton$SavedState

android.widget.CompoundButton.onRestoreInstanceState CompoundButton.java:603 android.view.View.dispatchRestoreInstanceState View.java:19930 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892 android.view.View.restoreHierarchyState View.java:19908 com.android.internal.policy.PhoneWindow.restoreHierarchyState PhoneWindow.java:2162 android.app.Activity.onRestoreInstanceState Activity.java:1602 android.app.Activity.performRestoreInstanceState Activity.java:1557 android.app.Instrumentation.callActivityOnRestoreInstanceState Instrumentation.java:1354 android.app.ActivityThread.handleStartActivity ActivityThread.java:3348 android.app.servertransaction.TransactionExecutor.performLifecycleSequence TransactionExecutor.java:221 android.app.servertransaction.TransactionExecutor.cycleToPath TransactionExecutor.java:201 android.app.servertransaction.TransactionExecutor.executeLifecycleState TransactionExecutor.java:173 android.app.servertransaction.TransactionExecutor.execute TransactionExecutor.java:97 android.app.ActivityThread$H.handleMessage ActivityThread.java:2044 android.os.Handler.dispatchMessage Handler.java:107 android.os.Looper.loop Looper.java:224 android.app.ActivityThread.main ActivityThread.java:7562 java.lang.reflect.Method.invoke Method.java com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:539 com.android.internal.os.ZygoteInit.main ZygoteInit.java:950

Is there anything we could do for making this issue more "debugable"?
EDIT: Yes, this issue was already present when we were using XF 4.8.0.1560 (or prior to that).

@tristanmhmx
Copy link

This is also happening to us:

android.widget.CompoundButton.onRestoreInstanceState CompoundButton.java:603
android.view.View.dispatchRestoreInstanceState View.java:19876
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3866
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3866
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3866
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3866
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3866
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3866
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3866
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3866
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3866
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3866
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3866
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3866
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3866
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3866
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3866
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3866
android.view.View.restoreHierarchyState View.java:19854
com.android.internal.policy.PhoneWindow.restoreHierarchyState PhoneWindow.java:2188
android.app.Activity.onRestoreInstanceState Activity.java:1567
android.app.Activity.performRestoreInstanceState Activity.java:1522
android.app.Instrumentation.callActivityOnRestoreInstanceState Instrumentation.java:1375
android.app.ActivityThread.handleStartActivity ActivityThread.java:3495
android.app.servertransaction.TransactionExecutor.performLifecycleSequence TransactionExecutor.java:221
android.app.servertransaction.TransactionExecutor.cycleToPath TransactionExecutor.java:201
android.app.servertransaction.TransactionExecutor.executeLifecycleState TransactionExecutor.java:173
android.app.servertransaction.TransactionExecutor.execute TransactionExecutor.java:97
android.app.ActivityThread$H.handleMessage ActivityThread.java:2164
android.os.Handler.dispatchMessage Handler.java:107
android.os.Looper.loop Looper.java:241
android.app.ActivityThread.main ActivityThread.java:7582
java.lang.reflect.Method.invoke Method.java
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:492
com.android.internal.os.ZygoteInit.main ZygoteInit.java:941

@jpobst jpobst removed their assignment Jun 27, 2021
@romerotg
Copy link

romerotg commented Aug 16, 2021

@inimirpaz about that linked stackoverflow post that didn't work for you. There are other components that are subclasses from CompoundButton. Did you create renderers for all of them to test? Because the fix in that post is only for switches.

Known direct subclasses: CheckBox, RadioButton, Switch, ToggleButton.

@inimirpaz
Copy link
Author

@inimirpaz about that linked stackoverflow post that didn't work for you. There are other components that are subclasses from CompoundButton. Did you create renderers for all of them to test? Because the fix in that post is only for switches.

Known direct subclasses: CheckBox, RadioButton, Switch, ToggleButton.

Hi @romerotg
I created renderers for the Switch control only, I may try creating one for Checkboxes as well (I have no radios nor toggles).

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
i/high Completely doesn't work, crashes, or is unusably slow, has no obvious workaround; occurs less often p/Android s/needs-info ❓ A question has been asked that requires an answer before work can continue on this issue. s/needs-repro ❔ This reported issue doesn't include a sample project reproducing the issue. Please provide one. s/unverified New report that has yet to be verified t/bug 🐛
Projects
None yet
Development

No branches or pull requests

6 participants