Program: 92812
Project: 92812
Buggy source:
@SuppressWarnings("String_Node_Str") @Override protected void indexExperiment(final boolean waitForCompletion){
  if (waitForCompletion) {
    TmfExperimentRangeUpdatedSignal signal=new TmfExperimentRangeUpdatedSignal(LTTngExperiment.this,LTTngExperiment.this,TmfTimeRange.Eternity);
    broadcast(signal);
    while (isIndexingBusy()) {
      try {
        Thread.sleep(100);
      }
 catch (      InterruptedException e) {
        e.printStackTrace();
      }
    }
    ;
    return;
  }
  for (  ITmfTrace trace : fTraces) {
    if (trace instanceof LTTngTrace) {
      JniTrace jniTrace=((LTTngTrace)trace).getCurrentJniTrace();
      if (jniTrace != null && !jniTrace.isLiveTraceSupported()) {
        updateTimeRange();
        TmfExperimentRangeUpdatedSignal signal=new TmfExperimentRangeUpdatedSignal(LTTngExperiment.this,LTTngExperiment.this,getTimeRange());
        broadcast(signal);
        return;
      }
    }
  }
  final Thread thread=new Thread("String_Node_Str" + getName()){
    LttngTimestamp safeTimestamp=null;
    TmfTimeRange timeRange=null;
    @Override public void run(){
      while (!fExecutor.isShutdown()) {
        final TmfEventRequest<LttngEvent> request=new TmfEventRequest<LttngEvent>(LttngEvent.class,TmfTimeRange.Eternity,0,ExecutionType.FOREGROUND){
          @Override public void handleCompleted(){
            super.handleCompleted();
            if (isIndexingBusy()) {
              timeRange=null;
              return;
            }
            long startTime=Long.MAX_VALUE;
            long endTime=Long.MIN_VALUE;
            for (            ITmfTrace trace : getTraces()) {
              if (trace instanceof LTTngTrace) {
                LTTngTrace lttngTrace=(LTTngTrace)trace;
                JniTrace jniTrace=lttngTrace.getCurrentJniTrace();
                jniTrace.updateTrace();
                startTime=Math.min(startTime,lttngTrace.getStartTime().getValue());
                endTime=Math.max(endTime,jniTrace.getEndTime().getTime());
              }
            }
            LttngTimestamp startTimestamp=new LttngTimestamp(startTime);
            LttngTimestamp endTimestamp=new LttngTimestamp(endTime);
            if (safeTimestamp != null && safeTimestamp.compareTo(getTimeRange().getEndTime(),false) > 0) {
              timeRange=new TmfTimeRange(startTimestamp,safeTimestamp);
            }
 else {
              timeRange=null;
            }
            safeTimestamp=endTimestamp;
          }
        }
;
        try {
          sendRequest((ITmfDataRequest<T>)request);
          request.waitForCompletion();
          if (timeRange != null && timeRange != TmfTimeRange.Null) {
            TmfExperimentRangeUpdatedSignal signal=new TmfExperimentRangeUpdatedSignal(LTTngExperiment.this,LTTngExperiment.this,timeRange);
            broadcast(signal);
          }
          Thread.sleep(2000);
        }
 catch (        InterruptedException e) {
          e.printStackTrace();
        }
      }
    }
  }
;
  thread.start();
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") @Override protected void indexExperiment(final boolean waitForCompletion){
  if (waitForCompletion) {
    TmfExperimentRangeUpdatedSignal signal=new TmfExperimentRangeUpdatedSignal(LTTngExperiment.this,LTTngExperiment.this,TmfTimeRange.Eternity);
    broadcast(signal);
    while (isIndexingBusy()) {
      try {
        Thread.sleep(100);
      }
 catch (      InterruptedException e) {
        e.printStackTrace();
      }
    }
    ;
    return;
  }
  for (  ITmfTrace trace : fTraces) {
    if (trace instanceof LTTngTrace) {
      JniTrace jniTrace=((LTTngTrace)trace).getCurrentJniTrace();
      if (jniTrace != null && !jniTrace.isLiveTraceSupported()) {
        updateTimeRange();
        TmfExperimentRangeUpdatedSignal signal=new TmfExperimentRangeUpdatedSignal(LTTngExperiment.this,LTTngExperiment.this,getTimeRange());
        broadcast(signal);
        return;
      }
    }
  }
  final Thread thread=new Thread("String_Node_Str" + getName()){
    LttngTimestamp safeTimestamp=null;
    TmfTimeRange timeRange=null;
    @Override public void run(){
      while (!fExecutor.isShutdown()) {
        final TmfEventRequest<LttngEvent> request=new TmfEventRequest<LttngEvent>(LttngEvent.class,TmfTimeRange.Eternity,0,ExecutionType.FOREGROUND){
          @Override public void handleCompleted(){
            super.handleCompleted();
            if (isIndexingBusy()) {
              timeRange=null;
              return;
            }
            long startTime=Long.MAX_VALUE;
            long endTime=Long.MIN_VALUE;
            for (            ITmfTrace trace : getTraces()) {
              if (trace instanceof LTTngTrace) {
                LTTngTrace lttngTrace=(LTTngTrace)trace;
                JniTrace jniTrace=lttngTrace.getCurrentJniTrace();
                jniTrace.updateTrace();
                startTime=Math.min(startTime,lttngTrace.getStartTime().getValue());
                endTime=Math.max(endTime,jniTrace.getEndTime().getTime());
              }
            }
            LttngTimestamp startTimestamp=new LttngTimestamp(startTime);
            LttngTimestamp endTimestamp=new LttngTimestamp(endTime);
            if (safeTimestamp != null && safeTimestamp.compareTo(getTimeRange().getEndTime(),false) > 0) {
              timeRange=new TmfTimeRange(startTimestamp,safeTimestamp);
            }
 else {
              timeRange=null;
            }
            safeTimestamp=endTimestamp;
          }
        }
;
        try {
          sendRequest((ITmfDataRequest<T>)request);
          request.waitForCompletion();
          if (timeRange != null && !timeRange.equals(TmfTimeRange.Null)) {
            TmfExperimentRangeUpdatedSignal signal=new TmfExperimentRangeUpdatedSignal(LTTngExperiment.this,LTTngExperiment.this,timeRange);
            broadcast(signal);
          }
          Thread.sleep(2000);
        }
 catch (        InterruptedException e) {
          e.printStackTrace();
        }
      }
    }
  }
;
  thread.start();
}