Print stack trace of main thread in !isProcessed() assertion

Bug: 178235885
Change-Id: Ief3daaa1ca8903a50338fc6ed8a04e10326b5cfa
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index 152d618..dd9bee9 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -1252,7 +1252,10 @@
     }
 
     assert !method.isProcessed() || !isDebugMode
-        : "Method already processed: " + context.toSourceString();
+        : "Method already processed: "
+            + context.toSourceString()
+            + System.lineSeparator()
+            + ExceptionUtils.getMainStackTrace();
     assert !method.isProcessed()
             || !appView.enableWholeProgramOptimizations()
             || !appView.appInfo().withLiveness().isNeverReprocessMethod(method.method)
diff --git a/src/main/java/com/android/tools/r8/utils/ExceptionUtils.java b/src/main/java/com/android/tools/r8/utils/ExceptionUtils.java
index 8c4da03..ef5c3ca 100644
--- a/src/main/java/com/android/tools/r8/utils/ExceptionUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/ExceptionUtils.java
@@ -22,9 +22,20 @@
 import java.util.function.BiFunction;
 import java.util.function.Consumer;
 import java.util.function.Supplier;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 public abstract class ExceptionUtils {
 
+  public static String getMainStackTrace() {
+    return Thread.getAllStackTraces().entrySet().stream()
+        .filter(x -> x.getKey().getName().equals("main"))
+        .map(x -> x.getValue())
+        .flatMap(x -> Stream.of(x))
+        .map(x -> x.toString())
+        .collect(Collectors.joining(System.lineSeparator()));
+  }
+
   public static void withConsumeResourceHandler(
       Reporter reporter, StringConsumer consumer, String data) {
     withConsumeResourceHandler(reporter, handler -> consumer.accept(data, handler));