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
This commit is contained in:
@@ -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,10 +12588,15 @@ 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) {
|
||||
Process.setThreadScheduler(proc.vrThreadTid,
|
||||
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) {
|
||||
Process.setThreadScheduler(app.vrThreadTid,
|
||||
Process.SCHED_FIFO | Process.SCHED_RESET_ON_FORK, 1);
|
||||
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);
|
||||
Process.setThreadScheduler(app.pid,
|
||||
Process.SCHED_FIFO | Process.SCHED_RESET_ON_FORK, 1);
|
||||
if (app.renderThreadTid != 0) {
|
||||
Process.setThreadScheduler(app.renderThreadTid,
|
||||
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) {
|
||||
Process.setThreadPriority(app.renderThreadTid, -10);
|
||||
try {
|
||||
Process.setThreadPriority(app.renderThreadTid, -10);
|
||||
} catch (IllegalArgumentException e) {
|
||||
// thread died, ignore
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user