Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f059195e authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add more reasons to process kill trace events" into main

parents 783a77c2 43c495e7
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3468,7 +3468,7 @@ public class ActivityManagerService extends IActivityManager.Stub
                mProcessList.noteAppKill(app, ApplicationExitInfo.REASON_OTHER,
                        ApplicationExitInfo.SUBREASON_UNKNOWN, reason);
            }
            app.killProcessGroupIfNecessaryLocked(true);
            app.killProcessGroupIfNecessaryLocked(true, reason);
            synchronized (mProcLock) {
                app.setKilled(true);
            }
+3 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.server.am;

import static android.app.ActivityTaskManager.INVALID_TASK_ID;
import static android.app.ApplicationExitInfo.reasonCodeToString;
import static android.content.pm.ApplicationInfo.FLAG_SYSTEM;

import static com.android.server.am.ActivityManagerConstants.PROCESS_CRASH_COUNT_LIMIT;
@@ -772,7 +773,8 @@ class AppErrors {
                    } else {
                        // Huh.
                        Process.killProcess(pid);
                        ProcessList.killProcessGroup(uid, pid);
                        ProcessList.killProcessGroup(uid, pid,
                                reasonCodeToString(ApplicationExitInfo.REASON_CRASH));
                        mService.mProcessList.noteAppKill(pid, uid,
                                ApplicationExitInfo.REASON_CRASH,
                                ApplicationExitInfo.SUBREASON_UNKNOWN,
+1 −1
Original line number Diff line number Diff line
@@ -488,7 +488,7 @@ public final class PhantomProcessList {
                    if (r == proc) {
                        r.killLocked(msg, true);
                    } else {
                        r.killLocked("Caused by siling process: " + msg, false);
                        r.killLocked("Caused by sibling process: " + msg, false);
                    }
                }
            }
+5 −2
Original line number Diff line number Diff line
@@ -113,7 +113,10 @@ public final class PhantomProcessRecord {
    @GuardedBy("mLock")
    void killLocked(String reason, boolean noisy) {
        if (!mKilled) {
            Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "kill");
            if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) {
                Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER,
                        "killPhantom/" + mProcessName + "/" + reason);
            }
            if (noisy || mUid == mService.mCurOomAdjUid) {
                mService.reportUidInfoMessageLocked(TAG,
                        "Killing " + toString() + ": " + reason, mUid);
@@ -130,7 +133,7 @@ public final class PhantomProcessRecord {
                            mService.mConstants.mProcessKillTimeoutMs);
                }
                Process.killProcessQuiet(mPid);
                ProcessList.killProcessGroup(mUid, mPid);
                ProcessList.killProcessGroup(mUid, mPid, reason);
            }
            mKilled = true;
            Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
+16 −7
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static android.app.ActivityManager.PROCESS_STATE_NONEXISTENT;
import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_PROCESS_END;
import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_RESTRICTION_CHANGE;
import static android.app.ActivityThread.PROC_START_SEQ_IDENT;
import static android.app.ApplicationExitInfo.subreasonToString;
import static android.content.pm.Flags.appCompatOption16kb;
import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AUTO;
import static android.net.NetworkPolicyManager.isProcStateAllowedWhileIdleOrPowerSaveMode;
@@ -853,8 +854,14 @@ public final class ProcessList implements ProcessStateController.ProcessLruUpdat
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case KILL_PROCESS_GROUP_MSG:
                    Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "killProcessGroup");
                    Process.killProcessGroup(msg.arg1 /* uid */, msg.arg2 /* pid */);
                    final int uid = msg.arg1;
                    final int pid = msg.arg2;
                    final String reason = (String) msg.obj;
                    if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) {
                        Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER,
                                "killProcessGroup/" + uid + "/" + pid + "/" + reason);
                    }
                    Process.killProcessGroup(uid, pid);
                    Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
                    break;
                case LMKD_RECONNECT_MSG:
@@ -1723,11 +1730,12 @@ public final class ProcessList implements ProcessStateController.ProcessLruUpdat
        return sLmkdConnection.exchange(buf, repl);
    }

    static void killProcessGroup(int uid, int pid) {
    static void killProcessGroup(int uid, int pid, String reason) {
        /* static; one-time init here */
        if (sKillHandler != null) {
            sKillHandler.sendMessage(
                    sKillHandler.obtainMessage(KillHandler.KILL_PROCESS_GROUP_MSG, uid, pid));
                    sKillHandler.obtainMessage(KillHandler.KILL_PROCESS_GROUP_MSG, uid, pid,
                            reason));
        } else {
            Slog.w(TAG, "Asked to kill process group before system bringup!");
            Process.killProcessGroup(uid, pid);
@@ -2737,7 +2745,7 @@ public final class ProcessList implements ProcessStateController.ProcessLruUpdat
            // clean it up now.
            if (DEBUG_PROCESSES) Slog.v(TAG_PROCESSES, "App died: " + app);
            checkSlow(startTime, "startProcess: bad proc running, killing");
            ProcessList.killProcessGroup(app.uid, app.getPid());
            ProcessList.killProcessGroup(app.uid, app.getPid(), "old process attached");
            checkSlow(startTime, "startProcess: done killing old proc");

            if (!app.isKilled()) {
@@ -2969,7 +2977,8 @@ public final class ProcessList implements ProcessStateController.ProcessLruUpdat
                        Slog.wtfStack(TAG, "Removing process that hasn't been killed: " + app);
                        if (app.getPid() > 0) {
                            killProcessQuiet(app.getPid());
                            ProcessList.killProcessGroup(app.uid, app.getPid());
                            ProcessList.killProcessGroup(app.uid, app.getPid(),
                                    subreasonToString(ApplicationExitInfo.SUBREASON_REMOVE_LRU));
                            noteAppKill(app, ApplicationExitInfo.REASON_OTHER,
                                    ApplicationExitInfo.SUBREASON_REMOVE_LRU, "hasn't been killed");
                        } else {
@@ -5703,7 +5712,7 @@ public final class ProcessList implements ProcessStateController.ProcessLruUpdat
        if (DEBUG_PROCESSES) {
            Slog.i(TAG, "note: " + app + " is being killed, reason: "
                    + ApplicationExitInfo.reasonCodeToString(reason) + ", sub-reason: "
                    + ApplicationExitInfo.subreasonToString(subReason) + ", message: " + msg);
                    + subreasonToString(subReason) + ", message: " + msg);
        }
        if (app.getPid() > 0 && !app.isolated && app.getDeathRecipient() != null) {
            // We are killing it, put it into the dying process list.
Loading