Program: 91799
Project: 91799
Buggy source:
private static void parseRemoteReport(ILaunchConfiguration config,IPath workingDir,IProgressMonitor monitor,String perfDataLoc,PrintStream print,TreeParent invisibleRoot,boolean oldPerfVersion,BufferedReader input,BufferedReader error,IProject project){
  if (monitor != null && monitor.isCanceled()) {
    return;
  }
  String line=null;
  String items[];
  float percent;
  Process p=null;
  double samples;
  String comm, dso, symbol;
  boolean kernelFlag;
  PMEvent currentEvent=null;
  PMCommand currentCommand=null;
  PMDso currentDso=null;
  PMFile currentFile=null;
  PMSymbol currentSym=null;
  try {
    while ((line=input.readLine()) != null) {
      if (monitor != null && monitor.isCanceled()) {
        return;
      }
      if ((line.startsWith("String_Node_Str"))) {
        if (line.contains("String_Node_Str") || line.contains("String_Node_Str")) {
          String[] tmp=line.trim().split("String_Node_Str");
          String event=tmp[tmp.length - 1];
          if (line.contains("String_Node_Str")) {
            event=event.substring(1,event.length() - 1);
          }
          currentEvent=new PMEvent(event);
          invisibleRoot.addChild(currentEvent);
          currentCommand=null;
          currentDso=null;
        }
 else         if (line.contains("String_Node_Str")) {
          if (print != null) {
            print.println("String_Node_Str");
          }
          invisibleRoot.addChild(new PMEvent("String_Node_Str"));
        }
      }
 else {
        items=line.trim().split("String_Node_Str" + (char)1);
        if (items.length != 5) {
          continue;
        }
        percent=Float.parseFloat(items[0].replace("String_Node_Str","String_Node_Str"));
        samples=Double.parseDouble(items[1].trim());
        comm=items[2].trim();
        dso=items[3].trim();
        symbol=items[4].trim();
        kernelFlag=("String_Node_Str" + symbol.charAt(1)).equals("String_Node_Str");
        if ((currentCommand == null) || (!currentCommand.getName().equals(comm))) {
          currentCommand=(PMCommand)currentEvent.getChild(comm);
          if (currentCommand == null) {
            currentCommand=new PMCommand(comm);
            currentEvent.addChild(currentCommand);
          }
        }
        if ((currentDso == null) || (!currentDso.getName().equals(dso))) {
          currentDso=(PMDso)currentCommand.getChild(dso);
          if (currentDso == null) {
            currentDso=new PMDso(dso,kernelFlag);
            currentCommand.addChild(currentDso);
          }
        }
        currentFile=currentDso.getFile(PerfPlugin.STRINGS_UnfiledSymbols);
        currentSym=new PMSymbol(symbol,percent,samples);
        currentFile.addChild(currentSym);
      }
    }
  }
 catch (  IOException e) {
    logException(e);
  }
  spitStream(error,"String_Node_Str",print);
  boolean SourceLineNumbers=PerfPlugin.ATTR_SourceLineNumbers_default;
  boolean Kernel_SourceLineNumbers=PerfPlugin.ATTR_Kernel_SourceLineNumbers_default;
  try {
    SourceLineNumbers=config.getAttribute(PerfPlugin.ATTR_SourceLineNumbers,PerfPlugin.ATTR_SourceLineNumbers_default);
    Kernel_SourceLineNumbers=config.getAttribute(PerfPlugin.ATTR_Kernel_SourceLineNumbers,PerfPlugin.ATTR_Kernel_SourceLineNumbers_default);
  }
 catch (  CoreException e2) {
    SourceLineNumbers=false;
  }
  if (monitor != null && monitor.isCanceled()) {
    return;
  }
  boolean hasProfileData=invisibleRoot.getChildren().length != 0;
  if (SourceLineNumbers) {
    for (    TreeParent ev : invisibleRoot.getChildren()) {
      if (!(ev instanceof PMEvent))       continue;
      for (      TreeParent cmd : ev.getChildren()) {
        if (!(cmd instanceof PMCommand))         continue;
        for (        TreeParent d : cmd.getChildren()) {
          if (!(d instanceof PMDso))           continue;
          currentDso=(PMDso)d;
          if ((!Kernel_SourceLineNumbers) && currentDso.isKernelDso())           continue;
          for (          TreeParent s : currentDso.getFile(PerfPlugin.STRINGS_UnfiledSymbols).getChildren()) {
            if (!(s instanceof PMSymbol))             continue;
            if (monitor != null && monitor.isCanceled()) {
              return;
            }
            currentSym=(PMSymbol)s;
            String[] annotateCmd;
            if (workingDir == null) {
              annotateCmd=getAnnotateString(config,currentDso.getName(),currentSym.getName().substring(4),perfDataLoc,oldPerfVersion);
            }
 else {
              String perfDefaultDataLoc=workingDir + "String_Node_Str" + PerfPlugin.PERF_DEFAULT_DATA;
              annotateCmd=getAnnotateString(config,currentDso.getName(),currentSym.getName().substring(4),perfDefaultDataLoc,oldPerfVersion);
            }
            try {
              if (project == null)               p=Runtime.getRuntime().exec(annotateCmd);
 else               p=RuntimeProcessFactory.getFactory().exec(annotateCmd,project);
              input=new BufferedReader(new InputStreamReader(p.getInputStream()));
              error=new BufferedReader(new InputStreamReader(p.getErrorStream()));
            }
 catch (            IOException e) {
              logException(e);
            }
            PerfCore.parseAnnotation(monitor,input,workingDir,currentDso,currentSym);
          }
          if (currentDso.getFile(PerfPlugin.STRINGS_UnfiledSymbols).getChildren().length == 0) {
            currentDso.removeChild(currentDso.getFile(PerfPlugin.STRINGS_UnfiledSymbols));
          }
          spitStream(error,"String_Node_Str",print);
        }
      }
    }
  }
  if (print != null) {
    if (hasProfileData) {
      print.println("String_Node_Str");
    }
 else {
      print.println("String_Node_Str");
    }
  }
}

