Program: 92156
Project: 92156
Buggy source:
public static HashMap<String,ArrayList<String>> loadEventList(ILaunchConfiguration config){
  HashMap<String,ArrayList<String>> events=new HashMap<String,ArrayList<String>>();
  IProject project=null;
  if (config == null) {
    if (!PerfCore.checkPerfInPath()) {
      return events;
    }
  }
 else {
    ConfigUtils configUtils=new ConfigUtils(config);
    try {
      project=ConfigUtils.getProject(configUtils.getProjectName());
    }
 catch (    CoreException e1) {
      e1.printStackTrace();
    }
    if (!PerfCore.checkRemotePerfInPath(project)) {
      return events;
    }
  }
  Process p=null;
  BufferedReader input=null;
  try {
    p=RuntimeProcessFactory.getFactory().exec(new String[]{PerfPlugin.PERF_COMMAND,"String_Node_Str"},project);
    input=new BufferedReader(new InputStreamReader(p.getInputStream()));
  }
 catch (  IOException e) {
    e.printStackTrace();
  }
  String line;
  try {
    while ((line=input.readLine()) != null) {
      if (line.contains("String_Node_Str")) {
        String event;
        String cat;
        if (line.contains(PerfPlugin.STRINGS_HWBREAKPOINTS)) {
          cat=PerfPlugin.STRINGS_HWBREAKPOINTS;
          event=line.substring(1,line.indexOf("String_Node_Str",0)).trim();
        }
 else         if (line.contains(PerfPlugin.STRINGS_RAWHWEvents)) {
          cat=PerfPlugin.STRINGS_RAWHWEvents;
          event=line.substring(1,line.indexOf("String_Node_Str",0)).trim();
        }
 else {
          event=line.substring(1,line.indexOf("String_Node_Str",0)).trim();
          if (event.contains("String_Node_Str")) {
            event=event.split("String_Node_Str")[0];
          }
          cat=line.replaceFirst("String_Node_Str","String_Node_Str").trim();
        }
        ArrayList<String> catevs=events.get(cat);
        if (catevs == null) {
          catevs=new ArrayList<String>();
          events.put(cat,catevs);
        }
        catevs.add(event.trim());
      }
    }
  }
 catch (  IOException e) {
    e.printStackTrace();
  }
 finally {
    if (null != input) {
      try {
        input.close();
      }
 catch (      IOException e) {
      }
    }
  }
  return events;
}

Fixed version (ground truth):
public static HashMap<String,ArrayList<String>> loadEventList(ILaunchConfiguration config){
  HashMap<String,ArrayList<String>> events=new HashMap<String,ArrayList<String>>();
  IProject project=null;
  if (config == null) {
    if (!PerfCore.checkPerfInPath()) {
      return events;
    }
  }
 else {
    ConfigUtils configUtils=new ConfigUtils(config);
    try {
      String projectName=configUtils.getProjectName();
      if (projectName != null && !projectName.equals("String_Node_Str")) {
        project=ConfigUtils.getProject(projectName);
      }
    }
 catch (    CoreException e1) {
      e1.printStackTrace();
    }
    if (!PerfCore.checkRemotePerfInPath(project)) {
      return events;
    }
  }
  Process p=null;
  BufferedReader input=null;
  try {
    p=RuntimeProcessFactory.getFactory().exec(new String[]{PerfPlugin.PERF_COMMAND,"String_Node_Str"},project);
    input=new BufferedReader(new InputStreamReader(p.getInputStream()));
  }
 catch (  IOException e) {
    e.printStackTrace();
  }
  String line;
  try {
    while ((line=input.readLine()) != null) {
      if (line.contains("String_Node_Str")) {
        String event;
        String cat;
        if (line.contains(PerfPlugin.STRINGS_HWBREAKPOINTS)) {
          cat=PerfPlugin.STRINGS_HWBREAKPOINTS;
          event=line.substring(1,line.indexOf("String_Node_Str",0)).trim();
        }
 else         if (line.contains(PerfPlugin.STRINGS_RAWHWEvents)) {
          cat=PerfPlugin.STRINGS_RAWHWEvents;
          event=line.substring(1,line.indexOf("String_Node_Str",0)).trim();
        }
 else {
          event=line.substring(1,line.indexOf("String_Node_Str",0)).trim();
          if (event.contains("String_Node_Str")) {
            event=event.split("String_Node_Str")[0];
          }
          cat=line.replaceFirst("String_Node_Str","String_Node_Str").trim();
        }
        ArrayList<String> catevs=events.get(cat);
        if (catevs == null) {
          catevs=new ArrayList<String>();
          events.put(cat,catevs);
        }
        catevs.add(event.trim());
      }
    }
  }
 catch (  IOException e) {
    e.printStackTrace();
  }
 finally {
    if (null != input) {
      try {
        input.close();
      }
 catch (      IOException e) {
      }
    }
  }
  return events;
}