From 784827b27cf4cd82bf074b571e63cb5e660c54af Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Queru Date: Tue, 4 Sep 2012 13:35:12 -0700 Subject: [PATCH] Revert "Watchdog: Improvement of debuggability" This reverts commit 9211b13c3268035b0da0c51ed2d6d5a578d45ff3. --- services/java/com/android/server/Watchdog.java | 60 +++----------------------- 1 file changed, 5 insertions(+), 55 deletions(-) diff --git a/services/java/com/android/server/Watchdog.java b/services/java/com/android/server/Watchdog.java index c14e2f634945..c2393823bf71 100644 --- a/services/java/com/android/server/Watchdog.java +++ b/services/java/com/android/server/Watchdog.java @@ -25,7 +25,6 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.os.Build; import android.os.Debug; import android.os.Handler; import android.os.Message; @@ -39,8 +38,6 @@ 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; @@ -431,10 +428,11 @@ public class Watchdog extends Thread { } // If we got here, that means that the system is most likely hung. + // First collect stack traces from all threads of the system process. + // Then kill this process so that the system will restart. final String name = (mCurrentMonitor != null) ? mCurrentMonitor.getClass().getName() : "null"; - Slog.w(TAG, "WATCHDOG PROBLEM IN SYSTEM SERVER: " + name); EventLog.writeEvent(EventLogTags.WATCHDOG, name); ArrayList pids = new ArrayList(); @@ -469,15 +467,11 @@ public class Watchdog extends Thread { dropboxThread.join(2000); // wait up to 2 seconds for it to return. } catch (InterruptedException ignored) {} - // Only kill/crash the process if the debugger is not attached. + // Only kill the process if the debugger is not attached. if (!Debug.isDebuggerConnected()) { Slog.w(TAG, "*** WATCHDOG KILLING SYSTEM PROCESS: " + name); - if (!Build.TYPE.equals("user")) { - forceCrashDump(); - } else { - Process.killProcess(Process.myPid()); - System.exit(10); - } + Process.killProcess(Process.myPid()); + System.exit(10); } else { Slog.w(TAG, "Debugger connected: Watchdog is *not* killing the system process"); } @@ -486,50 +480,6 @@ public class Watchdog extends Thread { } } - private void forceCrashDump() { - /* Sync file system to flash the data which is written just before the - * crash. - */ - java.lang.Process p = null; - try { - p = Runtime.getRuntime().exec("sync"); - if (p != null) { - // It is not necessary to check the exit code, here. - // 'sync' command always succeeds, and this function returns 0. - p.waitFor(); - } else { - Slog.e(TAG, "Failed to execute 'sync' command. (no process handle)"); - } - } catch (Exception e) { - // This code is an emergency path to crash MUT. The system already - // caused fatal error, and then calls this function to create a - // crash dump. This function must run the code below to force a - // crash, even if the sync command failed. - // Therefore, ignore all exceptions, here. - Slog.e(TAG, "Failed to execute 'sync' command prior to forcing crash: " + e); - } finally { - if (p != null) { - p.destroy(); - } - } - - FileWriter out = null; - try { - out = new FileWriter("/proc/sysrq-trigger"); - out.write("c"); - } catch (IOException e) { - Slog.e(TAG, "Failed to write to sysrq-trigger while triggering crash: " + e); - } finally { - if (out != null) { - try { - out.close(); - } catch (IOException e) { - Slog.e(TAG, "Failed to close sysrq-trigger while triggering crash: " + e); - } - } - } - } - private File dumpKernelStackTraces() { String tracesPath = SystemProperties.get("dalvik.vm.stack-trace-file", null); if (tracesPath == null || tracesPath.length() == 0) { -- 2.11.0