Program: 92380
Project: 92380
Buggy source:
@Override public void buildIndex(final boolean waitForCompletion){
  final Job job=new Job("String_Node_Str" + fTrace.getName() + "String_Node_Str"){
    @Override protected IStatus run(    final IProgressMonitor monitor){
      while (!monitor.isCanceled()) {
        try {
          Thread.sleep(100);
        }
 catch (        final InterruptedException e) {
          return Status.OK_STATUS;
        }
      }
      monitor.done();
      return Status.OK_STATUS;
    }
  }
;
  job.schedule();
  System.out.println("String_Node_Str");
  ;
  fTraceIndex.clear();
  final ITmfEventRequest<ITmfEvent> request=new TmfEventRequest<ITmfEvent>(ITmfEvent.class,TmfTimeRange.ETERNITY,TmfDataRequest.ALL_DATA,fCheckpointInterval,ITmfDataRequest.ExecutionType.BACKGROUND){
    private ITmfTimestamp startTime=null;
    private ITmfTimestamp lastTime=null;
    @Override public void handleData(    final ITmfEvent event){
      super.handleData(event);
      if (event != null) {
        final ITmfTimestamp timestamp=event.getTimestamp();
        if (startTime == null) {
          startTime=timestamp.clone();
        }
        lastTime=timestamp.clone();
        if (Tracer.isEventTraced()) {
          Tracer.traceEvent(fTrace,this,event);
        }
        if ((getNbRead() % fCheckpointInterval) == 0) {
          updateTraceStatus();
        }
      }
    }
    @Override public void handleSuccess(){
      updateTraceStatus();
    }
    @Override public void handleCompleted(){
      job.cancel();
      super.handleCompleted();
    }
    private void updateTraceStatus(){
      if (getNbRead() != 0) {
        signalNewTimeRange(startTime,lastTime);
      }
    }
  }
;
  fTrace.sendRequest(request);
  if (waitForCompletion) {
    try {
      request.waitForCompletion();
    }
 catch (    final InterruptedException e) {
    }
  }
}

Fixed version (ground truth):
@Override public void buildIndex(final boolean waitForCompletion){
  final Job job=new Job("String_Node_Str" + fTrace.getName() + "String_Node_Str"){
    @Override protected IStatus run(    final IProgressMonitor monitor){
      while (!monitor.isCanceled()) {
        try {
          Thread.sleep(100);
        }
 catch (        final InterruptedException e) {
          return Status.OK_STATUS;
        }
      }
      monitor.done();
      return Status.OK_STATUS;
    }
  }
;
  job.schedule();
  fTraceIndex.clear();
  final ITmfEventRequest<ITmfEvent> request=new TmfEventRequest<ITmfEvent>(ITmfEvent.class,TmfTimeRange.ETERNITY,TmfDataRequest.ALL_DATA,fCheckpointInterval,ITmfDataRequest.ExecutionType.BACKGROUND){
    private ITmfTimestamp startTime=null;
    private ITmfTimestamp lastTime=null;
    @Override public void handleData(    final ITmfEvent event){
      super.handleData(event);
      if (event != null) {
        final ITmfTimestamp timestamp=event.getTimestamp();
        if (startTime == null) {
          startTime=timestamp.clone();
        }
        lastTime=timestamp.clone();
        if ((getNbRead() % fCheckpointInterval) == 0) {
          updateTraceStatus();
        }
      }
    }
    @Override public void handleSuccess(){
      updateTraceStatus();
    }
    @Override public void handleCompleted(){
      job.cancel();
      super.handleCompleted();
    }
    private void updateTraceStatus(){
      if (getNbRead() != 0) {
        signalNewTimeRange(startTime,lastTime);
      }
    }
  }
;
  fTrace.sendRequest(request);
  if (waitForCompletion) {
    try {
      request.waitForCompletion();
    }
 catch (    final InterruptedException e) {
    }
  }
}