Program: 31610
Project: 31610
Buggy source:
/** 
 * Scan the stats result and save them into column configure
 * @param scanner the scanners to be read
 */
private void scanStatsResult(Scanner scanner,int ccInitSize){
  while (scanner.hasNextLine()) {
    String[] raw=scanner.nextLine().trim().split("String_Node_Str");
    if (raw.length == 1) {
      continue;
    }
    if (raw.length < 25) {
      log.info("String_Node_Str" + raw.length + "String_Node_Str");
      log.info("String_Node_Str" + Arrays.toString(raw));
    }
    int columnNum=Integer.parseInt(raw[0]);
    int corrColumnNum=columnNum;
    if (columnNum >= ccInitSize) {
      corrColumnNum=columnNum % ccInitSize;
    }
    try {
      ColumnConfig basicConfig=this.columnConfigList.get(corrColumnNum);
      log.debug("String_Node_Str" + basicConfig.getColumnName() + "String_Node_Str"+ corrColumnNum);
      ColumnConfig config=null;
      if (columnNum >= ccInitSize) {
        config=new ColumnConfig();
        config.setColumnNum(columnNum);
        config.setColumnName(basicConfig.getColumnName() + "String_Node_Str" + (columnNum / ccInitSize));
        config.setVersion(basicConfig.getVersion());
        config.setColumnType(basicConfig.getColumnType());
        config.setColumnFlag(basicConfig.getColumnFlag() == ColumnFlag.Target ? ColumnFlag.Meta : basicConfig.getColumnFlag());
        this.columnConfigList.add(config);
      }
 else {
        config=basicConfig;
      }
      if (config.isHybrid()) {
        String[] splits=CommonUtils.split(raw[1],Constants.HYBRID_BIN_STR_DILIMETER);
        config.setBinBoundary(CommonUtils.stringToDoubleList(splits[0]));
        String binCategory=Base64Utils.base64Decode(splits[1]);
        config.setBinCategory(CommonUtils.stringToStringList(binCategory,CalculateStatsUDF.CATEGORY_VAL_SEPARATOR));
      }
 else       if (config.isCategorical()) {
        String binCategory=Base64Utils.base64Decode(raw[1]);
        config.setBinCategory(CommonUtils.stringToStringList(binCategory,CalculateStatsUDF.CATEGORY_VAL_SEPARATOR));
        config.setBinBoundary(null);
      }
 else {
        config.setBinBoundary(CommonUtils.stringToDoubleList(raw[1]));
        config.setBinCategory(null);
      }
      config.setBinCountNeg(CommonUtils.stringToIntegerList(raw[2]));
      config.setBinCountPos(CommonUtils.stringToIntegerList(raw[3]));
      config.setBinPosCaseRate(CommonUtils.stringToDoubleList(raw[5]));
      config.setBinLength(config.getBinCountNeg().size());
      config.setKs(parseDouble(raw[6]));
      config.setIv(parseDouble(raw[7]));
      config.setMax(parseDouble(raw[8]));
      config.setMin(parseDouble(raw[9]));
      config.setMean(parseDouble(raw[10]));
      config.setStdDev(parseDouble(raw[11],Double.NaN));
      config.setColumnType(ColumnType.of(raw[12]));
      config.setMedian(parseDouble(raw[13]));
      config.setMissingCnt(parseLong(raw[14]));
      config.setTotalCount(parseLong(raw[15]));
      config.setMissingPercentage(parseDouble(raw[16]));
      config.setBinWeightedNeg(CommonUtils.stringToDoubleList(raw[17]));
      config.setBinWeightedPos(CommonUtils.stringToDoubleList(raw[18]));
      config.getColumnStats().setWoe(parseDouble(raw[19]));
      config.getColumnStats().setWeightedWoe(parseDouble(raw[20]));
      config.getColumnStats().setWeightedKs(parseDouble(raw[21]));
      config.getColumnStats().setWeightedIv(parseDouble(raw[22]));
      config.getColumnBinning().setBinCountWoe(CommonUtils.stringToDoubleList(raw[23]));
      config.getColumnBinning().setBinWeightedWoe(CommonUtils.stringToDoubleList(raw[24]));
      if (raw.length >= 26) {
        config.getColumnStats().setSkewness(parseDouble(raw[25]));
      }
      if (raw.length >= 27) {
        config.getColumnStats().setKurtosis(parseDouble(raw[26]));
      }
      if (raw.length >= 30) {
        config.getColumnStats().setValidNumCount(parseLong(raw[29]));
      }
      if (raw.length >= 31) {
        config.getColumnStats().setDistinctCount(parseLong(raw[30]));
      }
      if (raw.length >= 32) {
        if (raw[31] != null) {
          List<String> sampleValues=Arrays.asList(raw[31].split("String_Node_Str"));
          config.setSampleValues(sampleValues);
        }
      }
      if (raw.length >= 33) {
        config.getColumnStats().set25th(parseDouble(raw[32]));
      }
      if (raw.length >= 34) {
        config.getColumnStats().set75th(parseDouble(raw[33]));
      }
    }
 catch (    Exception e) {
      log.error(String.format("String_Node_Str",columnNum,this.columnConfigList.get(corrColumnNum).getColumnName(),e.getMessage()),e);
      continue;
    }
  }
}

Fixed version (ground truth):
/** 
 * Scan the stats result and save them into column configure
 * @param scanner the scanners to be read
 */
