Program: 92746
Project: 92746
Buggy source:
public static HashMap<String,ArrayList<String>> loadEventList(){
  HashMap<String,ArrayList<String>> events=new HashMap<String,ArrayList<String>>();
  Process p=null;
  BufferedReader input=null;
  try {
    p=Runtime.getRuntime().exec("String_Node_Str");
    p.waitFor();
    input=new BufferedReader(new InputStreamReader(p.getInputStream()));
    if (!input.ready())     input=new BufferedReader(new InputStreamReader(p.getErrorStream()));
  }
 catch (  IOException e) {
    e.printStackTrace();
  }
catch (  InterruptedException 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",PerfPlugin.MagicPerfListNumber)).trim();
        }
 else         if (line.contains(PerfPlugin.STRINGS_RAWHWEvents)) {
          cat=PerfPlugin.STRINGS_RAWHWEvents;
          event=line.substring(1,line.indexOf("String_Node_Str",PerfPlugin.MagicPerfListNumber)).trim();
        }
 else {
          event=line.substring(1,PerfPlugin.MagicPerfListNumber).trim();
          if (event.contains("String_Node_Str")) {
            event=event.split("String_Node_Str")[0];
          }
          cat=line.substring(PerfPlugin.MagicPerfListNumber + 1).split("String_Node_Str")[0].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();
  }
  return events;
}

Fixed version (ground truth):
public static HashMap<String,ArrayList<String>> loadEventList(){
  HashMap<String,ArrayList<String>> events=new HashMap<String,ArrayList<String>>();
  Process p=null;
  BufferedReader input=null;
  try {
    p=Runtime.getRuntime().exec("String_Node_Str");
    BufferedReader stdoutIn=new BufferedReader(new InputStreamReader(p.getInputStream()));
    BufferedReader stderrIn=new BufferedReader(new InputStreamReader(p.getErrorStream()));
    while (!stdoutIn.ready() && !stderrIn.ready())     continue;
    input=stdoutIn.ready() ? stdoutIn : stderrIn;
  }
 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",PerfPlugin.MagicPerfListNumber)).trim();
        }
 else         if (line.contains(PerfPlugin.STRINGS_RAWHWEvents)) {
          cat=PerfPlugin.STRINGS_RAWHWEvents;
          event=line.substring(1,line.indexOf("String_Node_Str",PerfPlugin.MagicPerfListNumber)).trim();
        }
 else {
          event=line.substring(1,PerfPlugin.MagicPerfListNumber).trim();
          if (event.contains("String_Node_Str")) {
            event=event.split("String_Node_Str")[0];
          }
          cat=line.substring(PerfPlugin.MagicPerfListNumber + 1).split("String_Node_Str")[0].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();
  }
  return events;
}