public class Trace implements Runnable {
  private volatile boolean alive = true;

  private static void throwSomething() {
    throw new RuntimeException();
  }

  private void bar(Object o) {
    o.toString();
  }

  private void foo() {
    { long a = 42;
      long b = 25;
      long c = a / b;
    }

    try {
      long a = 42;
      long b = 0;
      long c = a / b;
    } catch (Exception e) { }

    try {
      throw new Exception();
    } catch (Exception e) { }

    try {
      throwSomething();
    } catch (Exception e) { }

    try {
      Trace.class.getMethod("bar", Object.class).invoke(this, this);
    } catch (Exception e) { }
  }

  private static void dummy() {
    byte[] a = new byte[10];
    byte[] b = new byte[10];
    System.arraycopy(a, 0, b, 0, 10);
  }

  private static void tail1(int a, int b, int c, int d, int e, int f) {
    dummy();
  }

  private static void tail2() {
    tail1(1, 2, 3, 4, 5, 6);
    tail1(1, 2, 3, 4, 5, 6);
  }

  private static void test(Trace trace) {
    tail1(1, 2, 3, 4, 5, 6);
    tail2();
    trace.foo();
  }

  public void run() {
    synchronized (this) {
      notifyAll();
    }

    try {
      for (int i = 0; i < 10000; ++i) {
        test(this);
      }
    } finally {
      alive = false;
    }
  }

  public static void main(String[] args) throws Exception {
    Trace trace = new Trace();
    Thread thread = new Thread(trace);

    synchronized (trace) {
      thread.start();
      trace.wait();

      int count = 0;
      while (trace.alive) {
        thread.getStackTrace();
        ++ count;
      }

      System.out.println("got " + count + " traces");
    }
  }
}

@@ -1213,24 +1213,134 @@
 test(this);%0A
+        %0A        if (i %25 100 == 0) %7B%0A          System.out.print(%22r%22);%0A          System.out.flush();%0A        %7D%0A
       %7D%0A    
@@ -1683,16 +1683,156 @@
  count;%0A
+        %0A        if (count %25 100 == 0) %7B%0A          Thread.yield();%0A          System.out.print(%22t%22);%0A          System.out.flush();%0A        %7D%0A
       %7D%0A
@@ -1858,16 +1858,18 @@
 rintln(%22
+%5Cn
 got %22 + 

add progress indicators to Trace test