mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 13:25:37 +00:00
Bug 863777 - Get native stack in ANR report; r=blassey
This commit is contained in:
parent
d106559612
commit
43b7d54799
@ -30,6 +30,7 @@ import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.io.Reader;
|
||||
import java.io.StringReader;
|
||||
import java.security.GeneralSecurityException;
|
||||
import java.security.MessageDigest;
|
||||
import java.util.UUID;
|
||||
@ -445,7 +446,8 @@ public final class ANRReporter extends BroadcastReceiver
|
||||
return total;
|
||||
}
|
||||
|
||||
private static void fillPingFooter(OutputStream ping, MessageDigest checksum)
|
||||
private static void fillPingFooter(OutputStream ping, MessageDigest checksum,
|
||||
boolean haveNativeStack)
|
||||
throws IOException {
|
||||
|
||||
// We are at the end of ANR data
|
||||
@ -473,6 +475,17 @@ public final class ANRReporter extends BroadcastReceiver
|
||||
Log.w(LOGTAG, e);
|
||||
}
|
||||
|
||||
if (haveNativeStack) {
|
||||
total += writePingPayload(ping, checksum, ("\"," +
|
||||
"\"androidNativeStack\":\""));
|
||||
|
||||
String nativeStack = String.valueOf(getNativeStack());
|
||||
int size = fillPingBlock(ping, checksum, new StringReader(nativeStack), null);
|
||||
if (DEBUG) {
|
||||
Log.d(LOGTAG, "wrote native stack, size = " + String.valueOf(size));
|
||||
}
|
||||
}
|
||||
|
||||
total += writePingPayload(ping, checksum, "\"}");
|
||||
|
||||
String base64Checksum = Base64.encodeToString(checksum.digest(), Base64.NO_WRAP);
|
||||
@ -490,6 +503,8 @@ public final class ANRReporter extends BroadcastReceiver
|
||||
}
|
||||
|
||||
private static void processTraces(Reader traces, File pingFile) {
|
||||
|
||||
boolean haveNativeStack = requestNativeStack();
|
||||
try {
|
||||
OutputStream ping = new BufferedOutputStream(
|
||||
new FileOutputStream(pingFile), TRACES_BLOCK_SIZE);
|
||||
@ -511,13 +526,16 @@ public final class ANRReporter extends BroadcastReceiver
|
||||
if (DEBUG) {
|
||||
Log.d(LOGTAG, "wrote traces, size = " + String.valueOf(size));
|
||||
}
|
||||
fillPingFooter(ping, checksum);
|
||||
fillPingFooter(ping, checksum, haveNativeStack);
|
||||
if (DEBUG) {
|
||||
Log.d(LOGTAG, "finished creating ping file");
|
||||
}
|
||||
return;
|
||||
} finally {
|
||||
ping.close();
|
||||
if (haveNativeStack) {
|
||||
releaseNativeStack();
|
||||
}
|
||||
}
|
||||
} catch (GeneralSecurityException e) {
|
||||
Log.w(LOGTAG, e);
|
||||
|
Loading…
Reference in New Issue
Block a user