[Retrace] Adjust regular expression to not match arbitrary messages
Bug: b/300416467
Change-Id: I2c95e745e89a36af5135f8b1ab297231731b61eb
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/StackTraceRegularExpressionParser.java b/src/main/java/com/android/tools/r8/retrace/internal/StackTraceRegularExpressionParser.java
index 720562d..c3b01ce 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/StackTraceRegularExpressionParser.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/StackTraceRegularExpressionParser.java
@@ -16,12 +16,22 @@
public class StackTraceRegularExpressionParser
implements StackTraceLineParser<String, StackTraceElementStringProxy> {
+ private static final String SUPPRESSED_OR_CAUSED_BY = "(Suppressed:\\s+|Caused [bB]y:\\s+)";
+
// This is a slight modification of the default regular expression shown for proguard retrace
// that allow for retracing classes in the form <class>: lorem ipsum...
// Seems like Proguard retrace is expecting the form "Caused by: <class>".
public static final String DEFAULT_REGULAR_EXPRESSION =
"(?:.*?\\bat\\s+%c\\.%m\\s*\\(%S\\)\\p{Z}*(?:~\\[.*\\])?)"
- + "|(?:(?:(?:%c|.*)?[:\"]\\s+)?%c(?::.*)?)";
+ // Match exception classes:
+ // <class>:
+ // Suppressed: <class>:
+ // Caused by: <class>:
+ + "|"
+ + SUPPRESSED_OR_CAUSED_BY
+ + "?%c:\\s.*"
+ // Match exceptions on the form Exception in thread \"main\" <class>:
+ + "|Exception in .*\".*\"\\s%c";
private final Pattern compiledPattern;
@@ -158,7 +168,7 @@
}
}
- private static final String identifierSegment = "[^\\s\\[;(<]+";
+ private static final String identifierSegment = "[^\\s\\[;:(<]+";
private static final String METHOD_NAME_REGULAR_EXPRESSION =
"(?:(" + identifierSegment + "|\\<init\\>|\\<clinit\\>))";
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/ExceptionMessageWithClassNameInMessage.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/ExceptionMessageWithClassNameInMessage.java
index 5b21d1a..fe12cfe 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/ExceptionMessageWithClassNameInMessage.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/ExceptionMessageWithClassNameInMessage.java
@@ -29,8 +29,7 @@
return ImmutableList.of(
"10-26 19:26:24.749 10159 26250 26363 E Tycho.crl: Exception",
"10-26 19:26:24.749 10159 26250 26363 E Tycho.crl: java.util.concurrent.ExecutionException:"
- // TODO(b/300416467): We should not deobfuscate net.
- + " ary: eu: Exception in CronetUrlRequest: foo.bar.baz::ERR_CONNECTION_CLOSED,"
+ + " ary: eu: Exception in CronetUrlRequest: net::ERR_CONNECTION_CLOSED,"
+ " ErrorCode=5, InternalErrorCode=-100, Retryable=true");
}
@@ -39,8 +38,7 @@
return ImmutableList.of(
"10-26 19:26:24.749 10159 26250 26363 E Tycho.crl: Exception",
"10-26 19:26:24.749 10159 26250 26363 E Tycho.crl: java.util.concurrent.ExecutionException:"
- // TODO(b/300416467): We should not deobfuscate net.
- + " ary: eu: Exception in CronetUrlRequest: foo.bar.baz::ERR_CONNECTION_CLOSED,"
+ + " ary: eu: Exception in CronetUrlRequest: net::ERR_CONNECTION_CLOSED,"
+ " ErrorCode=5, InternalErrorCode=-100, Retryable=true");
}