Program: 31825
Project: 31825
Buggy source:
/** 
 * Scan the stats result and save them into column configure
 * @param scanner
 */
private void scanStatsResult(Scanner scanner){
  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]);
    try {
      ColumnConfig config=this.columnConfigList.get(columnNum);
      if (config.isCategorical()) {
        String binCategory=Base64Utils.base64Decode(raw[1]);
        config.setBinCategory(CommonUtils.stringToStringList(binCategory,CalculateStatsUDF.CATEGORY_VAL_SEPARATOR));
      }
 else {
        config.setBinBoundary(CommonUtils.stringToDoubleList(raw[1]));
      }
      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));
      if (raw[12].equals("String_Node_Str")) {
        config.setColumnType(ColumnConfig.ColumnType.N);
      }
 else {
        config.setColumnType(ColumnConfig.ColumnType.C);
      }
      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);
        }
      }
    }
 catch (    Exception e) {
      log.error(String.format("String_Node_Str",columnNum,this.columnConfigList.get(columnNum).getColumnName(),e.getMessage()),e);
      continue;
    }
  }
}

Fixed version (ground truth):
/** 
 * Scan the stats result and save them into column configure
 * @param scanner
 */
private void scanStatsResult(Scanner scanner){
  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]);
    try {
      ColumnConfig config=this.columnConfigList.get(columnNum);
      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));
      if (raw[12].equals("String_Node_Str")) {
        config.setColumnType(ColumnConfig.ColumnType.N);
      }
 else {
        config.setColumnType(ColumnConfig.ColumnType.C);
      }
      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);
        }
      }
    }
 catch (    Exception e) {
      log.error(String.format("String_Node_Str",columnNum,this.columnConfigList.get(columnNum).getColumnName(),e.getMessage()),e);
      continue;
    }
  }
}