Program: 70111
Project: 70111
Buggy source:
private static void addArguments(ArrayList<String> lArgs,NIOTask nt,NIOWorker nw) throws JobExecutionException, SerializedObjectException {
  lArgs.add(Boolean.toString(NIOTracer.isActivated()));
  lArgs.add(Integer.toString(nt.getTaskId()));
  lArgs.add(Boolean.toString(nt.isWorkerDebug()));
  lArgs.add(STORAGE_CONF);
  if (nt.getMethodType() != MethodType.METHOD) {
    throw new JobExecutionException(ERROR_UNSUPPORTED_JOB_TYPE);
  }
  MethodImplementation impl=(MethodImplementation)nt.getMethodImplementation();
  lArgs.add(String.valueOf(impl.getMethodType()));
  lArgs.add(impl.getDeclaringClass());
  lArgs.add(impl.getAlternativeMethodName());
  lArgs.add(String.valueOf(nt.getSlaveWorkersNodeNames().size()));
  lArgs.addAll(nt.getSlaveWorkersNodeNames());
  lArgs.add(String.valueOf(nt.getResourceDescription().getTotalCPUComputingUnits()));
  lArgs.add(Boolean.toString(nt.isHasTarget()));
  if (nt.isHasReturn()) {
    DataType returnType=nt.getParams().getLast().getType();
    lArgs.add(Integer.toString(returnType.ordinal()));
  }
 else {
    lArgs.add("String_Node_Str");
  }
  lArgs.add(Integer.toString(nt.getNumParams()));
  for (  NIOParam np : nt.getParams()) {
    DataType type=np.getType();
    lArgs.add(Integer.toString(type.ordinal()));
    lArgs.add(Integer.toString(np.getStream().ordinal()));
    lArgs.add(np.getPrefix());
switch (type) {
case FILE_T:
      String destFile=new File(np.getValue().toString()).getName();
    String originalFile="String_Node_Str";
  if (np.getData() != null) {
    originalFile=np.getData().getName();
  }
lArgs.add(originalFile + "String_Node_Str" + destFile+ "String_Node_Str"+ np.isPreserveSourceData()+ "String_Node_Str"+ np.isWriteFinalValue()+ "String_Node_Str"+ np.getOriginalName());
break;
case OBJECT_T:
case PSCO_T:
case EXTERNAL_OBJECT_T:
lArgs.add(np.getValue().toString());
lArgs.add(np.isWriteFinalValue() ? "String_Node_Str" : "String_Node_Str");
break;
case STRING_T:
String value=np.getValue().toString();
String[] vals=value.split("String_Node_Str");
int numSubStrings=vals.length;
lArgs.add(Integer.toString(numSubStrings));
for (String v : vals) {
lArgs.add(v);
}
break;
default :
lArgs.add(np.getValue().toString());
}
}
}

Fixed version (ground truth):
private static void addArguments(ArrayList<String> lArgs,NIOTask nt,NIOWorker nw) throws JobExecutionException, SerializedObjectException {
  lArgs.add(Boolean.toString(NIOTracer.isActivated()));
  lArgs.add(Integer.toString(nt.getTaskId()));
  lArgs.add(Boolean.toString(nt.isWorkerDebug()));
  lArgs.add(STORAGE_CONF);
  if (nt.getMethodType() != MethodType.METHOD) {
    throw new JobExecutionException(ERROR_UNSUPPORTED_JOB_TYPE);
  }
  MethodImplementation impl=(MethodImplementation)nt.getMethodImplementation();
  lArgs.add(String.valueOf(impl.getMethodType()));
  lArgs.add(impl.getDeclaringClass());
  lArgs.add(impl.getAlternativeMethodName());
  lArgs.add(String.valueOf(nt.getSlaveWorkersNodeNames().size()));
  lArgs.addAll(nt.getSlaveWorkersNodeNames());
  lArgs.add(String.valueOf(nt.getResourceDescription().getTotalCPUComputingUnits()));
  lArgs.add(Boolean.toString(nt.isHasTarget()));
  if (nt.isHasReturn()) {
    DataType returnType=nt.getParams().getLast().getType();
    lArgs.add(Integer.toString(returnType.ordinal()));
  }
 else {
    lArgs.add("String_Node_Str");
  }
  lArgs.add(Integer.toString(nt.getNumParams()));
  for (  NIOParam np : nt.getParams()) {
    DataType type=np.getType();
    lArgs.add(Integer.toString(type.ordinal()));
    lArgs.add(Integer.toString(np.getStream().ordinal()));
    lArgs.add(np.getPrefix());
switch (type) {
case FILE_T:
      String originalFile="String_Node_Str";
    if (np.getData() != null) {
      originalFile=np.getData().getName();
    }
  String destFile=new File(np.getValue().toString()).getName();
if (!isRuntimeRenamed(destFile)) {
  destFile=originalFile;
}
lArgs.add(originalFile + "String_Node_Str" + destFile+ "String_Node_Str"+ np.isPreserveSourceData()+ "String_Node_Str"+ np.isWriteFinalValue()+ "String_Node_Str"+ np.getOriginalName());
break;
case OBJECT_T:
case PSCO_T:
case EXTERNAL_OBJECT_T:
lArgs.add(np.getValue().toString());
lArgs.add(np.isWriteFinalValue() ? "String_Node_Str" : "String_Node_Str");
break;
case STRING_T:
String value=np.getValue().toString();
String[] vals=value.split("String_Node_Str");
int numSubStrings=vals.length;
lArgs.add(Integer.toString(numSubStrings));
for (String v : vals) {
lArgs.add(v);
}
break;
default :
lArgs.add(np.getValue().toString());
}
}
}