Loading core/java/android/app/ActivityThread.java +2 −3 Original line number Diff line number Diff line Loading @@ -355,7 +355,7 @@ public final class ActivityThread extends ClientTransactionHandler private static final String DEFAULT_FULL_BACKUP_AGENT = "android.app.backup.FullBackupAgent"; private static final long BINDER_CALLBACK_THROTTLE_MS = 10_100L; private static final long BINDER_CALLBACK_THROTTLE = 10_100L; private long mBinderCallbackLast = -1; /** Loading Loading @@ -7551,13 +7551,12 @@ public final class ActivityThread extends ClientTransactionHandler @Override public void onTransactionError(int pid, int code, int flags, int err) { final long now = SystemClock.uptimeMillis(); if (now < mBinderCallbackLast + BINDER_CALLBACK_THROTTLE_MS) { if (now < mBinderCallbackLast + BINDER_CALLBACK_THROTTLE) { Slog.d(TAG, "Too many transaction errors, throttling freezer binder callback."); return; } mBinderCallbackLast = now; try { Log.wtfStack(TAG, "Binder Transaction Error"); mgr.frozenBinderTransactionDetected(pid, code, flags, err); } catch (RemoteException ex) { throw ex.rethrowFromSystemServer(); Loading core/jni/android_util_Binder.cpp +2 −4 Original line number Diff line number Diff line Loading @@ -1411,10 +1411,8 @@ static jboolean android_os_BinderProxy_transact(JNIEnv* env, jobject obj, return JNI_TRUE; } if (err == FAILED_TRANSACTION) { env->CallStaticVoidMethod(gBinderOffsets.mClass, gBinderOffsets.mTransactionCallback, getpid(), code, flags, err); } env->CallStaticVoidMethod(gBinderOffsets.mClass, gBinderOffsets.mTransactionCallback, getpid(), code, flags, err); if (err == UNKNOWN_TRANSACTION) { return JNI_FALSE; Loading services/core/java/com/android/server/am/CachedAppOptimizer.java +3 −3 Original line number Diff line number Diff line Loading @@ -83,8 +83,6 @@ import com.android.internal.os.ProcLocksReader; import com.android.internal.util.FrameworkStatsLog; import com.android.server.ServiceThread; import dalvik.annotation.optimization.NeverCompile; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; Loading @@ -100,6 +98,8 @@ import java.util.Map; import java.util.Random; import java.util.Set; import dalvik.annotation.optimization.NeverCompile; public final class CachedAppOptimizer { // Flags stored in the DeviceConfig API. Loading Loading @@ -2633,7 +2633,7 @@ public final class CachedAppOptimizer { public void binderError(int debugPid, ProcessRecord app, int code, int flags, int err) { Slog.w(TAG_AM, "pid " + debugPid + " " + (app == null ? "null" : app.processName) + " sent binder code " + code + " with flags " + flags + " and got error " + err); + " to frozen apps and got error " + err); // Do nothing if the binder error callback is not enabled. // That means the frozen apps in a wrong state will be killed when they are unfrozen later. Loading services/java/com/android/server/SystemServer.java +0 −11 Original line number Diff line number Diff line Loading @@ -761,9 +761,6 @@ public final class SystemServer implements Dumpable { } } private static final long BINDER_CALLBACK_THROTTLE_MS = 10_100L; private long mBinderCallbackLast = -1; private void run() { TimingsTraceAndSlog t = new TimingsTraceAndSlog(); try { Loading Loading @@ -968,14 +965,6 @@ public final class SystemServer implements Dumpable { Binder.setTransactionCallback(new IBinderCallback() { @Override public void onTransactionError(int pid, int code, int flags, int err) { final long now = SystemClock.uptimeMillis(); if (now < mBinderCallbackLast + BINDER_CALLBACK_THROTTLE_MS) { Slog.d(TAG, "Too many transaction errors, throttling freezer binder callback."); return; } mBinderCallbackLast = now; Slog.wtfStack(TAG, "Binder Transaction Error"); mActivityManagerService.frozenBinderTransactionDetected(pid, code, flags, err); } }); Loading Loading
core/java/android/app/ActivityThread.java +2 −3 Original line number Diff line number Diff line Loading @@ -355,7 +355,7 @@ public final class ActivityThread extends ClientTransactionHandler private static final String DEFAULT_FULL_BACKUP_AGENT = "android.app.backup.FullBackupAgent"; private static final long BINDER_CALLBACK_THROTTLE_MS = 10_100L; private static final long BINDER_CALLBACK_THROTTLE = 10_100L; private long mBinderCallbackLast = -1; /** Loading Loading @@ -7551,13 +7551,12 @@ public final class ActivityThread extends ClientTransactionHandler @Override public void onTransactionError(int pid, int code, int flags, int err) { final long now = SystemClock.uptimeMillis(); if (now < mBinderCallbackLast + BINDER_CALLBACK_THROTTLE_MS) { if (now < mBinderCallbackLast + BINDER_CALLBACK_THROTTLE) { Slog.d(TAG, "Too many transaction errors, throttling freezer binder callback."); return; } mBinderCallbackLast = now; try { Log.wtfStack(TAG, "Binder Transaction Error"); mgr.frozenBinderTransactionDetected(pid, code, flags, err); } catch (RemoteException ex) { throw ex.rethrowFromSystemServer(); Loading
core/jni/android_util_Binder.cpp +2 −4 Original line number Diff line number Diff line Loading @@ -1411,10 +1411,8 @@ static jboolean android_os_BinderProxy_transact(JNIEnv* env, jobject obj, return JNI_TRUE; } if (err == FAILED_TRANSACTION) { env->CallStaticVoidMethod(gBinderOffsets.mClass, gBinderOffsets.mTransactionCallback, getpid(), code, flags, err); } env->CallStaticVoidMethod(gBinderOffsets.mClass, gBinderOffsets.mTransactionCallback, getpid(), code, flags, err); if (err == UNKNOWN_TRANSACTION) { return JNI_FALSE; Loading
services/core/java/com/android/server/am/CachedAppOptimizer.java +3 −3 Original line number Diff line number Diff line Loading @@ -83,8 +83,6 @@ import com.android.internal.os.ProcLocksReader; import com.android.internal.util.FrameworkStatsLog; import com.android.server.ServiceThread; import dalvik.annotation.optimization.NeverCompile; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; Loading @@ -100,6 +98,8 @@ import java.util.Map; import java.util.Random; import java.util.Set; import dalvik.annotation.optimization.NeverCompile; public final class CachedAppOptimizer { // Flags stored in the DeviceConfig API. Loading Loading @@ -2633,7 +2633,7 @@ public final class CachedAppOptimizer { public void binderError(int debugPid, ProcessRecord app, int code, int flags, int err) { Slog.w(TAG_AM, "pid " + debugPid + " " + (app == null ? "null" : app.processName) + " sent binder code " + code + " with flags " + flags + " and got error " + err); + " to frozen apps and got error " + err); // Do nothing if the binder error callback is not enabled. // That means the frozen apps in a wrong state will be killed when they are unfrozen later. Loading
services/java/com/android/server/SystemServer.java +0 −11 Original line number Diff line number Diff line Loading @@ -761,9 +761,6 @@ public final class SystemServer implements Dumpable { } } private static final long BINDER_CALLBACK_THROTTLE_MS = 10_100L; private long mBinderCallbackLast = -1; private void run() { TimingsTraceAndSlog t = new TimingsTraceAndSlog(); try { Loading Loading @@ -968,14 +965,6 @@ public final class SystemServer implements Dumpable { Binder.setTransactionCallback(new IBinderCallback() { @Override public void onTransactionError(int pid, int code, int flags, int err) { final long now = SystemClock.uptimeMillis(); if (now < mBinderCallbackLast + BINDER_CALLBACK_THROTTLE_MS) { Slog.d(TAG, "Too many transaction errors, throttling freezer binder callback."); return; } mBinderCallbackLast = now; Slog.wtfStack(TAG, "Binder Transaction Error"); mActivityManagerService.frozenBinderTransactionDetected(pid, code, flags, err); } }); Loading