Program: 92885
Project: 92885
Buggy source:
@TmfSignalHandler public void currentTimeUpdated(final TmfTimeSynchSignal signal){
  if ((signal.getSource() != fTable) && (fTrace != null) && (!fTable.isDisposed())) {
    final TmfDataRequest<TmfEvent> subRequest=new TmfDataRequest<TmfEvent>(TmfEvent.class,0,1,ExecutionType.FOREGROUND){
      @Override public void handleData(      TmfEvent event){
        super.handleData(event);
      }
      @Override public void handleCompleted(){
        final TmfTimestamp timestamp[]=new TmfTimestamp[1];
        timestamp[0]=signal.getCurrentTime();
        if (timestamp[0].compareTo(fTrace.getStartTime(),true) == -1) {
          timestamp[0]=fTrace.getStartTime();
        }
        if (timestamp[0].compareTo(fTrace.getEndTime(),true) == 1) {
          timestamp[0]=fTrace.getEndTime();
        }
        final int index=(int)fTrace.getRank(timestamp[0]);
        fTable.getDisplay().asyncExec(new Runnable(){
          @Override public void run(){
            if (fTable.isDisposed())             return;
            fTable.setSelection(index);
            if ((index >= fCacheStartIndex) && (index < fCacheEndIndex)) {
              fTable.notifyUpdatedSelection(timestamp[0]);
            }
            if ((index > 0) && (index == fTable.getTopIndex())) {
              fTable.setTopIndex(index - 1);
            }
          }
        }
);
        super.handleCompleted();
      }
    }
;
    @SuppressWarnings("String_Node_Str") TmfExperiment<TmfEvent> experiment=(TmfExperiment<TmfEvent>)TmfExperiment.getCurrentExperiment();
    if (experiment != null) {
      experiment.sendRequest(subRequest);
    }
  }
}

Fixed version (ground truth):
@TmfSignalHandler public void currentTimeUpdated(final TmfTimeSynchSignal signal){
  if ((signal.getSource() != fTable) && (fTrace != null) && (!fTable.isDisposed())) {
    final TmfDataRequest<TmfEvent> subRequest=new TmfDataRequest<TmfEvent>(TmfEvent.class,0,1,ExecutionType.FOREGROUND){
      @Override public void handleData(      TmfEvent event){
        super.handleData(event);
      }
      @Override public void handleCompleted(){
        final TmfTimestamp timestamp[]=new TmfTimestamp[1];
        timestamp[0]=signal.getCurrentTime();
        if (timestamp[0].compareTo(fTrace.getStartTime(),true) == -1) {
          timestamp[0]=fTrace.getStartTime();
        }
        if (timestamp[0].compareTo(fTrace.getEndTime(),true) == 1) {
          timestamp[0]=fTrace.getEndTime();
        }
        final int index=(int)fTrace.getRank(timestamp[0]);
        fTable.getDisplay().asyncExec(new Runnable(){
          @Override public void run(){
            if (fTable.isDisposed())             return;
            fTable.setSelection(index);
            if ((index >= fCacheStartIndex) && (index < fCacheEndIndex)) {
            }
            if ((index > 0) && (index == fTable.getTopIndex())) {
              fTable.setTopIndex(index - 1);
            }
          }
        }
);
        super.handleCompleted();
      }
    }
;
    @SuppressWarnings("String_Node_Str") TmfExperiment<TmfEvent> experiment=(TmfExperiment<TmfEvent>)TmfExperiment.getCurrentExperiment();
    if (experiment != null) {
      experiment.sendRequest(subRequest);
    }
  }
}