Program: 140847
Project: 140847
Buggy source:
/** 
 * starts the config
 * @throws IOException 
 * @throws ExecuteException 
 */
public void start() throws ExecuteException, IOException {
  TaskController controller=new TaskController();
  DataGeneratorController dataController=new DataGeneratorController();
  String suiteID=generateSuiteID();
  Integer expID=0;
  String[] datasetsIDV=config.getStringArray(COMMON.CONFIG_DATASETS);
  String[] connectionsIDV=config.getStringArray(COMMON.CONFIG_CONNECTIONS);
  String[] tasksIDV=config.getStringArray(COMMON.CONFIG_TASKS);
  for (  String datasetIDV : datasetsIDV) {
    String datasetID=config.getString(datasetIDV + CONSTANTS.NAME_SUFFIX);
    String dataGenClass=config.getString(datasetIDV + CONSTANTS.DATA_GENERATOR_CLASS_NAME);
    String[] dataGenConstructorArgs=config.getStringArray(datasetIDV + CONSTANTS.CONSTRUCTOR_ARGS);
    expID++;
    Properties dataProperties=new Properties();
    if (dataGenClass != null) {
      dataProperties.put(COMMON.DATAGEN_CLASS_NAME,dataGenClass);
      if (dataGenConstructorArgs != null)       dataProperties.put(COMMON.DATAGEN_CONSTRUCTOR_ARGS,dataGenConstructorArgs);
      dataController.start(dataProperties);
    }
    Integer taskID=0;
    for (    String conIDV : connectionsIDV) {
      String conID=config.getString(conIDV + CONSTANTS.NAME_SUFFIX);
      String service=config.getString(conIDV + CONSTANTS.SERVICE_SUFFIX);
      String updateService=config.getString(conIDV + CONSTANTS.UPDATE_SERVICE_SUFFIX);
      String user=null, pwd=null;
      if (config.containsKey(conIDV + CONSTANTS.SERVICE_USER) && config.containsKey(conIDV + CONSTANTS.SERVICE_PASSWORD)) {
        user=config.getString(conIDV + CONSTANTS.SERVICE_USER);
        pwd=config.getString(conIDV + CONSTANTS.SERVICE_PASSWORD);
      }
      for (      String taskIDV : tasksIDV) {
        taskID++;
        Properties taskProperties=new Properties();
        String[] ids=new String[]{suiteID,suiteID + "String_Node_Str" + expID,suiteID + "String_Node_Str" + expID+ "String_Node_Str"+ taskID.toString(),datasetID,conID};
        List<Object> constructor=new LinkedList<Object>();
        List<Object> classes=new LinkedList<Object>();
        constructor.add(ids);
        classes.add(String[].class);
        constructor.add(new String[]{service,updateService,user,pwd});
        classes.add(String[].class);
        Configuration taskConfig=createTaskConfig(config,taskIDV);
        taskProperties.put("String_Node_Str",taskConfig);
        taskProperties.put(COMMON.CLASS_NAME,config.getString(taskIDV + CONSTANTS.CLASS_SUFFIX));
        taskProperties.put(COMMON.CONSTRUCTOR_ARGS,constructor.toArray());
        taskProperties.put(COMMON.CONSTRUCTOR_ARGS_CLASSES,classes.toArray(new Class[]{}));
        String[] args=new String[]{datasetID,conID,taskID + "String_Node_Str"};
        if (config.containsKey(CONSTANTS.PRE_SCRIPT_HOOK))         ScriptExecutor.exec(config.getString(CONSTANTS.PRE_SCRIPT_HOOK),args);
        controller.startTask(taskProperties);
        if (config.containsKey(CONSTANTS.POST_SCRIPT_HOOK))         ScriptExecutor.exec(config.getString(CONSTANTS.POST_SCRIPT_HOOK),args);
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * starts the config
 * @throws IOException 
 * @throws ExecuteException 
 */
public void start() throws ExecuteException, IOException {
  TaskController controller=new TaskController();
  DataGeneratorController dataController=new DataGeneratorController();
  String suiteID=generateSuiteID();
  Integer expID=0;
  String[] datasetsIDV=config.getStringArray(COMMON.CONFIG_DATASETS);
  String[] connectionsIDV=config.getStringArray(COMMON.CONFIG_CONNECTIONS);
  String[] tasksIDV=config.getStringArray(COMMON.CONFIG_TASKS);
  for (  String datasetIDV : datasetsIDV) {
    String datasetID=config.getString(datasetIDV + CONSTANTS.NAME_SUFFIX);
    String dataGenClass=config.getString(datasetIDV + CONSTANTS.DATA_GENERATOR_CLASS_NAME);
    String[] dataGenConstructorArgs=config.getStringArray(datasetIDV + CONSTANTS.CONSTRUCTOR_ARGS);
    expID++;
    Properties dataProperties=new Properties();
    if (dataGenClass != null) {
      dataProperties.put(COMMON.DATAGEN_CLASS_NAME,dataGenClass);
      if (dataGenConstructorArgs != null)       dataProperties.put(COMMON.DATAGEN_CONSTRUCTOR_ARGS,dataGenConstructorArgs);
      dataController.start(dataProperties);
    }
    Integer taskID=0;
    for (    String conIDV : connectionsIDV) {
      String conID=config.getString(conIDV + CONSTANTS.NAME_SUFFIX);
      String service=config.getString(conIDV + CONSTANTS.SERVICE_SUFFIX);
      String updateService=config.getString(conIDV + CONSTANTS.UPDATE_SERVICE_SUFFIX);
      String user=null;
      String pwd=null;
      if (config.containsKey(conIDV + CONSTANTS.SERVICE_USER) && config.containsKey(conIDV + CONSTANTS.SERVICE_PASSWORD)) {
        user=config.getString(conIDV + CONSTANTS.SERVICE_USER);
        pwd=config.getString(conIDV + CONSTANTS.SERVICE_PASSWORD);
      }
      for (      String taskIDV : tasksIDV) {
        taskID++;
        Properties taskProperties=new Properties();
        String[] ids=new String[]{suiteID,suiteID + "String_Node_Str" + expID,suiteID + "String_Node_Str" + expID+ "String_Node_Str"+ taskID.toString(),datasetID,conID};
        List<Object> constructor=new LinkedList<Object>();
        List<Object> classes=new LinkedList<Object>();
        constructor.add(ids);
        classes.add(String[].class);
        constructor.add(new String[]{service,updateService,user,pwd});
        classes.add(String[].class);
        Configuration taskConfig=createTaskConfig(config,taskIDV);
        taskProperties.put("String_Node_Str",taskConfig);
        taskProperties.put(COMMON.CLASS_NAME,config.getString(taskIDV + CONSTANTS.CLASS_SUFFIX));
        taskProperties.put(COMMON.CONSTRUCTOR_ARGS,constructor.toArray());
        taskProperties.put(COMMON.CONSTRUCTOR_ARGS_CLASSES,classes.toArray(new Class[]{}));
        String[] args=new String[]{datasetID,conID,taskID + "String_Node_Str"};
        if (config.containsKey(CONSTANTS.PRE_SCRIPT_HOOK))         ScriptExecutor.exec(config.getString(CONSTANTS.PRE_SCRIPT_HOOK),args);
        controller.startTask(taskProperties);
        if (config.containsKey(CONSTANTS.POST_SCRIPT_HOOK))         ScriptExecutor.exec(config.getString(CONSTANTS.POST_SCRIPT_HOOK),args);
      }
    }
  }
}