Program: 18214
Project: 18214
Buggy source:
@Override public List<FoundService> findFromContext(BrowsingContext context) throws Exception {
  List<FoundService> foundServices=new LinkedList<FoundService>();
  if (context.getData() != null) {
    URL url=context.getURL();
    HtmlCleaner cleaner=new HtmlCleaner();
    TagNode cleanHtml=cleaner.clean(context.getData());
    String applicationName=guessApplicationName(url);
    List<String> foundServicesNames=new LinkedList<String>();
    Object[] links=cleanHtml.evaluateXPath("String_Node_Str");
    changeToAbsolutePath(links,"String_Node_Str",url);
    for (    Object o : links) {
      TagNode link=(TagNode)o;
      try {
        String ref=new URL(url,link.getAttributeByName("String_Node_Str")).toString();
        String name=(link.getText() != null) ? link.getText().toString() : ref;
        if (name.contains("String_Node_Str")) {
          String[] nameParts=name.split("String_Node_Str");
          name=nameParts[nameParts.length - 1].replaceAll("String_Node_Str","String_Node_Str");
        }
        int i=1;
        if (ref != null && ref.toLowerCase().endsWith("String_Node_Str")) {
          while (foundServicesNames.contains(name)) {
            name=(i == 1 ? name + i++ : name.substring(0,name.length() - 1)) + i++;
          }
          name=name.replaceAll("String_Node_Str","String_Node_Str").trim();
          foundServices.add(new FoundService(name,ref,applicationName));
          foundServicesNames.add(name);
        }
      }
 catch (      MalformedURLException e) {
      }
    }
  }
  return foundServices;
}

Fixed version (ground truth):
@Override public List<FoundService> findFromContext(BrowsingContext context) throws Exception {
  List<FoundService> foundServices=new LinkedList<FoundService>();
  if (context.getData() != null) {
    URL url=context.getURL();
    HtmlCleaner cleaner=new HtmlCleaner();
    TagNode cleanHtml=null;
    try {
      cleanHtml=cleaner.clean(context.getData());
    }
 catch (    StackOverflowError e) {
      log.warn("String_Node_Str" + url + "String_Node_Str");
      return foundServices;
    }
    String applicationName=guessApplicationName(url);
    List<String> foundServicesNames=new LinkedList<String>();
    Object[] links=cleanHtml.evaluateXPath("String_Node_Str");
    changeToAbsolutePath(links,"String_Node_Str",url);
    for (    Object o : links) {
      TagNode link=(TagNode)o;
      try {
        String ref=new URL(url,link.getAttributeByName("String_Node_Str")).toString();
        String name=(link.getText() != null) ? link.getText().toString() : ref;
        if (name.contains("String_Node_Str")) {
          String[] nameParts=name.split("String_Node_Str");
          name=nameParts[nameParts.length - 1].replaceAll("String_Node_Str","String_Node_Str");
        }
        int i=1;
        if (ref != null && ref.toLowerCase().endsWith("String_Node_Str")) {
          while (foundServicesNames.contains(name)) {
            name=(i == 1 ? name + i++ : name.substring(0,name.length() - 1)) + i++;
          }
          name=name.replaceAll("String_Node_Str","String_Node_Str").trim();
          foundServices.add(new FoundService(name,ref,applicationName));
          foundServicesNames.add(name);
        }
      }
 catch (      MalformedURLException e) {
      }
    }
  }
  return foundServices;
}