Fixed version (ground truth):
private static void parseRemoteReport(ILaunchConfiguration config,IPath workingDir,IProgressMonitor monitor,String perfDataLoc,PrintStream print,TreeParent invisibleRoot,boolean oldPerfVersion,BufferedReader input,BufferedReader error,IProject project){
  if (monitor != null && monitor.isCanceled()) {
    return;
  }
  String line=null;
  String items[];
  float percent;
  Process p=null;
  double samples;
  String comm, dso, symbol;
  boolean kernelFlag;
  PMEvent currentEvent=null;
  PMCommand currentCommand=null;
  PMDso currentDso=null;
  PMFile currentFile=null;
  PMSymbol currentSym=null;
  try {
    while ((line=input.readLine()) != null) {
      if (monitor != null && monitor.isCanceled()) {
        return;
      }
      if ((line.startsWith("String_Node_Str"))) {
        if (line.contains("String_Node_Str") || line.contains("String_Node_Str")) {
          String[] tmp=line.trim().split("String_Node_Str");
          String event=tmp[tmp.length - 1];
          if (line.contains("String_Node_Str")) {
            event=event.substring(1,event.length() - 1);
          }
          currentEvent=new PMEvent(event);
          invisibleRoot.addChild(currentEvent);
          currentCommand=null;
          currentDso=null;
        }
 else         if (line.contains("String_Node_Str")) {
          if (print != null) {
            print.println("String_Node_Str");
          }
          invisibleRoot.addChild(new PMEvent("String_Node_Str"));
        }
      }
 else {
        items=line.trim().split("String_Node_Str" + (char)1);
        if (items.length != 5) {
          continue;
        }
        percent=Float.parseFloat(items[0].replace("String_Node_Str","String_Node_Str"));
        samples=Double.parseDouble(items[1].trim());
        comm=items[2].trim();
        dso=items[3].trim();
        symbol=items[4].trim();
        kernelFlag=("String_Node_Str" + symbol.charAt(1)).equals("String_Node_Str");
        if ((currentCommand == null) || (!currentCommand.getName().equals(comm))) {
          currentCommand=(PMCommand)currentEvent.getChild(comm);
          if (currentCommand == null) {
            currentCommand=new PMCommand(comm);
            currentEvent.addChild(currentCommand);
          }
        }
        if ((currentDso == null) || (!currentDso.getName().equals(dso))) {
          currentDso=(PMDso)currentCommand.getChild(dso);
          if (currentDso == null) {
            currentDso=new PMDso(dso,kernelFlag);
            currentCommand.addChild(currentDso);
          }
        }
        currentFile=currentDso.getFile(PerfPlugin.STRINGS_UnfiledSymbols);
        currentSym=new PMSymbol(symbol,percent,samples);
        currentFile.addChild(currentSym);
      }
    }
  }
 catch (  IOException e) {
    logException(e);
  }
  spitStream(error,"String_Node_Str",print);
  boolean SourceLineNumbers=PerfPlugin.ATTR_SourceLineNumbers_default;
  boolean Kernel_SourceLineNumbers=PerfPlugin.ATTR_Kernel_SourceLineNumbers_default;
  try {
    SourceLineNumbers=config.getAttribute(PerfPlugin.ATTR_SourceLineNumbers,PerfPlugin.ATTR_SourceLineNumbers_default);
    Kernel_SourceLineNumbers=config.getAttribute(PerfPlugin.ATTR_Kernel_SourceLineNumbers,PerfPlugin.ATTR_Kernel_SourceLineNumbers_default);
  }
 catch (  CoreException e2) {
    SourceLineNumbers=false;
  }
  if (monitor != null && monitor.isCanceled()) {
    return;
  }
  boolean hasProfileData=invisibleRoot.getChildren().length != 0;
  if (SourceLineNumbers) {
    for (    TreeParent ev : invisibleRoot.getChildren()) {
      if (!(ev instanceof PMEvent))       continue;
      for (      TreeParent cmd : ev.getChildren()) {
        if (!(cmd instanceof PMCommand))         continue;
        for (        TreeParent d : cmd.getChildren()) {
          if (!(d instanceof PMDso))           continue;
          currentDso=(PMDso)d;
          if ((!Kernel_SourceLineNumbers) && currentDso.isKernelDso())           continue;
          for (          TreeParent s : currentDso.getFile(PerfPlugin.STRINGS_UnfiledSymbols).getChildren()) {
            if (!(s instanceof PMSymbol))             continue;
            if (monitor != null && monitor.isCanceled()) {
              return;
            }
            currentSym=(PMSymbol)s;
            String[] annotateCmd;
            if (workingDir == null) {
              annotateCmd=getAnnotateString(config,currentDso.getName(),currentSym.getName().substring(4),perfDataLoc,oldPerfVersion);
            }
 else {
              String perfDefaultDataLoc=workingDir + "String_Node_Str" + PerfPlugin.PERF_DEFAULT_DATA;
              annotateCmd=getAnnotateString(config,currentDso.getName(),currentSym.getName().substring(4),perfDefaultDataLoc,oldPerfVersion);
            }
            try {
              if (project == null) {
                p=Runtime.getRuntime().exec(annotateCmd);
              }
 else {
                StringBuffer sb=new StringBuffer();
                ArrayList<String> al=new ArrayList<>();
                al.add("String_Node_Str");
                al.add("String_Node_Str");
                if (workingDir != null) {
                  sb.append("String_Node_Str" + workingDir.toOSString() + "String_Node_Str");
                }
                for (int i=0; i < annotateCmd.length; i++) {
                  sb.append(annotateCmd[i]);
                  sb.append("String_Node_Str");
                }
                al.add(sb.toString());
                p=RuntimeProcessFactory.getFactory().exec(al.toArray(new String[]{}),project);
              }
              input=new BufferedReader(new InputStreamReader(p.getInputStream()));
              error=new BufferedReader(new InputStreamReader(p.getErrorStream()));
            }
 catch (            IOException e) {
              logException(e);
            }
            PerfCore.parseAnnotation(monitor,input,workingDir,currentDso,currentSym);
          }
          if (currentDso.getFile(PerfPlugin.STRINGS_UnfiledSymbols).getChildren().length == 0) {
            currentDso.removeChild(currentDso.getFile(PerfPlugin.STRINGS_UnfiledSymbols));
          }
          spitStream(error,"String_Node_Str",print);
        }
      }
    }
  }
  if (print != null) {
    if (hasProfileData) {
      print.println("String_Node_Str");
    }
 else {
      print.println("String_Node_Str");
    }
  }
}