private void scanStatsResult(Scanner scanner,int ccInitSize){
  while (scanner.hasNextLine()) {
    String[] raw=scanner.nextLine().trim().split("String_Node_Str");
    if (raw.length == 1) {
      continue;
    }
    if (raw.length < 25) {
      log.info("String_Node_Str" + raw.length + "String_Node_Str");
      log.info("String_Node_Str" + Arrays.toString(raw));
    }
    int columnNum=Integer.parseInt(raw[0]);
    int corrColumnNum=columnNum;
    if (columnNum >= ccInitSize) {
      corrColumnNum=columnNum % ccInitSize;
    }
    try {
      ColumnConfig basicConfig=this.columnConfigList.get(corrColumnNum);
      log.debug("String_Node_Str" + basicConfig.getColumnName() + "String_Node_Str"+ corrColumnNum);
      ColumnConfig config=null;
      if (columnNum >= ccInitSize) {
        config=new ColumnConfig();
        config.setColumnNum(columnNum);
        config.setColumnName(basicConfig.getColumnName() + "String_Node_Str" + (columnNum / ccInitSize));
        config.setVersion(basicConfig.getVersion());
        config.setColumnType(basicConfig.getColumnType());
        config.setColumnFlag(basicConfig.getColumnFlag() == ColumnFlag.Target ? ColumnFlag.Meta : basicConfig.getColumnFlag());
        log.info("String_Node_Str" + basicConfig.getColumnName() + "String_Node_Str"+ corrColumnNum+ "String_Node_Str"+ columnNum+ "String_Node_Str"+ config.getColumnType());
        this.columnConfigList.add(config);
      }
 else {
        config=basicConfig;
      }
      if (config.isHybrid()) {
        String[] splits=CommonUtils.split(raw[1],Constants.HYBRID_BIN_STR_DILIMETER);
        config.setBinBoundary(CommonUtils.stringToDoubleList(splits[0]));
        String binCategory=Base64Utils.base64Decode(splits[1]);
        config.setBinCategory(CommonUtils.stringToStringList(binCategory,CalculateStatsUDF.CATEGORY_VAL_SEPARATOR));
      }
 else       if (config.isCategorical()) {
        String binCategory=Base64Utils.base64Decode(raw[1]);
        config.setBinCategory(CommonUtils.stringToStringList(binCategory,CalculateStatsUDF.CATEGORY_VAL_SEPARATOR));
        config.setBinBoundary(null);
      }
 else {
        config.setBinBoundary(CommonUtils.stringToDoubleList(raw[1]));
        config.setBinCategory(null);
      }
      config.setBinCountNeg(CommonUtils.stringToIntegerList(raw[2]));
      config.setBinCountPos(CommonUtils.stringToIntegerList(raw[3]));
      config.setBinPosCaseRate(CommonUtils.stringToDoubleList(raw[5]));
      config.setBinLength(config.getBinCountNeg().size());
      config.setKs(parseDouble(raw[6]));
      config.setIv(parseDouble(raw[7]));
      config.setMax(parseDouble(raw[8]));
      config.setMin(parseDouble(raw[9]));
      config.setMean(parseDouble(raw[10]));
      config.setStdDev(parseDouble(raw[11],Double.NaN));
      config.setColumnType(ColumnType.of(raw[12]));
      config.setMedian(parseDouble(raw[13]));
      config.setMissingCnt(parseLong(raw[14]));
      config.setTotalCount(parseLong(raw[15]));
      config.setMissingPercentage(parseDouble(raw[16]));
      config.setBinWeightedNeg(CommonUtils.stringToDoubleList(raw[17]));
      config.setBinWeightedPos(CommonUtils.stringToDoubleList(raw[18]));
      config.getColumnStats().setWoe(parseDouble(raw[19]));
      config.getColumnStats().setWeightedWoe(parseDouble(raw[20]));
      config.getColumnStats().setWeightedKs(parseDouble(raw[21]));
      config.getColumnStats().setWeightedIv(parseDouble(raw[22]));
      config.getColumnBinning().setBinCountWoe(CommonUtils.stringToDoubleList(raw[23]));
      config.getColumnBinning().setBinWeightedWoe(CommonUtils.stringToDoubleList(raw[24]));
      if (raw.length >= 26) {
        config.getColumnStats().setSkewness(parseDouble(raw[25]));
      }
      if (raw.length >= 27) {
        config.getColumnStats().setKurtosis(parseDouble(raw[26]));
      }
      if (raw.length >= 30) {
        config.getColumnStats().setValidNumCount(parseLong(raw[29]));
      }
      if (raw.length >= 31) {
        config.getColumnStats().setDistinctCount(parseLong(raw[30]));
      }
      if (raw.length >= 32) {
        if (raw[31] != null) {
          List<String> sampleValues=Arrays.asList(raw[31].split("String_Node_Str"));
          config.setSampleValues(sampleValues);
        }
      }
      if (raw.length >= 33) {
        config.getColumnStats().set25th(parseDouble(raw[32]));
      }
      if (raw.length >= 34) {
        config.getColumnStats().set75th(parseDouble(raw[33]));
      }
    }
 catch (    Exception e) {
      log.error(String.format("String_Node_Str",columnNum,this.columnConfigList.get(corrColumnNum).getColumnName(),e.getMessage()),e);
      continue;
    }
  }
}