From ce1bdbe56d26746d1e41e371ea1fde5e5d6ce8a7 Mon Sep 17 00:00:00 2001 From: Edgar Arriaga Date: Tue, 29 Mar 2022 19:53:06 -0700 Subject: [PATCH] Add volatile to some cancel compaction signals to avoid compiler optimizations The compaction cancel signals are delivered between different threads so add volatile keyword for such variables to make sure the compiler does not try to optimize the values avoiding them to be effective due to potential register caching. Bug: 227060330 Test: Manual Change-Id: I42503e02627c6f76382a58da9320b3f5df15a75d --- .../core/java/com/android/server/am/CachedAppOptimizer.java | 2 +- services/core/jni/com_android_server_am_CachedAppOptimizer.cpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/am/CachedAppOptimizer.java b/services/core/java/com/android/server/am/CachedAppOptimizer.java index 2b16b1589288b..a172018ab2910 100644 --- a/services/core/java/com/android/server/am/CachedAppOptimizer.java +++ b/services/core/java/com/android/server/am/CachedAppOptimizer.java @@ -1737,7 +1737,7 @@ public final class CachedAppOptimizer { * Default implementation for ProcessDependencies, public vor visibility to OomAdjuster class. */ private static final class DefaultProcessDependencies implements ProcessDependencies { - public static int mPidCompacting = -1; + public static volatile int mPidCompacting = -1; // Get memory RSS from process. @Override diff --git a/services/core/jni/com_android_server_am_CachedAppOptimizer.cpp b/services/core/jni/com_android_server_am_CachedAppOptimizer.cpp index 1ff5002568a36..93152f2ea1b7e 100644 --- a/services/core/jni/com_android_server_am_CachedAppOptimizer.cpp +++ b/services/core/jni/com_android_server_am_CachedAppOptimizer.cpp @@ -79,6 +79,8 @@ using android::base::unique_fd; namespace android { +// Signal happening in separate thread that would bail out compaction +// before starting next VMA batch static std::atomic cancelRunningCompaction; // Legacy method for compacting processes, any new code should