Program: 2697
Project: 2697
Buggy source:
public synchronized void launchLocalProject(IProject project,ILaunchConfiguration configuration,String mode,ILaunch launch,final IProgressMonitor monitor) throws CoreException {
  try {
    rhodesLogHelper.stopLog();
    setStandartConsoleOutputIsOff();
    ConsoleHelper.getBuildConsole().clear();
    ConsoleHelper.getBuildConsole().show();
    setupConfigAttributes(configuration);
    RunType runType=getRunType(configuration);
    if (m_projectName == null || m_projectName.length() == 0 || runType.id == null) {
      throw new IllegalArgumentException("String_Node_Str");
    }
    if (!project.isOpen()) {
      throw new IllegalArgumentException("String_Node_Str" + project.getName() + "String_Node_Str");
    }
    CancelMonitorObserver cancelObserver=new CancelMonitorObserver(monitor);
    try {
      Future<Object> cancelTask=executor.submit(new CleanProject(project,m_isClean,m_platformType,monitor));
      cancelTask.get();
      executor.submit(cancelObserver);
      if (mode.equals(ILaunchManager.DEBUG_MODE)) {
        DebugTarget target=null;
        ShowPerspectiveJob job=new ShowPerspectiveJob("String_Node_Str",DebugConstants.debugPerspectiveId);
        job.schedule();
        try {
          OSHelper.killProcess("String_Node_Str");
        }
 catch (        Exception e) {
          e.printStackTrace();
        }
        Future<IProcess> debugTask=executor.submit(new BuildProjectAsDebug(new RhodesConfigurationRO(configuration),launch,m_startPathOverride,m_additionalRubyExtensions));
        IProcess debugProcess=debugTask.get();
        target=new DebugTarget(launch,null,project,runType,m_platformType);
        target.setProcess(debugProcess);
        launch.addDebugTarget(target);
      }
 else {
        Future<Boolean> releaseTask=executor.submit(new BuildProjectAsRelease(new RhodesConfigurationRO(configuration),launch,m_startPathOverride,m_additionalRubyExtensions));
        releaseTask.get();
      }
    }
 catch (    InterruptedException e) {
      e.printStackTrace();
    }
catch (    ExecutionException e) {
      e.printStackTrace();
    }
    cancelObserver.finishedTask();
    monitor.done();
  }
 catch (  IllegalArgumentException e) {
    DialogUtils.error("String_Node_Str",e.getMessage());
  }
}

Fixed version (ground truth):
public synchronized void launchLocalProject(IProject project,ILaunchConfiguration configuration,String mode,ILaunch launch,final IProgressMonitor monitor) throws CoreException {
  try {
    rhodesLogHelper.stopLog();
    setStandartConsoleOutputIsOff();
    ConsoleHelper.getBuildConsole().clear();
    ConsoleHelper.getBuildConsole().show();
    setupConfigAttributes(configuration);
    RunType runType=getRunType(configuration);
    if (m_projectName == null || m_projectName.length() == 0 || runType.id == null) {
      throw new IllegalArgumentException("String_Node_Str");
    }
    if (!project.isOpen()) {
      throw new IllegalArgumentException("String_Node_Str" + project.getName() + "String_Node_Str");
    }
    CancelMonitorObserver cancelObserver=new CancelMonitorObserver(monitor);
    RhodesConfigurationRO rc=new RhodesConfigurationRO(configuration);
    try {
      Future<Object> cleanTask=executor.submit(new CleanProject(project,m_isClean,m_platformType,monitor));
      cleanTask.get();
      executor.submit(cancelObserver);
      if (mode.equals(ILaunchManager.DEBUG_MODE)) {
        ShowPerspectiveJob job=new ShowPerspectiveJob("String_Node_Str",DebugConstants.debugPerspectiveId);
        job.schedule();
        try {
          OSHelper.killProcess("String_Node_Str");
        }
 catch (        Exception e) {
          e.printStackTrace();
        }
        Future<IProcess> debugTask=executor.submit(new BuildProjectAsDebug(rc,launch,m_startPathOverride,m_additionalRubyExtensions,monitor));
        IProcess debugProcess=debugTask.get();
        DebugTarget target=new DebugTarget(launch,null,project,runType,m_platformType);
        target.setProcess(debugProcess);
        launch.addDebugTarget(target);
      }
 else {
        Future<Boolean> releaseTask=executor.submit(new BuildProjectAsRelease(rc,launch,m_startPathOverride,m_additionalRubyExtensions,monitor));
        releaseTask.get();
      }
    }
 catch (    InterruptedException e) {
      e.printStackTrace();
    }
catch (    ExecutionException e) {
      e.printStackTrace();
    }
    cancelObserver.finishedTask();
    monitor.done();
  }
 catch (  IllegalArgumentException e) {
    DialogUtils.error("String_Node_Str",e.getMessage());
  }
}