Program: 93029
Project: 93029
Buggy source:
private void finishLaunch(ILaunch launch,ILaunchConfiguration config,String command,IProgressMonitor monitor,boolean retry){
  try {
    File workDir=getWorkingDirectory(config);
    if (workDir == null) {
      workDir=new File(System.getProperty("String_Node_Str","String_Node_Str"));
    }
    SystemTapCommandGenerator cmdGenerator=new SystemTapCommandGenerator();
    cmd=cmdGenerator.generateCommand(scriptPath,binaryPath,command,needsBinary,needsArguments,arguments,binaryArguments);
    String tmp[]=cmd.split("String_Node_Str");
    ArrayList<String> cmdLine=new ArrayList<String>();
    for (    String str : tmp) {
      cmdLine.add(str);
    }
    String[] commandArray=(String[])cmdLine.toArray(new String[cmdLine.size()]);
    if (monitor.isCanceled()) {
      return;
    }
    monitor.worked(1);
    if (launch == null) {
      return;
    }
    setDefaultSourceLocator(launch,config);
    boolean graphMode=config.getAttribute(LaunchConfigurationConstants.GRAPHICS_MODE,LaunchConfigurationConstants.DEFAULT_GRAPHICS_MODE);
    SystemTapCommandParser stapCmdPar=null;
    if (!graphMode) {
      stapCmdPar=new SystemTapCommandParser(Messages.getString("String_Node_Str"),outputPath,new CallgraphView(),useColour,graphMode,config.getName());
      stapCmdPar.schedule();
    }
    monitor.worked(1);
    Process subProcess=execute(commandArray,getEnvironment(config),workDir,true);
    if (subProcess == null) {
      SystemTapUIErrorMessages mess=new SystemTapUIErrorMessages(Messages.getString("String_Node_Str"),Messages.getString("String_Node_Str"),Messages.getString("String_Node_Str") + Messages.getString("String_Node_Str"));
      mess.schedule();
      return;
    }
    IProcess process=createNewProcess(launch,subProcess,commandArray[0]);
    process.setAttribute(IProcess.ATTR_CMDLINE,cmd);
    monitor.worked(1);
    ((TextConsole)Helper.getConsoleByName(config.getName())).activate();
    stringBuff=new StringBuffer();
    process.getStreamsProxy().getErrorStreamMonitor().addListener(new StreamListener());
    while (!process.isTerminated()) {
      Thread.sleep(100);
      if (monitor.isCanceled()) {
        Runtime run=Runtime.getRuntime();
        run.exec("String_Node_Str");
        process.terminate();
        return;
      }
    }
    Thread.sleep(100);
    if (stapCmdPar != null)     stapCmdPar.setProcessFinished(true);
    if (process.getExitValue() != 0) {
      IDocument doc=Helper.getConsoleDocumentByName(config.getName());
      if (doc.get().length() < 1)       Thread.sleep(300);
      SystemTapErrorHandler errorHandler=new SystemTapErrorHandler();
      errorHandler.handle(config.getName() + Messages.getString("String_Node_Str") + PluginConstants.NEW_LINE+ cmd+ PluginConstants.NEW_LINE+ PluginConstants.NEW_LINE);
      System.out.println("String_Node_Str");
      errorHandler.handle(new FileReader(outputPath + "String_Node_Str"));
      if (errorHandler.hasMismatchedProbePoints() && retry) {
        ArrayList<String> exclusions=errorHandler.getFunctions();
        LaunchStapGraph l=new LaunchStapGraph();
        l.setExclusions(exclusions);
        l.scriptPath=config.getAttribute(LaunchConfigurationConstants.SCRIPT_PATH,LaunchConfigurationConstants.DEFAULT_SCRIPT_PATH);
        l.setFuncs(config.getAttribute("String_Node_Str","String_Node_Str"));
        l.setProjectName(config.getAttribute("String_Node_Str","String_Node_Str"));
        l.setPartialScriptPath(PluginConstants.getPluginLocation() + "String_Node_Str");
        l.generateScript();
        finishLaunch(launch,config,command,monitor,false);
        return;
      }
      errorHandler.finishHandling();
      return;
    }
    if (graphMode) {
      stapCmdPar=new SystemTapCommandParser(Messages.getString("String_Node_Str"),outputPath,new CallgraphView(),useColour,graphMode,config.getName());
      stapCmdPar.schedule();
    }
    monitor.worked(1);
  }
 catch (  IOException e) {
    e.printStackTrace();
  }
catch (  InterruptedException e) {
    e.printStackTrace();
  }
catch (  CoreException e) {
    e.printStackTrace();
  }
 finally {
    DocWriter dw=new DocWriter(Messages.getString("String_Node_Str"),((TextConsole)Helper.getConsoleByName(config.getName())),config.getName(),binaryArguments);
    dw.schedule();
    monitor.done();
  }
}

