Program: 13651
Project: 13651
Buggy source:
public void runMappedFiles(String[] bamfiles){
  Vector<File> files=new Vector<File>();
  if (bamfiles.length == 1 && bamfiles[0].equals("String_Node_Str")) {
    files.add(new File("String_Node_Str"));
  }
 else {
    for (int i=0; i < bamfiles.length; i++) {
      File file=new File(bamfiles[i]);
      if (!file.exists() || !file.canRead()) {
        log.warn("String_Node_Str" + file.getAbsolutePath() + "String_Node_Str");
        continue;
      }
      if (file.isDirectory()) {
        File[] subdirFiles=file.listFiles();
        for (int j=0; j < subdirFiles.length; j++) {
          if (!isMappedFile(subdirFiles[j].getName())) {
            log.warn("String_Node_Str" + subdirFiles[j].getAbsolutePath() + "String_Node_Str");
            continue;
          }
          files.add(subdirFiles[j]);
        }
      }
 else {
        if (!isMappedFile(file.getName())) {
          log.warn("String_Node_Str" + file.getAbsolutePath() + "String_Node_Str");
          continue;
        }
        files.add(file);
      }
    }
  }
  filesRemaining=new AtomicInteger(files.size());
  for (int i=0; i < files.size(); i++) {
    try {
      processFile(files.elementAt(i));
    }
 catch (    SequenceFormatException e) {
      log.error("String_Node_Str" + files.elementAt(i) + "String_Node_Str"+ e.getLocalizedMessage(),e);
      filesRemaining.decrementAndGet();
    }
catch (    IOException e) {
      log.error("String_Node_Str" + files.elementAt(i) + "String_Node_Str"+ e.getLocalizedMessage(),e);
      filesRemaining.decrementAndGet();
    }
  }
  while (filesRemaining.intValue() > 0) {
    try {
      Thread.sleep(1500);
    }
 catch (    InterruptedException e) {
    }
  }
  System.exit(0);
}

Fixed version (ground truth):
public void runMappedFiles(String[] bamfiles){
  Vector<File> files=new Vector<File>();
  if (bamfiles.length == 1 && bamfiles[0].equals("String_Node_Str")) {
    files.add(new File("String_Node_Str"));
  }
 else {
    for (int i=0; i < bamfiles.length; i++) {
      File file=new File(bamfiles[i]);
      if (!file.exists() || !file.canRead()) {
        log.warn("String_Node_Str" + file.getAbsolutePath() + "String_Node_Str");
        continue;
      }
      if (file.isDirectory()) {
        File[] subdirFiles=file.listFiles();
        for (int j=0; j < subdirFiles.length; j++) {
          if (!isMappedFile(subdirFiles[j].getName())) {
            log.warn("String_Node_Str" + subdirFiles[j].getAbsolutePath() + "String_Node_Str");
            continue;
          }
          files.add(subdirFiles[j]);
        }
      }
 else {
        if (!isMappedFile(file.getName())) {
          log.warn("String_Node_Str" + file.getAbsolutePath() + "String_Node_Str");
          continue;
        }
        files.add(file);
      }
    }
  }
  filesRemaining=new AtomicInteger(files.size());
  for (int i=0; i < files.size(); i++) {
    try {
      processFile(files.elementAt(i));
    }
 catch (    SequenceFormatException e) {
      log.error("String_Node_Str" + files.elementAt(i) + "String_Node_Str"+ e.getLocalizedMessage(),e);
      filesRemaining.decrementAndGet();
    }
catch (    IOException e) {
      log.error("String_Node_Str" + files.elementAt(i) + "String_Node_Str"+ e.getLocalizedMessage(),e);
      filesRemaining.decrementAndGet();
    }
catch (    Exception e) {
      log.error("String_Node_Str" + files.elementAt(i),e);
      filesRemaining.decrementAndGet();
    }
  }
  while (filesRemaining.intValue() > 0) {
    try {
      Thread.sleep(1500);
    }
 catch (    InterruptedException e) {
    }
  }
  System.exit(0);
}