Program: 20009
Project: 20009
Buggy source:
/** 
 * Scores the given set of states
 * @param scoreableList a list containing scoreable objects tobe scored
 * @return true if there are more features available
 */
public boolean calculateScores(List scoreableList){
  FeatureFrame ff;
  try {
    ff=frontEnd.getFeatureFrame(1,null);
    if (ff == null) {
      System.out.println("String_Node_Str");
      return false;
    }
    if (ff.getFeatures() == null) {
      System.out.println("String_Node_Str");
      return false;
    }
    curFeature=ff.getFeatures()[0];
    if (curFeature.getSignal() == Signal.UTTERANCE_START) {
      return true;
    }
    if (curFeature.getSignal() == Signal.UTTERANCE_END) {
      return false;
    }
    if (!curFeature.hasContent()) {
      throw new Error("String_Node_Str");
    }
    Scoreable[] scoreables=(Scoreable[])scoreableList.toArray(new Scoreable[scoreableList.size()]);
    if (numThreads > 1) {
      int nThreads=numThreads;
      int scoreablesPerThread=(scoreables.length + (numThreads - 1)) / numThreads;
      if (scoreablesPerThread < minScoreablesPerThread) {
        scoreablesPerThread=minScoreablesPerThread;
        nThreads=(scoreables.length + (scoreablesPerThread - 1)) / scoreablesPerThread;
      }
      semaphore.setCount(nThreads);
      for (int i=0; i < nThreads; i++) {
        ScoreableJob job=new ScoreableJob(scoreables,i * scoreablesPerThread,scoreablesPerThread);
        mailbox.post(job);
      }
      semaphore.pend();
    }
 else {
      ScoreableJob job=new ScoreableJob(scoreables,0,scoreables.length);
      scoreScoreables(job);
    }
  }
 catch (  IOException ioe) {
    System.out.println("String_Node_Str" + ioe);
    ioe.printStackTrace();
    return false;
  }
  return true;
}

Fixed version (ground truth):
/** 
 * Scores the given set of states
 * @param scoreableList a list containing scoreable objects tobe scored
 * @return true if there was a Feature available to scorefalse if there was no more Feature available to score
 */
public boolean calculateScores(List scoreableList){
  FeatureFrame ff;
  try {
    ff=frontEnd.getFeatureFrame(1,null);
    if (!hasFeatures(ff)) {
      return false;
    }
    curFeature=ff.getFeatures()[0];
    if (curFeature.getSignal() == Signal.UTTERANCE_START) {
      ff=frontEnd.getFeatureFrame(1,null);
      if (!hasFeatures(ff)) {
        return false;
      }
      curFeature=ff.getFeatures()[0];
    }
    if (curFeature.getSignal() == Signal.UTTERANCE_END) {
      return false;
    }
    if (!curFeature.hasContent()) {
      throw new Error("String_Node_Str");
    }
    Scoreable[] scoreables=(Scoreable[])scoreableList.toArray(new Scoreable[scoreableList.size()]);
    if (numThreads > 1) {
      int nThreads=numThreads;
      int scoreablesPerThread=(scoreables.length + (numThreads - 1)) / numThreads;
      if (scoreablesPerThread < minScoreablesPerThread) {
        scoreablesPerThread=minScoreablesPerThread;
        nThreads=(scoreables.length + (scoreablesPerThread - 1)) / scoreablesPerThread;
      }
      semaphore.setCount(nThreads);
      for (int i=0; i < nThreads; i++) {
        ScoreableJob job=new ScoreableJob(scoreables,i * scoreablesPerThread,scoreablesPerThread);
        mailbox.post(job);
      }
      semaphore.pend();
    }
 else {
      ScoreableJob job=new ScoreableJob(scoreables,0,scoreables.length);
      scoreScoreables(job);
    }
  }
 catch (  IOException ioe) {
    System.out.println("String_Node_Str" + ioe);
    ioe.printStackTrace();
    return false;
  }
  return true;
}