diff options
author | primiano@chromium.org <primiano@chromium.org> | 2015-08-17 10:32:26 +0000 |
---|---|---|
committer | primiano@chromium.org <primiano@chromium.org> | 2015-08-17 10:32:26 +0000 |
commit | 6ea9219d8049606b8ab961444451b8172e8ef648 (patch) | |
tree | 62d50d4a5d015f48fd6bdd5ee5850ddf6b07f177 /src/client/linux/microdump_writer | |
parent | [microdump] Fix hw architecture indication in build fingerprint line (diff) | |
download | breakpad-6ea9219d8049606b8ab961444451b8172e8ef648.tar.xz |
[microdump] Move microdump writes to the crash ring-buffer log
So far the microdump_writer dumped the log in logcat using the default
system log. This is simple to achieve but has some drawbacks:
1. Creates spam in the system log, pushing back other eventual useful
messages.
2. There is a high chance that the microdump gets lost if some log
spam storm happens immediately after a crash and before the log
is collected by the feedback client.
3. Since Android L, the logger is smartly throttling messages (to
reduce logcat spam). Throttling brekpad logs defeats the all
point of microdumps.
This change is conceptually very simple. Replace the use of
__android_log_write() with __android_log_buf_write(), which takes
an extra bufID argument. The main drawback is that the
__android_log_buf_write is not exported in the NDK and needs to be
dynamically looked up via dlsym.
This choice has been discussed and advocated by Android owners.
See the internal bug b/21753476.
BUG=chromium:512755
R=thestig@chromium.org
Review URL: https://codereview.chromium.org/1286063003 .
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1490 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/client/linux/microdump_writer')
-rw-r--r-- | src/client/linux/microdump_writer/microdump_writer.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/client/linux/microdump_writer/microdump_writer.cc b/src/client/linux/microdump_writer/microdump_writer.cc index d54d4909..c2dba35b 100644 --- a/src/client/linux/microdump_writer/microdump_writer.cc +++ b/src/client/linux/microdump_writer/microdump_writer.cc @@ -105,9 +105,11 @@ class MicrodumpWriter { private: // Writes one line to the system log. void LogLine(const char* msg) { +#if defined(__ANDROID__) + logger::writeToCrashLog(msg); +#else logger::write(msg, my_strlen(msg)); -#if !defined(__ANDROID__) - logger::write("\n", 1); // Android logger appends the \n. Linux's doesn't. + logger::write("\n", 1); #endif } |