Fixed version (ground truth):
private void finishLaunch(ILaunch launch,ILaunchConfiguration config,String command,IProgressMonitor monitor,boolean retry){
  try {
    File workDir=getWorkingDirectory(config);
    if (workDir == null) {
      workDir=new File(System.getProperty("String_Node_Str","String_Node_Str"));
    }
    SystemTapCommandGenerator cmdGenerator=new SystemTapCommandGenerator();
    cmd=cmdGenerator.generateCommand(scriptPath,binaryPath,command,needsBinary,needsArguments,arguments,binaryArguments);
    String tmp[]=cmd.split("String_Node_Str");
    ArrayList<String> cmdLine=new ArrayList<String>();
    for (    String str : tmp) {
      cmdLine.add(str);
    }
    String[] commandArray=(String[])cmdLine.toArray(new String[cmdLine.size()]);
    if (monitor.isCanceled()) {
      return;
    }
    monitor.worked(1);
    if (launch == null) {
      return;
    }
    setDefaultSourceLocator(launch,config);
    boolean graphMode=config.getAttribute(LaunchConfigurationConstants.GRAPHICS_MODE,LaunchConfigurationConstants.DEFAULT_GRAPHICS_MODE);
    SystemTapCommandParser stapCmdPar=null;
    if (!graphMode) {
      stapCmdPar=new SystemTapCommandParser(Messages.getString("String_Node_Str"),outputPath,new CallgraphView(),useColour,graphMode,config.getName());
      stapCmdPar.schedule();
    }
    monitor.worked(1);
    Process subProcess=execute(commandArray,getEnvironment(config),workDir,true);
    if (subProcess == null) {
      SystemTapUIErrorMessages mess=new SystemTapUIErrorMessages(Messages.getString("String_Node_Str"),Messages.getString("String_Node_Str"),Messages.getString("String_Node_Str") + Messages.getString("String_Node_Str"));
      mess.schedule();
      return;
    }
    IProcess process=createNewProcess(launch,subProcess,commandArray[0]);
    process.setAttribute(IProcess.ATTR_CMDLINE,cmd);
    monitor.worked(1);
    ((TextConsole)Helper.getConsoleByName(config.getName())).activate();
    stringBuff=new StringBuffer();
    StreamListener s=new StreamListener();
    process.getStreamsProxy().getErrorStreamMonitor().addListener(s);
    while (!process.isTerminated()) {
      Thread.sleep(100);
      if (monitor.isCanceled()) {
        Runtime run=Runtime.getRuntime();
        run.exec("String_Node_Str");
        process.terminate();
        return;
      }
    }
    Thread.sleep(100);
    s.close();
    if (stapCmdPar != null)     stapCmdPar.setProcessFinished(true);
    if (process.getExitValue() != 0) {
      IDocument doc=Helper.getConsoleDocumentByName(config.getName());
      if (doc.get().length() < 1)       Thread.sleep(300);
      SystemTapErrorHandler errorHandler=new SystemTapErrorHandler();
      errorHandler.handle(config.getName() + Messages.getString("String_Node_Str") + PluginConstants.NEW_LINE+ cmd+ PluginConstants.NEW_LINE+ PluginConstants.NEW_LINE);
      errorHandler.handle(new FileReader(outputPath + "String_Node_Str"));
      if (errorHandler.hasMismatchedProbePoints() && retry) {
        errorHandler.finishHandling();
        finishLaunch(launch,config,command,monitor,false);
        return;
      }
      errorHandler.finishHandling();
      return;
    }
    if (graphMode) {
      stapCmdPar=new SystemTapCommandParser(Messages.getString("String_Node_Str"),outputPath,new CallgraphView(),useColour,graphMode,config.getName());
      stapCmdPar.schedule();
    }
    monitor.worked(1);
  }
 catch (  IOException e) {
    e.printStackTrace();
  }
catch (  InterruptedException e) {
    e.printStackTrace();
  }
catch (  CoreException e) {
    e.printStackTrace();
  }
 finally {
    DocWriter dw=new DocWriter(Messages.getString("String_Node_Str"),((TextConsole)Helper.getConsoleByName(config.getName())),config.getName(),binaryArguments);
    dw.schedule();
    monitor.done();
  }
}