material icon indicating copy to clipboard operation
material copied to clipboard

android.os.BadParcelableException: ClassNotFoundException when unmarshalling -- Many crashes reported with this stack trace

Open inteist opened this issue 9 years ago • 3 comments

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{info.androidz.horoscope/info.androidz.horoscope.Horoscope}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: 
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2429)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493)
       at android.app.ActivityThread.access$800(ActivityThread.java:166)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:136)
       at android.app.ActivityThread.main(ActivityThread.java:5584)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
       at dalvik.system.NativeStart.main(NativeStart.java)
Caused by android.os.BadParcelableException: ClassNotFoundException when unmarshalling: 
       at android.os.Parcel.readParcelableCreator(Parcel.java:2154)
       at android.os.Parcel.readParcelable(Parcel.java:2104)
       at com.rey.material.app.Dialog$Builder.(Dialog.java:1534)
       at com.rey.material.app.DatePickerDialog$Builder.(DatePickerDialog.java:827)
       at com.rey.material.app.DatePickerDialog$Builder$1.createFromParcel(DatePickerDialog.java:858)
       at com.rey.material.app.DatePickerDialog$Builder$1.createFromParcel(DatePickerDialog.java:856)
       at android.os.Parcel.readParcelable(Parcel.java:2111)
       at android.os.Parcel.readValue(Parcel.java:2020)
       at android.os.Parcel.readArrayMapInternal(Parcel.java:2321)
       at android.os.Bundle.unparcel(Bundle.java:249)
       at android.os.Bundle.getSparseParcelableArray(Bundle.java:1273)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:997)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1234)
       at android.support.v4.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:2041)
       at android.support.v4.app.FragmentController.dispatchCreate(FragmentController.java:163)
       at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:332)
       at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:84)


      my app's activity deriving from the  AppCompatActivity onCreate method here

inteist avatar Mar 24 '16 16:03 inteist

We encountered the same thing as well for Samsung SM-G9600

Caused by android.os.BadParcelableException: ClassNotFoundException when unmarshalling: 
       at android.os.Parcel.readParcelableCreator(Parcel.java:2871)
       at android.os.Parcel.readParcelable(Parcel.java:2797)
       at com.rey.material.app.Dialog$Builder.(Dialog.java:1539)
       at com.rey.material.app.DatePickerDialog$Builder.(DatePickerDialog.java:827)
       at com.rey.material.app.DatePickerDialog$Builder$1.createFromParcel(DatePickerDialog.java:858)
       at com.rey.material.app.DatePickerDialog$Builder$1.createFromParcel(DatePickerDialog.java:856)
       at android.os.Parcel.readParcelable(Parcel.java:2806)
       at android.os.Parcel.readValue(Parcel.java:2700)
       at android.os.Parcel.readArrayMapInternal(Parcel.java:3067)
       at android.os.BaseBundle.unparcel(BaseBundle.java:257)
       at android.os.Bundle.getSparseParcelableArray(Bundle.java:958)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1325)
       at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
       at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3217)
       at android.support.v4.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:3166)
       at android.support.v4.app.FragmentController.dispatchCreate(FragmentController.java:181)
       at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:319)
       at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:84)
       at com.driivz.mobile.android.core.inject.InjectedActivity.onCreate(InjectedActivity.java:45)
       at com.driivz.mobile.android.core.activity.ApiAwareActionBarActivity.onCreate(ApiAwareActionBarActivity.java:64)
       at com.driivz.mobile.android.driver.activity.BillingTransactionPageActivity.onCreate(BillingTransactionPageActivity.java:135)
       at android.app.Activity.performCreate(Activity.java:7183)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
       at android.app.ActivityThread.-wrap11(Unknown Source)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
       at android.os.Handler.dispatchMessage(Handler.java:105)
       at android.os.Looper.loop(Looper.java:164)
       at android.app.ActivityThread.main(ActivityThread.java:6938)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

Seems like the solution here is to use the Application class loader, and not let Android take the default by assigning getClass().getClassLoader() instead of passing null to write, or adding to extra ClassLoader on Bundle.

liraz avatar Feb 11 '19 01:02 liraz

@liraz, thanks for sharing. I am not sure I understand what you are referring though. Can you be more specific about the solution you mention? A code sample or a broader, more detailed explanation would be much appreciated.

inteist avatar Feb 11 '19 15:02 inteist

hey @inteist

The class that the system is looking for is "CharSequence" and this class should be available without setting the ClassLoader in Bundle. But in this specific situation Bundle uses a ClassLoader that is unable to load "CharSequence"

This is extremely rare - and introducing a fix here might create more issues. i suggest to wait on this one. for now we reported this crash as system level crash - and we will follow it's behavior.

liraz avatar Feb 11 '19 15:02 liraz