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

Commit feb846c2 authored by Tim Murray's avatar Tim Murray
Browse files

Fix exception spam in ActivityManagerService.

If a thread that ActivityManagerService should be setting to FIFO dies,
it throws an exception. However, it is expected that threads may
die (due to LMK or app behavior), so we should suppress as much of this
as possible.

bug 30746129

Change-Id: Ief1ab8568fe8b27284ec442570b6a06677998ff1
parent a0a718f5
Loading
Loading
Loading
Loading
+32 −11
Original line number Diff line number Diff line
@@ -2337,7 +2337,7 @@ public final class ActivityManagerService extends ActivityManagerNative
                                                Process.SCHED_OTHER, 0);
                                        }
                                    } catch (IllegalArgumentException e) {
                                        Slog.e(TAG, "Failed to set scheduling policy, thread does"
                                        Slog.w(TAG, "Failed to set scheduling policy, thread does"
                                                + " not exist:\n" + e);
                                    }
                                }
@@ -12588,11 +12588,16 @@ public final class ActivityManagerService extends ActivityManagerNative
                    proc.vrThreadTid = tid;
                    // promote to FIFO now if the tid is non-zero
                    if (proc.curSchedGroup == ProcessList.SCHED_GROUP_TOP_APP
                            && proc.vrThreadTid > 0) {
                    try {
                        if (proc.curSchedGroup == ProcessList.SCHED_GROUP_TOP_APP &&
                            proc.vrThreadTid > 0) {
                            Process.setThreadScheduler(proc.vrThreadTid,
                                Process.SCHED_FIFO | Process.SCHED_RESET_ON_FORK, 1);
                        }
                    } catch (IllegalArgumentException e) {
                        Slog.e(TAG, "Failed to set scheduling policy, thread does"
                               + " not exist:\n" + e);
                    }
                }
            }
        }
@@ -20353,17 +20358,29 @@ public final class ActivityManagerService extends ActivityManagerNative
                        if (oldSchedGroup != ProcessList.SCHED_GROUP_TOP_APP) {
                            // Switch VR thread for app to SCHED_FIFO
                            if (mInVrMode && app.vrThreadTid != 0) {
                                try {
                                    Process.setThreadScheduler(app.vrThreadTid,
                                        Process.SCHED_FIFO | Process.SCHED_RESET_ON_FORK, 1);
                                } catch (IllegalArgumentException e) {
                                    // thread died, ignore
                                }
                            }
                            if (mUseFifoUiScheduling) {
                                // Switch UI pipeline for app to SCHED_FIFO
                                app.savedPriority = Process.getThreadPriority(app.pid);
                                try {
                                    Process.setThreadScheduler(app.pid,
                                        Process.SCHED_FIFO | Process.SCHED_RESET_ON_FORK, 1);
                                } catch (IllegalArgumentException e) {
                                    // thread died, ignore
                                }
                                if (app.renderThreadTid != 0) {
                                    try {
                                        Process.setThreadScheduler(app.renderThreadTid,
                                            Process.SCHED_FIFO | Process.SCHED_RESET_ON_FORK, 1);
                                    } catch (IllegalArgumentException e) {
                                        // thread died, ignore
                                    }
                                    if (DEBUG_OOM_ADJ) {
                                        Slog.d("UI_FIFO", "Set RenderThread (TID " +
                                            app.renderThreadTid + ") to FIFO");
@@ -20377,7 +20394,11 @@ public final class ActivityManagerService extends ActivityManagerNative
                                // Boost priority for top app UI and render threads
                                Process.setThreadPriority(app.pid, -10);
                                if (app.renderThreadTid != 0) {
                                    try {
                                        Process.setThreadPriority(app.renderThreadTid, -10);
                                    } catch (IllegalArgumentException e) {
                                        // thread died, ignore
                                    }
                                }
                            }
                        }