summaryrefslogtreecommitdiffstats
path: root/debuggerd
diff options
context:
space:
mode:
authorMark Salyzyn <salyzyn@google.com>2014-07-25 12:25:48 -0700
committerMark Salyzyn <salyzyn@google.com>2014-07-28 15:16:05 -0700
commit45ae446cab9cfc9b6100d91b1a37c6ad82e0cb99 (patch)
tree57fe3e94b0eaf13598daa1ad7d873c65b322e52b /debuggerd
parentbce3c0c7bd55e26a5ad4da5257a9621756e15f10 (diff)
downloadsystem_core-45ae446cab9cfc9b6100d91b1a37c6ad82e0cb99.zip
system_core-45ae446cab9cfc9b6100d91b1a37c6ad82e0cb99.tar.gz
system_core-45ae446cab9cfc9b6100d91b1a37c6ad82e0cb99.tar.bz2
debuggerd: tombstone: suppress logger request for logd process
Change-Id: I619880342ee6febd1a6cc98d2a4f536120efc1c8
Diffstat (limited to 'debuggerd')
-rwxr-xr-xdebuggerd/tombstone.cpp10
-rw-r--r--debuggerd/utility.h4
2 files changed, 13 insertions, 1 deletions
diff --git a/debuggerd/tombstone.cpp b/debuggerd/tombstone.cpp
index f41166b..2b9d093 100755
--- a/debuggerd/tombstone.cpp
+++ b/debuggerd/tombstone.cpp
@@ -210,6 +210,12 @@ static void dump_thread_info(log_t* log, pid_t pid, pid_t tid) {
}
}
}
+ // Blacklist logd, logd.reader, logd.writer, logd.auditd, logd.control ...
+ static const char logd[] = "logd";
+ if (!strncmp(threadname, logd, sizeof(logd) - 1)
+ && (!threadname[sizeof(logd) - 1] || (threadname[sizeof(logd) - 1] == '.'))) {
+ log->should_retrieve_logcat = false;
+ }
char procnamebuf[1024];
char* procname = NULL;
@@ -450,6 +456,10 @@ static void dump_log_file(
bool first = true;
struct logger_list* logger_list;
+ if (!log->should_retrieve_logcat) {
+ return;
+ }
+
logger_list = android_logger_list_open(
android_name_to_log_id(filename), O_RDONLY | O_NONBLOCK, tail, pid);
diff --git a/debuggerd/utility.h b/debuggerd/utility.h
index 31684ce..82413b8 100644
--- a/debuggerd/utility.h
+++ b/debuggerd/utility.h
@@ -46,9 +46,11 @@ struct log_t{
pid_t crashed_tid;
// The tid of the thread we are currently working with.
pid_t current_tid;
+ // logd daemon crash, can block asking for logcat data, allow suppression.
+ bool should_retrieve_logcat;
log_t()
- : tfd(-1), amfd(-1), crashed_tid(-1), current_tid(-1) {}
+ : tfd(-1), amfd(-1), crashed_tid(-1), current_tid(-1), should_retrieve_logcat(true) {}
};
// List of types of logs to simplify the logging decision in _LOG