Program: 118072
Project: 118072
Buggy source:
public void getAllErrorMess(IProcessMessage psMess){
  if (psMess.getType().equals(MsgType.STD_ERR)) {
    String mess=psMess.getContent();
    String[] linesMess=mess.split("String_Node_Str");
    StringBuffer currentMess=new StringBuffer();
    String currenctJobName=processContext.getProcess().getName();
    for (int i=0; i < linesMess.length; i++) {
      String tRunJobName=currenctJobName;
      String linemess=linesMess[i].trim();
      Pattern pattern=Pattern.compile("String_Node_Str");
      Matcher m=pattern.matcher(linemess);
      if (m.find()) {
        List<Node> runjobList=getTRunjobList(processContext.getProcess());
        String[] allwords=linemess.split("String_Node_Str");
        String componentName=allwords[allwords.length - 1];
        if (runjobList.size() > 0) {
          int currentI=i;
          if (currentI + 1 < linesMess.length - 1) {
            boolean haveFind=false;
            for (int j=currentI + 1; j < linesMess.length - 1; j++) {
              tRunJobName=linesMess[j];
              if ((tRunJobName.contains(componentName + "String_Node_Str"))) {
                haveFind=true;
                break;
              }
            }
            if (haveFind && tRunJobName.lastIndexOf("String_Node_Str") != -1 && tRunJobName.lastIndexOf("String_Node_Str") != -1) {
              tRunJobName=tRunJobName.substring(tRunJobName.lastIndexOf("String_Node_Str") + 1,tRunJobName.lastIndexOf("String_Node_Str"));
            }
 else {
              tRunJobName=currenctJobName;
            }
          }
        }
        if (tRunJobName != null && tRunJobName.equals(currenctJobName)) {
          if (i == 0) {
            errorMessMap.put(componentName,psMess);
          }
 else {
            for (int j=i; j < linesMess.length; j++) {
              currentMess.append(linesMess[j] + "String_Node_Str");
            }
            IProcessMessage currentProMess=new ProcessMessage(MsgType.STD_ERR,currentMess.toString());
            errorMessMap.put(componentName,currentProMess);
          }
        }
      }
    }
  }
  refreshNode(psMess);
}

Fixed version (ground truth):
public void getAllErrorMess(IProcessMessage psMess){
  if (psMess.getType().equals(MsgType.STD_ERR)) {
    String mess=psMess.getContent();
    String[] linesMess=mess.split("String_Node_Str");
    StringBuffer currentMess=new StringBuffer();
    String currenctJobName=processContext.getProcess().getName();
    for (int i=0; i < linesMess.length; i++) {
      String tRunJobName=currenctJobName;
      String linemess=linesMess[i].trim();
      Pattern pattern=Pattern.compile("String_Node_Str");
      Matcher m=pattern.matcher(linemess);
      if (m.find()) {
        String[] allwords=linemess.split("String_Node_Str");
        if (allwords.length == 5) {
          String componentName=allwords[3];
          tRunJobName=allwords[4].substring(1,allwords[4].length() - 1);
          if (tRunJobName != null && tRunJobName.equals(currenctJobName)) {
            if (i == 0) {
              errorMessMap.put(componentName,psMess);
            }
 else {
              for (int j=i; j < linesMess.length; j++) {
                currentMess.append(linesMess[j] + "String_Node_Str");
              }
              IProcessMessage currentProMess=new ProcessMessage(MsgType.STD_ERR,currentMess.toString());
              errorMessMap.put(componentName,currentProMess);
            }
          }
        }
      }
    }
  }
  refreshNode(psMess);
}