Program: 2828
Project: 2828
Buggy source:
@SuppressWarnings("String_Node_Str") public synchronized void launch(ILaunchConfiguration configuration,String mode,ILaunch launch,final IProgressMonitor monitor) throws CoreException {
  try {
    setProcessFinished(false);
    rhodesLogHelper.stopLog();
    m_projectName=configuration.getAttribute(projectNameCfgAttribute,"String_Node_Str");
    m_platformName=configuration.getAttribute(platforrmCfgAttribute,"String_Node_Str");
    m_appLogName=configuration.getAttribute(prjectLogFileName,"String_Node_Str");
    m_isClean=configuration.getAttribute(isCleanAttribute,false);
    m_onDevice=configuration.getAttribute(platforrmDeviceCfgAttribute,false);
    final EPlatformType type=RhodesAdapter.convertPlatformFromDesc(m_platformName);
    if (m_projectName == null || m_projectName.length() == 0 || m_platformName == null || m_platformName.length() == 0) {
      throw new IllegalArgumentException("String_Node_Str");
    }
    final IProject project=ResourcesPlugin.getWorkspace().getRoot().getProject(m_projectName);
    if (!project.isOpen()) {
      throw new IllegalArgumentException("String_Node_Str");
    }
    if (m_isClean) {
      ConsoleHelper.consolePrint("String_Node_Str");
      rhodesAdapter.cleanPlatform(project.getLocation().toOSString(),type);
    }
    Thread cancelingThread=new Thread(new Runnable(){
      @Override public void run(){
        try {
          ConsoleHelper.consolePrint("String_Node_Str");
          if (rhodesAdapter.buildApp(project.getLocation().toOSString(),type,m_onDevice) == 0) {
            ConsoleHelper.showAppConsole();
            startLogOutput(project,type);
          }
 else {
            ConsoleHelper.consolePrint("String_Node_Str");
          }
          setProcessFinished(true);
        }
 catch (        Exception e) {
          e.printStackTrace();
        }
      }
    }
);
    cancelingThread.start();
    while (true) {
      try {
        if (monitor.isCanceled()) {
          OSHelper.killProcess("String_Node_Str","String_Node_Str");
          return;
        }
        if (getProcessFinished()) {
          return;
        }
        Thread.sleep(100);
      }
 catch (      InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
 catch (  IllegalArgumentException e) {
    ConsoleHelper.consolePrint(e.getMessage());
  }
catch (  Exception e) {
    e.printStackTrace();
  }
  monitor.done();
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") public synchronized void launch(ILaunchConfiguration configuration,String mode,ILaunch launch,final IProgressMonitor monitor) throws CoreException {
  try {
    setProcessFinished(false);
    rhodesLogHelper.stopLog();
    ConsoleHelper.cleanBuildConsole();
    m_projectName=configuration.getAttribute(projectNameCfgAttribute,"String_Node_Str");
    m_platformName=configuration.getAttribute(platforrmCfgAttribute,"String_Node_Str");
    m_appLogName=configuration.getAttribute(prjectLogFileName,"String_Node_Str");
    m_isClean=configuration.getAttribute(isCleanAttribute,false);
    m_onDevice=configuration.getAttribute(platforrmDeviceCfgAttribute,false);
    final EPlatformType type=RhodesAdapter.convertPlatformFromDesc(m_platformName);
    if (m_projectName == null || m_projectName.length() == 0 || m_platformName == null || m_platformName.length() == 0) {
      throw new IllegalArgumentException("String_Node_Str");
    }
    final IProject project=ResourcesPlugin.getWorkspace().getRoot().getProject(m_projectName);
    if (!project.isOpen()) {
      throw new IllegalArgumentException("String_Node_Str");
    }
    if (m_isClean) {
      ConsoleHelper.consolePrint("String_Node_Str");
      rhodesAdapter.cleanPlatform(project.getLocation().toOSString(),type);
    }
    Thread cancelingThread=new Thread(new Runnable(){
      @Override public void run(){
        try {
          ConsoleHelper.consolePrint("String_Node_Str");
          if (rhodesAdapter.buildApp(project.getLocation().toOSString(),type,m_onDevice) == 0) {
            ConsoleHelper.showAppConsole();
            startLogOutput(project,type);
          }
 else {
            ConsoleHelper.consolePrint("String_Node_Str");
          }
          setProcessFinished(true);
        }
 catch (        Exception e) {
          e.printStackTrace();
        }
      }
    }
);
    cancelingThread.start();
    while (true) {
      try {
        if (monitor.isCanceled()) {
          OSHelper.killProcess("String_Node_Str","String_Node_Str");
          return;
        }
        if (getProcessFinished()) {
          return;
        }
        Thread.sleep(100);
      }
 catch (      InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
 catch (  IllegalArgumentException e) {
    ConsoleHelper.consolePrint(e.getMessage());
  }
catch (  Exception e) {
    e.printStackTrace();
  }
  monitor.done();
}