4

I have a 32-bit app that is crashing on an LG-H872. When I look at the logcat output, I see

I ActivityManager: Process my.app (pid 18816) has died: cch  CACC
W cr_ChildProcessConn: onServiceDisconnected (crash or killed by oom): pid=18816

What does cch CACC mean?

1 Answer 1

10

This log is posted when a process is killed due to out-of-memory (OOM). It is accompanied by 2 codes: the OOM adjustment level and the process state.

The relevant code from ActivityManagerService:

reportUidInfoMessageLocked(TAG,
  "Process " + app.processName + " (pid " + pid + ") has died: "
  + ProcessList.makeOomAdjString(setAdj, true) + " "
  + ProcessList.makeProcStateString(setProcState), app.info.uid);

The following is the list from the AOSP source code for the OOM adjustment level and the process state.

OOM adjustment level

Message Code Explanation
cch CACHED_APP_MIN_ADJ This is a process only hosting activities that are not visible, so it can be killed without any disruption.
svcb SERVICE_B_ADJ The B list of SERVICE_ADJ -- these are the old and decrepit services that aren't as shiny and interesting as the ones in the A list.
prev PREVIOUS_APP_ADJ This is the process of the previous application that the user was in. This process is kept above other things, because it is very common to switch back to the previous app. This is important both for recent task switch (toggling between the two top recent apps) as well as normal UI flow such as clicking on a URI in the e-mail app to view in the browser, and then pressing back to return to e-mail.
home HOME_APP_ADJ This is a process holding the home application -- we want to try avoiding killing it, even if it would normally be in the background, because the user interacts with it so much.
svc SERVICE_ADJ This is a process holding an application service -- killing it will not have much of an impact as far as the user is concerned.
hvy HEAVY_WEIGHT_APP_ADJ This is a process with a heavy-weight application. It is in the background, but we want to try to avoid killing it. Value set in system/rootdir/init.rc on startup.
bkup BACKUP_APP_ADJ This is a process currently hosting a backup operation. Killing it is not entirely fatal but is generally a bad idea.
prcl PERCEPTIBLE_LOW_APP_ADJ This is a process bound by the system (or other app) that's more important than services but not so perceptible that it affects the user immediately if killed.
prcm PERCEPTIBLE_MEDIUM_APP_ADJ This is a process hosting services that are not perceptible to the user but the client (system) binding to it requested to treat it as if it is perceptible and avoid killing it if possible.
prcp PERCEPTIBLE_APP_ADJ This is a process only hosting components that are perceptible to the user, and we really want to avoid killing them, but they are not immediately visible. An example is background music playback.
vis VISIBLE_APP_ADJ This is a process only hosting activities that are visible to the user, so we'd prefer they don't disappear.
fg FOREGROUND_APP_ADJ This is the process running the current foreground app. We'd really rather not kill it!
psvc PERSISTENT_SERVICE_ADJ This is a process that the system or a persistent process has bound to, and indicated it is important.
pers PERSISTENT_PROC_ADJ This is a system persistent process, such as telephony. Definitely don't want to kill it, but doing so is not completely fatal.
sys SYSTEM_ADJ The system process runs at the default adjustment.
ntv NATIVE_ADJ Special code for native processes that are not being managed by the system (so don't have an oom adj assigned by the system).
(integer number) (none) Value when it is below the lowest defined level (NATIVE_ADJ = -1000)

Process state

Message Code Explanation
PER PROCESS_STATE_PERSISTENT Process is a persistent system process.
PERU PROCESS_STATE_PERSISTENT_UI Process is a persistent system process and is doing UI.
TOP PROCESS_STATE_TOP Process is hosting the current top activities. Note that this covers all activities that are visible to the user.
BTOP PROCESS_STATE_BOUND_TOP Process is bound to a TOP app.
FGS PROCESS_STATE_FOREGROUND_SERVICE Process is hosting a foreground service.
BFGS PROCESS_STATE_BOUND_FOREGROUND_SERVICE Process is hosting a foreground service due to a system binding.
IMPF PROCESS_STATE_IMPORTANT_FOREGROUND Process is important to the user, and something they are aware of.
IMPB PROCESS_STATE_IMPORTANT_BACKGROUND Process is important to the user, but not something they are aware of.
TRNB PROCESS_STATE_TRANSIENT_BACKGROUND Process is in the background transient so we will try to keep running.
BKUP PROCESS_STATE_BACKUP Process is in the background running a backup/restore operation.
SVC PROCESS_STATE_SERVICE Process is in the background running a service. Unlike oom_adj, this level is used for both the normal running in background state and the executing operations state.
RCVR PROCESS_STATE_RECEIVER Process is in the background running a receiver. Note that from the perspective of oom_adj, receivers run at a higher foreground level, but for our prioritization here that is not necessary and putting them below services means many fewer changes in some process states as they receive broadcasts.
TPSL PROCESS_STATE_TOP_SLEEPING Same as PROCESS_STATE_TOP but while device is sleeping.
HVY PROCESS_STATE_HEAVY_WEIGHT Process is in the background, but it can't restore its state so we want to try to avoid killing it.
HOME PROCESS_STATE_HOME Process is in the background but hosts the home activity.
LAST PROCESS_STATE_LAST_ACTIVITY Process is in the background but hosts the last shown activity.
CAC PROCESS_STATE_CACHED_ACTIVITY Process is being cached for later use and contains activities.
CACC PROCESS_STATE_CACHED_ACTIVITY_CLIENT Process is being cached for later use and is a client of another cached process that contains activities.
CRE PROCESS_STATE_CACHED_RECENT Process is being cached for later use and has an activity that corresponds to an existing recent task.
CEM PROCESS_STATE_CACHED_EMPTY Process is being cached for later use and is empty.
NONE PROCESS_STATE_NONEXISTENT Process does not exist.
?? (none) Default value when the code is not in the list.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .