summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/Watchdog.java
diff options
context:
space:
mode:
authorJean-Baptiste Queru <jbq@google.com>2012-09-04 13:35:12 -0700
committerJean-Baptiste Queru <jbq@google.com>2012-09-04 13:35:12 -0700
commit784827b27cf4cd82bf074b571e63cb5e660c54af (patch)
tree95a415c62daa7a168023b5ee0eb81540aaa79a5d /services/java/com/android/server/Watchdog.java
parentb307ceb43fa96e8d54851c20278a4344469c9269 (diff)
downloadframeworks_base-784827b27cf4cd82bf074b571e63cb5e660c54af.zip
frameworks_base-784827b27cf4cd82bf074b571e63cb5e660c54af.tar.gz
frameworks_base-784827b27cf4cd82bf074b571e63cb5e660c54af.tar.bz2
Revert "Watchdog: Improvement of debuggability"
This reverts commit 9211b13c3268035b0da0c51ed2d6d5a578d45ff3.
Diffstat (limited to 'services/java/com/android/server/Watchdog.java')
-rw-r--r--services/java/com/android/server/Watchdog.java60
1 files changed, 5 insertions, 55 deletions
diff --git a/services/java/com/android/server/Watchdog.java b/services/java/com/android/server/Watchdog.java
index c14e2f6..c239382 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<Integer> pids = new ArrayList<Integer>();
@@ -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) {