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.InputStreamReader;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
|
import java.io.StringReader;
|
||||||
import java.security.GeneralSecurityException;
|
import java.security.GeneralSecurityException;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -445,7 +446,8 @@ public final class ANRReporter extends BroadcastReceiver
|
|||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void fillPingFooter(OutputStream ping, MessageDigest checksum)
|
private static void fillPingFooter(OutputStream ping, MessageDigest checksum,
|
||||||
|
boolean haveNativeStack)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
|
||||||
// We are at the end of ANR data
|
// We are at the end of ANR data
|
||||||
@ -473,6 +475,17 @@ public final class ANRReporter extends BroadcastReceiver
|
|||||||
Log.w(LOGTAG, e);
|
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, "\"}");
|
total += writePingPayload(ping, checksum, "\"}");
|
||||||
|
|
||||||
String base64Checksum = Base64.encodeToString(checksum.digest(), Base64.NO_WRAP);
|
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) {
|
private static void processTraces(Reader traces, File pingFile) {
|
||||||
|
|
||||||
|
boolean haveNativeStack = requestNativeStack();
|
||||||
try {
|
try {
|
||||||
OutputStream ping = new BufferedOutputStream(
|
OutputStream ping = new BufferedOutputStream(
|
||||||
new FileOutputStream(pingFile), TRACES_BLOCK_SIZE);
|
new FileOutputStream(pingFile), TRACES_BLOCK_SIZE);
|
||||||
@ -511,13 +526,16 @@ public final class ANRReporter extends BroadcastReceiver
|
|||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Log.d(LOGTAG, "wrote traces, size = " + String.valueOf(size));
|
Log.d(LOGTAG, "wrote traces, size = " + String.valueOf(size));
|
||||||
}
|
}
|
||||||
fillPingFooter(ping, checksum);
|
fillPingFooter(ping, checksum, haveNativeStack);
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Log.d(LOGTAG, "finished creating ping file");
|
Log.d(LOGTAG, "finished creating ping file");
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
} finally {
|
} finally {
|
||||||
ping.close();
|
ping.close();
|
||||||
|
if (haveNativeStack) {
|
||||||
|
releaseNativeStack();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (GeneralSecurityException e) {
|
} catch (GeneralSecurityException e) {
|
||||||
Log.w(LOGTAG, e);
|
Log.w(LOGTAG, e);
|
||||||
|
Loading…
Reference in New Issue
Block a user