From 1f8455d42f4d57970c1be9cbaa161c35f99ad89d Mon Sep 17 00:00:00 2001 From: Brett Chabot Date: Fri, 13 Mar 2020 15:17:08 -0700 Subject: [PATCH] Fix race condition in OomAdjuster. OomAdjuster accesses the not-thread-safe HandlerThread.getThreadId from outside the thread. Modify so it posts a message to thread instead. See bug 22476742 Bug: 151407445 Test: See repro instructions in bug Change-Id: Iae03d46896561f0442af6595a8d0bdf617ccd61e --- services/core/java/com/android/server/am/OomAdjuster.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java index b584ea5b7a25c..b4233d2b148a2 100644 --- a/services/core/java/com/android/server/am/OomAdjuster.java +++ b/services/core/java/com/android/server/am/OomAdjuster.java @@ -227,7 +227,8 @@ public final class OomAdjuster { final ServiceThread adjusterThread = new ServiceThread(TAG, TOP_APP_PRIORITY_BOOST, false /* allowIo */); adjusterThread.start(); - Process.setThreadGroupAndCpuset(adjusterThread.getThreadId(), THREAD_GROUP_TOP_APP); + adjusterThread.getThreadHandler().post(() -> Process.setThreadGroupAndCpuset( + adjusterThread.getThreadId(), THREAD_GROUP_TOP_APP)); return adjusterThread; }