Status Update
Comments
hb...@gmail.com <hb...@gmail.com> #2
First of all, sorry for my poor english.
I really agree.
My app crashes only in cetain phone even if the build number is same!
09-23 11:05:53.718: E 754 Parcel Class not found when unmarshalling: com.samilcts.mpaio.data.Receipt
09-23 11:05:53.718: E 754 Parcel java.lang.ClassNotFoundException: com.samilcts.mpaio.data.Receipt
09-23 11:05:53.718: E 754 Parcel at java.lang.Class.classForName(Native Method)
09-23 11:05:53.718: E 754 Parcel at java.lang.Class.forName(Class.java:251)
09-23 11:05:53.718: E 754 Parcel at java.lang.Class.forName(Class.java:216)
09-23 11:05:53.718: E 754 Parcel at android.os.Parcel.readParcelableCreator(Parcel.java:2133)
09-23 11:05:53.718: E 754 Parcel at android.os.Parcel.readParcelable(Parcel.java:2097)
09-23 11:05:53.718: E 754 Parcel at android.os.Parcel.readValue(Parcel.java:2013)
09-23 11:05:53.718: E 754 Parcel at android.os.Parcel.readArrayMapInternal(Parcel.java:2314)
09-23 11:05:53.718: E 754 Parcel at android.os.Bundle.unparcel(Bundle.java:249)
09-23 11:05:53.718: E 754 Parcel at android.os.Bundle.getString(Bundle.java:1118)
09-23 11:05:53.718: E 754 Parcel at android.content.Intent.getStringExtra(Intent.java:4991)
09-23 11:05:53.718: E 754 Parcel at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1394)
09-23 11:05:53.718: E 754 Parcel at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1026)
09-23 11:05:53.718: E 754 Parcel at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:3984)
09-23 11:05:53.718: E 754 Parcel at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:3887)
09-23 11:05:53.718: E 754 Parcel at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:159)
09-23 11:05:53.718: E 754 Parcel at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2576)
09-23 11:05:53.718: E 754 Parcel at android.os.Binder.execTransact(Binder.java:404)
09-23 11:05:53.718: E 754 Parcel at dalvik.system.NativeStart.run(Native Method)
09-23 11:05:53.718: E 754 Parcel Caused by: java.lang.NoClassDefFoundError: com/samilcts/mpaio/data/Receipt
09-23 11:05:53.718: E 754 Parcel ... 18 more
09-23 11:05:53.718: E 754 Parcel Caused by: java.lang.ClassNotFoundException: Didn't find class "com.samilcts.mpaio.data.Receipt" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
09-23 11:05:53.718: E 754 Parcel at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67)
09-23 11:05:53.718: E 754 Parcel at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
09-23 11:05:53.718: E 754 Parcel at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
09-23 11:05:53.718: E 754 Parcel ... 18 more
I really agree.
My app crashes only in cetain phone even if the build number is same!
09-23 11:05:53.718: E 754 Parcel Class not found when unmarshalling: com.samilcts.mpaio.data.Receipt
09-23 11:05:53.718: E 754 Parcel java.lang.ClassNotFoundException: com.samilcts.mpaio.data.Receipt
09-23 11:05:53.718: E 754 Parcel at java.lang.Class.classForName(Native Method)
09-23 11:05:53.718: E 754 Parcel at java.lang.Class.forName(Class.java:251)
09-23 11:05:53.718: E 754 Parcel at java.lang.Class.forName(Class.java:216)
09-23 11:05:53.718: E 754 Parcel at android.os.Parcel.readParcelableCreator(Parcel.java:2133)
09-23 11:05:53.718: E 754 Parcel at android.os.Parcel.readParcelable(Parcel.java:2097)
09-23 11:05:53.718: E 754 Parcel at android.os.Parcel.readValue(Parcel.java:2013)
09-23 11:05:53.718: E 754 Parcel at android.os.Parcel.readArrayMapInternal(Parcel.java:2314)
09-23 11:05:53.718: E 754 Parcel at android.os.Bundle.unparcel(Bundle.java:249)
09-23 11:05:53.718: E 754 Parcel at android.os.Bundle.getString(Bundle.java:1118)
09-23 11:05:53.718: E 754 Parcel at android.content.Intent.getStringExtra(Intent.java:4991)
09-23 11:05:53.718: E 754 Parcel at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1394)
09-23 11:05:53.718: E 754 Parcel at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1026)
09-23 11:05:53.718: E 754 Parcel at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:3984)
09-23 11:05:53.718: E 754 Parcel at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:3887)
09-23 11:05:53.718: E 754 Parcel at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:159)
09-23 11:05:53.718: E 754 Parcel at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2576)
09-23 11:05:53.718: E 754 Parcel at android.os.Binder.execTransact(Binder.java:404)
09-23 11:05:53.718: E 754 Parcel at dalvik.system.NativeStart.run(Native Method)
09-23 11:05:53.718: E 754 Parcel Caused by: java.lang.NoClassDefFoundError: com/samilcts/mpaio/data/Receipt
09-23 11:05:53.718: E 754 Parcel ... 18 more
09-23 11:05:53.718: E 754 Parcel Caused by: java.lang.ClassNotFoundException: Didn't find class "com.samilcts.mpaio.data.Receipt" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
09-23 11:05:53.718: E 754 Parcel at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67)
09-23 11:05:53.718: E 754 Parcel at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
09-23 11:05:53.718: E 754 Parcel at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
09-23 11:05:53.718: E 754 Parcel ... 18 more
al...@gmail.com <al...@gmail.com> #3
I also see the same few reports (usually after an update) and users sometimes complain with bad reviews about it too.
java.lang.RuntimeException: Unable to instantiate applicationcom.mindmeapp.alarmpad.App : java.lang.ClassNotFoundException: Didn't find class "com.mindmeapp.alarmpad.App " on path: DexPathList[[],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:507)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4301)
at android.app.ActivityThread.access$1500(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.mindmeapp.alarmpad.App " on path: DexPathList[[],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at android.app.Instrumentation.newApplication(Instrumentation.java:975)
at android.app.LoadedApk.makeApplication(LoadedApk.java:502)
... 11 more
java.lang.RuntimeException: Unable to instantiate application
at android.app.LoadedApk.makeApplication(LoadedApk.java:507)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4301)
at android.app.ActivityThread.access$1500(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at android.app.Instrumentation.newApplication(Instrumentation.java:975)
at android.app.LoadedApk.makeApplication(LoadedApk.java:502)
... 11 more
Description
I've tracked through this fairly thoroughly I hope. It seems the bug is in the broadcast code. If not for that, the service will not be killed.
Swiping an app from the task list calls am.removeTask on the app with the REMOVE_TASK_KILL_PROCESS flag.
in handleSwipe()
// Currently, either direction means the same thing, so ignore direction and remove
// the task.
final ActivityManager am = (ActivityManager)
mContext.getSystemService(Context.ACTIVITY_SERVICE);
if (am != null) {
am.removeTask(ad.persistentTaskId, ActivityManager.REMOVE_TASK_KILL_PROCESS);
If the task is a foreground service, it ends up getting waitingToKill set with 'remove task'
in cleanUpRemovedTaskLocked() called by removeTask() with the REMOVE_TASK_KILL_PROCESS flag
private void cleanUpRemovedTaskLocked(TaskRecord tr, int flags) {
final boolean killProcesses = (flags&ActivityManager.REMOVE_TASK_KILL_PROCESS) != 0;
[...]
if (killProcesses) {
[...]
// Kill the running processes.
for (int i=0; i<procs.size(); i++) {
ProcessRecord pr = procs.get(i);
if (pr.setSchedGroup == Process.THREAD_GROUP_BG_NONINTERACTIVE) {
Slog.i(TAG, "Killing " + pr.toShortString() + ": remove task");
EventLog.writeEvent(EventLogTags.AM_KILL, pr.userId, pr.pid,
pr.processName, pr.setAdj, "remove task");
pr.killedBackground = true;
Process.killProcessQuiet(pr.pid);
} else {
pr.waitingToKill = "remove task";
}
}
When receiving a broadcast, the app state is changed to 'broadcast' instead of 'fg-service' by computeOomAdjLocked()
setIsForeground=false foregroundServices=true forcingToForeground=null
Proc #20: prcp F/S/IF trm: 0 6413:com.countercultured.irc/u0a136 (fg-service)
changes to:
setIsForeground=false foregroundServices=true forcingToForeground=null
Proc #20: fore B/S/S trm: 0 6413:com.countercultured.irc/u0a136 (broadcast)
Then is promptly killed since it is no longer a foreground service.
First character F: Process.THREAD_GROUP_DEFAULT
First character B: Process.THREAD_GROUP_BG_NONINTERACTIVE
Second character S: r.foregroundServices == true
Third character IF: ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND
Third character S: ActivityManager.PROCESS_STATE_SERVICE
private final int computeOomAdjLocked(ProcessRecord app, int cachedAdj, ProcessRecord TOP_APP,
boolean doingAll, long now) {
[...]
} else if ((queue = isReceivingBroadcast(app)) != null) {
// An app that is currently receiving a broadcast also
// counts as being in the foreground for OOM killer purposes.
// It's placed in a sched group based on the nature of the
// broadcast as reflected by which queue it's active in.
adj = ProcessList.FOREGROUND_APP_ADJ;
schedGroup = (queue == mFgBroadcastQueue)
? Process.THREAD_GROUP_DEFAULT : Process.THREAD_GROUP_BG_NONINTERACTIVE;
app.adjType = "broadcast";
procState = ActivityManager.PROCESS_STATE_RECEIVER;
Full dumpsys from before alarm and during
BEFORE:
ACTIVITY MANAGER RUNNING PROCESSES (dumpsys activity processes)
All known processes:
*APP* UID 10136 ProcessRecord{65c7df88 1244:com.countercultured.irc/u0a136}
user #0 uid=10136
dir=/data/app/com.countercultured.irc-2.apk publicDir=/data/app/com.countercultured.irc-2.apk data=/data/data/com.countercultured.irc
packageList={com.countercultured.irc}
compat={480dpi}
thread=android.app.ApplicationThreadProxy@65ceee30
pid=1244 starting=false
lastActivityTime=-7s800ms lastPssTime=-17s326ms nextPssTime=+12s203ms
adjSeq=133653 lruSeq=0 lastPss=0 lastCachedPss=0
keeping=true cached=false empty=true
oom: max=16 curRaw=2 setRaw=2 cur=2 set=2
curSchedGroup=-1 setSchedGroup=-1 systemNoUi=false trimMemoryLevel=0
curProcState=3 repProcState=3 pssProcState=-1 setProcState=3 lastStateTime=-7s797ms
hasShownUi=true pendingUiClean=false hasAboveClient=false
setIsForeground=false foregroundServices=true forcingToForeground=null
hasStartedServices=true
lastRequestedGc=-17s253ms lastLowMemory=-17s253ms reportLowMemory=false
killedByAm=false waitingToKill=remove task
Services:
- ServiceRecord{663ab1d8 u0 com.countercultured.irc/.AlarmService}
- ServiceRecord{664a8130 u0 com.countercultured.irc/.ServerService}
Connections:
- ConnectionRecord{662d0d58 u0 CR com.countercultured.irc/.AlarmService:@65e53448}
Connected Providers:
- 6590e6c8/com.android.providers.settings/.SettingsProvider->1244:com.countercultured.irc/u0a136 s1/1 u0/0 +16s148ms
Receivers:
- ReceiverList{6601ba00 1244 com.countercultured.irc/10136/u0 remote:65d16a78}
- ReceiverList{662a2450 1244 com.countercultured.irc/10136/u0 remote:65e29e70}
Process LRU list (sorted by oom_adj, 33 total, non-act at 5, non-svc at 5):
Proc # 8: prcp F/S/IF trm: 0 1244:com.countercultured.irc/u0a136 (fg-service)
PID mappings:
PID #1244: ProcessRecord{65c7df88 1244:com.countercultured.irc/u0a136}
mPreviousProcessVisibleTime: +1d2h23m6s383ms
mConfigWillChange: false
DURING:
ACTIVITY MANAGER RUNNING PROCESSES (dumpsys activity processes)
All known processes:
*APP* UID 10136 ProcessRecord{65c7df88 1244:com.countercultured.irc/u0a136}
user #0 uid=10136
dir=/data/app/com.countercultured.irc-2.apk publicDir=/data/app/com.countercultured.irc-2.apk data=/data/data/com.countercultured.irc
packageList={com.countercultured.irc}
compat={480dpi}
thread=android.app.ApplicationThreadProxy@65ceee30
pid=1244 starting=false
lastActivityTime=-7s830ms lastPssTime=-17s356ms nextPssTime=+19s994ms
adjSeq=133655 lruSeq=0 lastPss=0 lastCachedPss=0
keeping=true cached=false empty=false
oom: max=16 curRaw=0 setRaw=0 cur=0 set=0
curSchedGroup=0 setSchedGroup=0 systemNoUi=false trimMemoryLevel=0
curProcState=7 repProcState=7 pssProcState=-1 setProcState=7 lastStateTime=-6ms
hasShownUi=true pendingUiClean=false hasAboveClient=false
setIsForeground=false foregroundServices=true forcingToForeground=null
hasStartedServices=true
lastRequestedGc=-17s283ms lastLowMemory=-17s283ms reportLowMemory=false
killedByAm=true waitingToKill=remove task
Services:
- ServiceRecord{663ab1d8 u0 com.countercultured.irc/.AlarmService}
- ServiceRecord{664a8130 u0 com.countercultured.irc/.ServerService}
Connections:
- ConnectionRecord{662d0d58 u0 CR com.countercultured.irc/.AlarmService:@65e53448}
Connected Providers:
- 6590e6c8/com.android.providers.settings/.SettingsProvider->1244:com.countercultured.irc/u0a136 s1/1 u0/0 +16s179ms
curReceiver=BroadcastRecord{65f930f0 u-1 com.countercultured.irc.ALARM_ACTION}
Receivers:
- ReceiverList{6601ba00 1244 com.countercultured.irc/10136/u0 remote:65d16a78}
- ReceiverList{662a2450 1244 com.countercultured.irc/10136/u0 remote:65e29e70}
Process LRU list (sorted by oom_adj, 33 total, non-act at 5, non-svc at 5):
Proc # 8: fore B/S/S trm: 0 1244:com.countercultured.irc/u0a136 (broadcast)
PID mappings:
PID #1244: ProcessRecord{65c7df88 1244:com.countercultured.irc/u0a136}
mPreviousProcessVisibleTime: +1d2h23m6s383ms
mConfigWillChange: false