Program: 172300
Project: 172300
Buggy source:
/** 
 * Do the crawl test.
 */
public void testCrawl(){
  int n=2;
  int m=4;
  long runTime=600000;
  fService.purgeAVMStore("String_Node_Str");
  BulkLoader loader=new BulkLoader();
  loader.setAvmService(fService);
  for (int i=0; i < m; i++) {
    fService.createAVMStore("String_Node_Str" + i);
    loader.recursiveLoad("String_Node_Str","String_Node_Str" + i + "String_Node_Str");
    fService.createSnapshot("String_Node_Str" + i,null,null);
  }
  long startTime=System.currentTimeMillis();
  List<AVMCrawler> crawlers=new ArrayList<AVMCrawler>();
  List<Thread> threads=new ArrayList<Thread>();
  for (int i=0; i < n; i++) {
    crawlers.add(new AVMCrawler(fService));
    threads.add(new Thread(crawlers.get(i)));
    threads.get(i).start();
  }
  while (true) {
    try {
      Thread.sleep(5000);
      for (      AVMCrawler crawler : crawlers) {
        if (crawler.getError()) {
          for (          AVMCrawler craw : crawlers) {
            craw.setDone();
          }
          for (          Thread thread : threads) {
            try {
              thread.join();
            }
 catch (            InterruptedException ie) {
            }
          }
          fail();
        }
      }
    }
 catch (    InterruptedException ie) {
    }
    long now=System.currentTimeMillis();
    if (now - startTime > runTime) {
      break;
    }
  }
  for (  AVMCrawler crawler : crawlers) {
    crawler.setDone();
  }
  for (  Thread thread : threads) {
    try {
      thread.join();
    }
 catch (    InterruptedException ie) {
    }
  }
  long ops=0L;
  for (  AVMCrawler crawler : crawlers) {
    ops+=crawler.getOpCount();
  }
  long time=System.currentTimeMillis() - startTime;
  System.out.println("String_Node_Str" + (ops * 1000L / time));
}

Fixed version (ground truth):
/** 
 * Do the crawl test.
 */
public void testCrawl(){
  int n=8;
  int m=32;
  long runTime=21600000;
  fService.purgeAVMStore("String_Node_Str");
  BulkLoader loader=new BulkLoader();
  loader.setAvmService(fService);
  for (int i=0; i < m; i++) {
    fService.createAVMStore("String_Node_Str" + i);
    loader.recursiveLoad("String_Node_Str","String_Node_Str" + i + "String_Node_Str");
    fService.createSnapshot("String_Node_Str" + i,null,null);
  }
  long startTime=System.currentTimeMillis();
  List<AVMCrawler> crawlers=new ArrayList<AVMCrawler>();
  List<Thread> threads=new ArrayList<Thread>();
  for (int i=0; i < n; i++) {
    crawlers.add(new AVMCrawler(fService));
    threads.add(new Thread(crawlers.get(i)));
    threads.get(i).start();
  }
  while (true) {
    try {
      Thread.sleep(5000);
      for (      AVMCrawler crawler : crawlers) {
        if (crawler.getError()) {
          for (          AVMCrawler craw : crawlers) {
            craw.setDone();
          }
          for (          Thread thread : threads) {
            try {
              thread.join();
            }
 catch (            InterruptedException ie) {
            }
          }
          fail();
        }
      }
    }
 catch (    InterruptedException ie) {
    }
    long now=System.currentTimeMillis();
    if (now - startTime > runTime) {
      break;
    }
  }
  for (  AVMCrawler crawler : crawlers) {
    crawler.setDone();
  }
  for (  Thread thread : threads) {
    try {
      thread.join();
    }
 catch (    InterruptedException ie) {
    }
  }
  long ops=0L;
  for (  AVMCrawler crawler : crawlers) {
    ops+=crawler.getOpCount();
  }
  long time=System.currentTimeMillis() - startTime;
  System.out.println("String_Node_Str" + (ops * 1000L / time));
}