Program: 85163
Project: 85163
Buggy source:
public void send(){
  if (logger.isInfoEnabled()) {
    logger.info("String_Node_Str" + getUrl());
  }
  for (  Map.Entry<Statistics,AtomicReference<long[]>> entry : statisticsMap.entrySet()) {
    Statistics statistics=entry.getKey();
    AtomicReference<long[]> reference=entry.getValue();
    long[] numbers=reference.get();
    long success=numbers[0];
    long failure=numbers[1];
    long input=numbers[2];
    long output=numbers[3];
    long elapsed=numbers[4];
    long concurrent=numbers[5];
    long maxInput=numbers[6];
    long maxOutput=numbers[7];
    long maxElapsed=numbers[8];
    long maxConcurrent=numbers[9];
    URL url=statistics.getUrl();
    url.addParameter(MonitorService.SUCCESS,success);
    url.addParameter(MonitorService.FAILURE,failure);
    url.addParameter(MonitorService.INPUT,input);
    url.addParameter(MonitorService.OUTPUT,output);
    url.addParameter(MonitorService.ELAPSED,elapsed);
    url.addParameter(MonitorService.CONCURRENT,concurrent);
    url.addParameter(MonitorService.MAX_INPUT,maxInput);
    url.addParameter(MonitorService.MAX_OUTPUT,maxOutput);
    url.addParameter(MonitorService.MAX_ELAPSED,maxElapsed);
    url.addParameter(MonitorService.MAX_CONCURRENT,maxConcurrent);
    monitorService.count(url);
    long[] current;
    long[] update=new long[LENGTH];
    do {
      current=reference.get();
      if (current == null) {
        update[0]=0;
        update[1]=0;
        update[2]=0;
        update[3]=0;
        update[4]=0;
        update[5]=0;
      }
 else {
        update[0]=current[0] - success;
        update[1]=current[1] - failure;
        update[2]=current[2] - input;
        update[3]=current[3] - output;
        update[4]=current[4] - output;
        update[5]=current[5] - output;
      }
    }
 while (!reference.compareAndSet(current,update));
  }
}

Fixed version (ground truth):
public void send(){
  if (logger.isInfoEnabled()) {
    logger.info("String_Node_Str" + getUrl());
  }
  for (  Map.Entry<Statistics,AtomicReference<long[]>> entry : statisticsMap.entrySet()) {
    Statistics statistics=entry.getKey();
    AtomicReference<long[]> reference=entry.getValue();
    long[] numbers=reference.get();
    long success=numbers[0];
    long failure=numbers[1];
    long input=numbers[2];
    long output=numbers[3];
    long elapsed=numbers[4];
    long concurrent=numbers[5];
    long maxInput=numbers[6];
    long maxOutput=numbers[7];
    long maxElapsed=numbers[8];
    long maxConcurrent=numbers[9];
    URL url=statistics.getUrl().addParameter(MonitorService.SUCCESS,success).addParameter(MonitorService.FAILURE,failure).addParameter(MonitorService.INPUT,input).addParameter(MonitorService.OUTPUT,output).addParameter(MonitorService.ELAPSED,elapsed).addParameter(MonitorService.CONCURRENT,concurrent).addParameter(MonitorService.MAX_INPUT,maxInput).addParameter(MonitorService.MAX_OUTPUT,maxOutput).addParameter(MonitorService.MAX_ELAPSED,maxElapsed).addParameter(MonitorService.MAX_CONCURRENT,maxConcurrent);
    monitorService.count(url);
    long[] current;
    long[] update=new long[LENGTH];
    do {
      current=reference.get();
      if (current == null) {
        update[0]=0;
        update[1]=0;
        update[2]=0;
        update[3]=0;
        update[4]=0;
        update[5]=0;
      }
 else {
        update[0]=current[0] - success;
        update[1]=current[1] - failure;
        update[2]=current[2] - input;
        update[3]=current[3] - output;
        update[4]=current[4] - output;
        update[5]=current[5] - output;
      }
    }
 while (!reference.compareAndSet(current,update));
  }
}