Program: 31927
Project: 31927
Buggy source:
@Override protected void map(LongWritable key,Text value,Context context) throws IOException, InterruptedException {
  recordCount+=1L;
  int index=0, inputsIndex=0, outputsIndex=0;
  for (  String input : DEFAULT_SPLITTER.split(value.toString())) {
    double doubleValue=NumberFormatUtils.getDouble(input.trim(),0.0d);
    if (index == this.columnConfigList.size()) {
      break;
    }
 else {
      ColumnConfig columnConfig=this.columnConfigList.get(index);
      if (columnConfig != null && columnConfig.isTarget()) {
        this.outputs[outputsIndex++]=doubleValue;
      }
 else {
        if (this.inputNodeCount == this.candidateCount) {
          if (!columnConfig.isMeta() && !columnConfig.isTarget() && CommonUtils.isGoodCandidate(columnConfig)) {
            inputs[inputsIndex]=doubleValue;
            columnIndexes[inputsIndex++]=columnConfig.getColumnNum();
          }
        }
 else {
          if (columnConfig != null && !columnConfig.isMeta() && !columnConfig.isTarget() && columnConfig.isFinalSelect()) {
            inputs[inputsIndex]=doubleValue;
            columnIndexes[inputsIndex++]=columnConfig.getColumnNum();
          }
        }
      }
    }
    index++;
  }
  double oldValue=0.0d;
  double candidateModelScore=0d;
  if (Constants.FILTER_BY_SE.equalsIgnoreCase(this.filterBy)) {
    candidateModelScore=this.model.compute(new BasicMLData(inputs)).getData()[0];
  }
  List<Callable<SEColResult>> tasks=new ArrayList<Callable<SEColResult>>();
  for (int i=0; i < this.inputs.length; i++) {
    oldValue=this.inputs[i];
    this.inputs[i]=0d;
    final double[] seInputs=new double[this.inputs.length];
    System.arraycopy(this.inputs,0,seInputs,0,this.inputs.length);
    final int columnId=i;
    Callable<SEColResult> task=new Callable<SEColResult>(){
      @Override public SEColResult call() throws Exception {
        SEColResult seColResult=new SEColResult();
        seColResult.setColumnId(columnId);
        seColResult.setScore(model.compute(new BasicMLData(seInputs)).getData()[0]);
        return seColResult;
      }
    }
;
    tasks.add(task);
    this.inputs[i]=oldValue;
  }
  List<SEColResult> results=this.executorManager.submitTasksAndWaitResults(tasks);
  for (  SEColResult seColResult : results) {
    double currentModelScore=seColResult.getScore();
    double diff=0d;
    if (Constants.FILTER_BY_ST.equalsIgnoreCase(this.filterBy)) {
      diff=this.outputs[0] - currentModelScore;
    }
 else {
      diff=candidateModelScore - currentModelScore;
    }
    ColumnInfo columnInfo=this.results.get(this.columnIndexes[seColResult.getColumnId()]);
    if (columnInfo == null) {
      columnInfo=new ColumnInfo();
      columnInfo.setSumScoreDiff(Math.abs(diff));
      columnInfo.setSumSquareScoreDiff(power2(diff));
    }
 else {
      columnInfo.setSumScoreDiff(columnInfo.getSumScoreDiff() + Math.abs(diff));
      columnInfo.setSumSquareScoreDiff(columnInfo.getSumSquareScoreDiff() + power2(diff));
    }
    this.results.put(this.columnIndexes[seColResult.getColumnId()],columnInfo);
  }
  if (this.recordCount % 1000 == 0) {
    LOG.info("String_Node_Str",this.recordCount);
  }
}

Fixed version (ground truth):
@Override protected void map(LongWritable key,Text value,Context context) throws IOException, InterruptedException {
  recordCount+=1L;
  int index=0, inputsIndex=0, outputsIndex=0;
  for (  String input : DEFAULT_SPLITTER.split(value.toString())) {
    double doubleValue=NumberFormatUtils.getDouble(input.trim(),0.0d);
    if (index == this.columnConfigList.size()) {
      break;
    }
 else {
      ColumnConfig columnConfig=this.columnConfigList.get(index);
      if (columnConfig != null && columnConfig.isTarget()) {
        this.outputs[outputsIndex++]=doubleValue;
      }
 else {
        if (this.inputNodeCount == this.candidateCount) {
          if (!columnConfig.isMeta() && !columnConfig.isTarget() && CommonUtils.isGoodCandidate(columnConfig)) {
            inputs[inputsIndex]=doubleValue;
            columnIndexes[inputsIndex++]=columnConfig.getColumnNum();
          }
        }
 else {
          if (columnConfig != null && !columnConfig.isMeta() && !columnConfig.isTarget() && columnConfig.isFinalSelect()) {
            inputs[inputsIndex]=doubleValue;
            columnIndexes[inputsIndex++]=columnConfig.getColumnNum();
          }
        }
      }
    }
    index++;
  }
  double oldValue=0.0d;
  this.inputsMLData.setData(this.inputs);
  double candidateModelScore=0d;
  if (Constants.FILTER_BY_SE.equalsIgnoreCase(this.filterBy)) {
    candidateModelScore=this.model.compute(new BasicMLData(inputs)).getData()[0];
  }
  for (int i=0; i < this.inputs.length; i++) {
    oldValue=this.inputs[i];
    this.inputs[i]=0d;
    this.inputsMLData.setData(this.inputs);
    double currentModelScore=this.model.compute(new BasicMLData(inputs)).getData()[0];
    double diff=0d;
    if (Constants.FILTER_BY_ST.equalsIgnoreCase(this.filterBy)) {
      diff=this.outputs[0] - currentModelScore;
    }
 else {
      diff=candidateModelScore - currentModelScore;
    }
    ColumnInfo columnInfo=this.results.get(this.columnIndexes[i]);
    if (columnInfo == null) {
      columnInfo=new ColumnInfo();
      columnInfo.setSumScoreDiff(Math.abs(diff));
      columnInfo.setSumSquareScoreDiff(power2(diff));
    }
 else {
      columnInfo.setSumScoreDiff(columnInfo.getSumScoreDiff() + Math.abs(diff));
      columnInfo.setSumSquareScoreDiff(columnInfo.getSumSquareScoreDiff() + power2(diff));
    }
    this.results.put(this.columnIndexes[i],columnInfo);
    this.inputs[i]=oldValue;
  }
  if (this.recordCount % 1000 == 0) {
    LOG.info("String_Node_Str",this.recordCount);
  }
}