From b36ed85c4025ca26edf0e776d2603e7e61c618ca Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Thu, 29 Nov 2012 11:42:11 -0800 Subject: [PATCH 1/2] trigger kernel blocked stack trace on system server watchdog Bug b/7638530 may be caused by a kernel deadlock when killing processes under low memory conditions. Write to /proc/sysrq-trigger to get a kernel log of blocked tasks before killing the system server. Bug: 7638530 Change-Id: I60df324ad4affdadbf13650099dc4dfb38722420 --- services/java/com/android/server/Watchdog.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/services/java/com/android/server/Watchdog.java b/services/java/com/android/server/Watchdog.java index 8bbf923adaead..b2a8ad834dc45 100644 --- a/services/java/com/android/server/Watchdog.java +++ b/services/java/com/android/server/Watchdog.java @@ -39,6 +39,8 @@ import android.util.Log; import android.util.Slog; import java.io.File; +import java.io.FileWriter; +import java.io.IOException; import java.util.ArrayList; import java.util.Calendar; @@ -439,6 +441,16 @@ public class Watchdog extends Thread { dumpKernelStackTraces(); } + // Trigger the kernel to dump all blocked threads to the kernel log + try { + FileWriter sysrq_trigger = new FileWriter("/proc/sysrq-trigger"); + sysrq_trigger.write("w"); + sysrq_trigger.close(); + } catch (IOException e) { + Slog.e(TAG, "Failed to write to /proc/sysrq-trigger"); + Slog.e(TAG, e.getMessage()); + } + // Try to add the error to the dropbox, but assuming that the ActivityManager // itself may be deadlocked. (which has happened, causing this statement to // deadlock and the watchdog as a whole to be ineffective) From 77f35417310b967723877fc6915fc5e54189fe22 Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Fri, 30 Nov 2012 15:42:18 -0800 Subject: [PATCH 2/2] Add logging to try and track down bug 7643792 Fix whitespace & log message. Change-Id: I9d241365503a6a9b02d3155dbb06ddb82065b375 --- .../internal/policy/impl/keyguard/KeyguardViewManager.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java index 9bc0111ea9850..efd09e0d0ade6 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java @@ -24,6 +24,7 @@ import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.PixelFormat; +import android.graphics.Rect; import android.os.Bundle; import android.os.IBinder; import android.os.Parcelable; @@ -126,6 +127,12 @@ public class KeyguardViewManager { setFitsSystemWindows(true); } + @Override + protected boolean fitSystemWindows(Rect insets) { + Log.v("TAG", "bug 7643792: fitSystemWindows(" + insets.toShortString() + ")"); + return super.fitSystemWindows(insets); + } + @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig);