Program: 92603
Project: 92603
Buggy source:
@SuppressWarnings({"String_Node_Str"}) protected void indexTrace(boolean waitForCompletion){
  final Job job=new Job("String_Node_Str" + getName() + "String_Node_Str"){
    @Override protected IStatus run(    IProgressMonitor monitor){
      while (!monitor.isCanceled()) {
        try {
          Thread.sleep(100);
        }
 catch (        InterruptedException e) {
          return Status.OK_STATUS;
        }
      }
      monitor.done();
      return Status.OK_STATUS;
    }
  }
;
  job.schedule();
  fCheckpoints.clear();
  ITmfEventRequest<ITmfEvent> request=new TmfEventRequest<ITmfEvent>(ITmfEvent.class,TmfTimeRange.Eternity,TmfDataRequest.ALL_DATA,fIndexPageSize,ITmfDataRequest.ExecutionType.BACKGROUND){
    ITmfTimestamp startTime=null;
    ITmfTimestamp lastTime=null;
    @Override public void handleData(    ITmfEvent event){
      super.handleData(event);
      if (event != null) {
        ITmfTimestamp ts=event.getTimestamp();
        if (startTime == null)         startTime=ts.clone();
        lastTime=ts.clone();
        if ((getNbRead() % fIndexPageSize) == 0) {
          updateTrace();
        }
      }
    }
    @Override public void handleSuccess(){
      updateTrace();
    }
    @Override public void handleCompleted(){
      job.cancel();
      super.handleCompleted();
    }
    private void updateTrace(){
      int nbRead=getNbRead();
      if (nbRead != 0) {
        fStartTime=startTime;
        fEndTime=lastTime;
        fNbEvents=nbRead;
        notifyListeners();
      }
    }
  }
;
  sendRequest((ITmfDataRequest<T>)request);
  if (waitForCompletion)   try {
    request.waitForCompletion();
  }
 catch (  InterruptedException e) {
    e.printStackTrace();
  }
}

Fixed version (ground truth):
@SuppressWarnings({"String_Node_Str"}) protected void indexTrace(boolean waitForCompletion){
  final Job job=new Job("String_Node_Str" + getName() + "String_Node_Str"){
    @Override protected IStatus run(    IProgressMonitor monitor){
      while (!monitor.isCanceled()) {
        try {
          Thread.sleep(100);
        }
 catch (        InterruptedException e) {
          return Status.OK_STATUS;
        }
      }
      monitor.done();
      return Status.OK_STATUS;
    }
  }
;
  job.schedule();
  fCheckpoints.clear();
  ITmfEventRequest<ITmfEvent> request=new TmfEventRequest<ITmfEvent>(ITmfEvent.class,TmfTimeRange.Eternity,TmfDataRequest.ALL_DATA,fIndexPageSize,ITmfDataRequest.ExecutionType.BACKGROUND){
    ITmfTimestamp startTime=null;
    ITmfTimestamp lastTime=null;
    @Override public void handleData(    ITmfEvent event){
      super.handleData(event);
      if (event != null) {
        ITmfTimestamp ts=event.getTimestamp();
        if (startTime == null)         startTime=ts.clone();
        lastTime=ts.clone();
        if ((getNbRead() % fIndexPageSize) == 0) {
          updateTrace();
        }
      }
    }
    @Override public void handleSuccess(){
      updateTrace();
    }
    @Override public void handleCompleted(){
      job.cancel();
      super.handleCompleted();
    }
    private synchronized void updateTrace(){
      int nbRead=getNbRead();
      if (nbRead != 0) {
        fStartTime=startTime;
        fEndTime=lastTime;
        fNbEvents=nbRead;
        notifyListeners();
      }
    }
  }
;
  sendRequest((ITmfDataRequest<T>)request);
  if (waitForCompletion)   try {
    request.waitForCompletion();
  }
 catch (  InterruptedException e) {
  }
}