material-components-android icon indicating copy to clipboard operation
material-components-android copied to clipboard

[BadgeUtils.java] App crash - Fatal Exception: IllegalArgumentException: badgeDrawable cannot be null

Open kapin-k opened this issue 3 years ago • 4 comments
trafficstars

Description: App crashes as it encounters a fatal exception in the createParcelableBadgeStates() function (BadgeUtils.java)

Witnessing crashes recently with the below stack trace and the number of crashes seems to increase over time. Haven't been able to reproduce this issue

Fatal Exception: java.lang.IllegalArgumentException: badgeDrawable cannot be null at com.google.android.material.badge.BadgeUtils.createParcelableBadgeStates(BadgeUtils.java:223) at com.google.android.material.navigation.NavigationBarPresenter.onSaveInstanceState(NavigationBarPresenter.java:119) at androidx.appcompat.view.menu.MenuBuilder.dispatchSaveInstanceState(MenuBuilder.java:332) at androidx.appcompat.view.menu.MenuBuilder.savePresenterStates(MenuBuilder.java:365) at com.google.android.material.navigation.NavigationBarView.onSaveInstanceState(NavigationBarView.java:738) at android.view.View.dispatchSaveInstanceState(View.java:20984) at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:3975) at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:3981) at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:3981) at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:3981) at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:3981) at android.view.View.saveHierarchyState(View.java:20967) at com.android.internal.policy.PhoneWindow.saveHierarchyState(PhoneWindow.java:2165) at android.app.Activity.onSaveInstanceState(Activity.java:2276) at androidx.core.app.ComponentActivity.onSaveInstanceState(ComponentActivity.java:93) at androidx.activity.ComponentActivity.onSaveInstanceState(ComponentActivity.java:335) at com.fetchrewards.fetchrewards.activities.main.MainActivity.onSaveInstanceState(MainActivity.kt:990) at android.app.Activity.performSaveInstanceState(Activity.java:2200) at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1520) at android.app.ActivityThread.callActivityOnSaveInstanceState(ActivityThread.java:5830) at android.app.ActivityThread.callActivityOnStop(ActivityThread.java:5229) at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:5195) at android.app.ActivityThread.handleStopActivity(ActivityThread.java:5260) at android.app.servertransaction.StopActivityItem.execute(StopActivityItem.java:43) at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2253) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7870) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)

The crash is entirely random and cannot be reproduced at will.

Material Library version: 1.4.0 "com.google.android.material:material:1.4.0" - also used along side with compose material library

Android API version: Android API version 29+ (All occurred crashes occur on API level 29 and above - very less data on crashes with API level below 29)

Device: (however, the crash is not contained to the devices listed below) Pixel 6 (Android 12) Motorola One 5G (Android 11) Samsung S21 (Android 12)

kapin-k avatar May 20 '22 20:05 kapin-k

#2054 Noticing there was a prior issue with the exact stack trace

kapin-k avatar May 20 '22 20:05 kapin-k

Are you able to reproducible it with the latest library version?

As I said in the other duplicate issue, from the logic path I can't see how this can happen. I'm wondering if it's already been fixed. Can you help confirm that?

drchen avatar May 23 '22 21:05 drchen

Yes, I'm still seeing the crash on the latest version of the material library (v1.6.0). However, I am not able to consistently reproduce this at will.

kapin-k avatar Jun 06 '22 14:06 kapin-k

I am facing same issue with version 1.6.1 .. Stack Trace is almost same added below .. Tried to reproduce it but could not its completely random . Using theme Theme.MaterialComponents.Light.NoActionBar.Bridge ..

Fatal Exception: java.lang.IllegalArgumentException: badgeDrawable cannot be null at com.google.android.material.badge.BadgeUtils.createParcelableBadgeStates(BadgeUtils.java:270) at com.google.android.material.navigation.NavigationBarPresenter.onSaveInstanceState(NavigationBarPresenter.java:119) at androidx.appcompat.view.menu.MenuBuilder.dispatchSaveInstanceState(MenuBuilder.java:332) at androidx.appcompat.view.menu.MenuBuilder.savePresenterStates(MenuBuilder.java:365) at com.google.android.material.navigation.NavigationBarView.onSaveInstanceState(NavigationBarView.java:920) at android.view.View.dispatchSaveInstanceState(View.java:22163) at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:4795) at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:4801) at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:4801) at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:4801) at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:4801) at android.view.View.saveHierarchyState(View.java:22146) at com.android.internal.policy.PhoneWindow.saveHierarchyState(PhoneWindow.java:2237) at android.app.Activity.onSaveInstanceState(Activity.java:2318) at androidx.core.app.ComponentActivity.onSaveInstanceState(ComponentActivity.java:93) at androidx.activity.ComponentActivity.onSaveInstanceState(ComponentActivity.java:337) at com.slayer.ui.activity.BaseActivity.onSaveInstanceState(BaseActivity.java:131) at android.app.Activity.performSaveInstanceState(Activity.java:2242) at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1508) at android.app.ActivityThread.callActivityOnSaveInstanceState(ActivityThread.java:6366) at android.app.ActivityThread.callActivityOnStop(ActivityThread.java:5719) at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:5649) at android.app.ActivityThread.handleStopActivity(ActivityThread.java:5750) at android.app.servertransaction.StopActivityItem.execute(StopActivityItem.java:43) at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2438) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:226) at android.os.Looper.loop(Looper.java:313) at android.app.ActivityThread.main(ActivityThread.java:8669) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)

ashub7 avatar Aug 24 '22 08:08 ashub7

Has anyone been able to solve this issue? I'm getting the exact same as above and its completely random.

loymtshali avatar Dec 05 '22 06:12 loymtshali

Am also getting this crash, anyone with a solution yet

shepherdsiduli avatar Jan 03 '23 09:01 shepherdsiduli

This is generally a issue that pops up when trying to update the badge drawable on a non-UI thread. Make sure to call operations on the badge drawable from the Main thread to avoid this.

kapin-k avatar Feb 12 '23 16:02 kapin-k