Program: 133486
Project: 133486
Buggy source:
/** 
 * (non-Javadoc)
 * @see org.eclipse.ice.item.Item#process(java.lang.String)
 */
@Override public FormStatus process(String actionName){
  FormStatus retStatus=FormStatus.InfoError;
  String treeNode=null, host="String_Node_Str";
  outputFile=mooseLauncher.getOutputFile();
  if ("String_Node_Str".equals(actionName)) {
    URI appUri=URI.create(modelFiles.retrieveEntry("String_Node_Str").getValue());
    boolean isRemote="String_Node_Str".equals(appUri.getScheme());
    if (!fullTreeValidation(appUri,isRemote)) {
      return FormStatus.InfoError;
    }
    if (isRemote) {
      IRemoteConnection remoteConnection=mooseLauncher.getRemoteConnection(appUri.getHost());
      host=remoteConnection.getService(IRemoteConnectionHostService.class).getHostname();
    }
    createICEUpdaterBlock(host);
    retStatus=populateListOfLauncherFiles();
    if (retStatus != FormStatus.ReadyToProcess) {
      return retStatus;
    }
    if (isRemote) {
      mooseLauncher.setExecutable(Paths.get(appUri.getRawPath()).getFileName().toString(),"String_Node_Str",appUri.getRawPath() + "String_Node_Str");
      TableComponent hostsTable=(TableComponent)mooseLauncher.getForm().getComponent(JobLauncherForm.parallelId + 1);
      int index=hostsTable.addRow();
      ArrayList<Entry> row=hostsTable.getRow(index);
      ArrayList<Integer> selected=new ArrayList<Integer>();
      selected.add(new Integer(index));
      row.get(0).setValue(host);
      hostsTable.setSelectedRows(selected);
    }
 else {
      mooseLauncher.setExecutable(new File(appUri).getName(),"String_Node_Str",appUri.getPath() + "String_Node_Str");
    }
    ((ResourceComponent)mooseLauncher.getForm().getComponent(JobLauncherForm.outputId)).register(this);
    retStatus=mooseLauncher.process(actionName);
  }
 else   if ("String_Node_Str".equals(actionName)) {
    retStatus=mooseModel.process(actionName);
  }
  status=retStatus;
  if (status.equals(FormStatus.Processing)) {
    Thread statusThread=new Thread(new Runnable(){
      @Override public void run(){
        while (!status.equals(FormStatus.Processed)) {
          Thread.currentThread();
          try {
            Thread.sleep(100);
          }
 catch (          InterruptedException e) {
            logger.error(getClass().getName() + "String_Node_Str",e);
          }
          status=mooseLauncher.getStatus();
        }
        return;
      }
    }
);
    statusThread.start();
  }
  return retStatus;
}

Fixed version (ground truth):
/** 
 * (non-Javadoc)
 * @see org.eclipse.ice.item.Item#process(java.lang.String)
 */
@Override public FormStatus process(String actionName){
  FormStatus retStatus=FormStatus.InfoError;
  String host="String_Node_Str";
  outputFile=mooseLauncher.getOutputFile();
  if ("String_Node_Str".equals(actionName)) {
    URI appUri=URI.create(modelFiles.retrieveEntry("String_Node_Str").getValue());
    boolean isRemote="String_Node_Str".equals(appUri.getScheme());
    if (!fullTreeValidation(appUri,isRemote)) {
      return FormStatus.InfoError;
    }
    if (isRemote) {
      IRemoteConnection remoteConnection=mooseLauncher.getRemoteConnection(appUri.getHost());
      host=remoteConnection.getService(IRemoteConnectionHostService.class).getHostname();
    }
    createICEUpdaterBlock(host);
    retStatus=populateListOfLauncherFiles();
    if (retStatus != FormStatus.ReadyToProcess) {
      return retStatus;
    }
    if (isRemote) {
      mooseLauncher.setExecutable(Paths.get(appUri.getRawPath()).getFileName().toString(),"String_Node_Str",appUri.getRawPath() + "String_Node_Str");
      TableComponent hostsTable=(TableComponent)mooseLauncher.getForm().getComponent(JobLauncherForm.parallelId + 1);
      int index=hostsTable.addRow();
      ArrayList<Entry> row=hostsTable.getRow(index);
      ArrayList<Integer> selected=new ArrayList<Integer>();
      selected.add(new Integer(index));
      row.get(0).setValue(host);
      hostsTable.setSelectedRows(selected);
    }
 else {
      mooseLauncher.setExecutable(new File(appUri).getName(),"String_Node_Str",appUri.getPath() + "String_Node_Str");
    }
    ((ResourceComponent)mooseLauncher.getForm().getComponent(JobLauncherForm.outputId)).register(this);
    retStatus=mooseLauncher.process(actionName);
  }
 else   if ("String_Node_Str".equals(actionName)) {
    retStatus=mooseModel.process(actionName);
  }
  status=retStatus;
  if (status.equals(FormStatus.Processing)) {
    Thread statusThread=new Thread(new Runnable(){
      @Override public void run(){
        while (!status.equals(FormStatus.Processed)) {
          Thread.currentThread();
          try {
            Thread.sleep(100);
          }
 catch (          InterruptedException e) {
            logger.error(getClass().getName() + "String_Node_Str",e);
          }
          status=mooseLauncher.getStatus();
        }
        return;
      }
    }
);
    statusThread.start();
  }
  return retStatus;
}