Program: 70245
Project: 70245
Buggy source:
/** 
 * Registers and action as completed and releases all the resource and data dependencies.
 * @param action action that has finished
 */
public final void actionCompleted(AllocatableAction<P,T> action){
  ResourceScheduler<P,T> resource=action.getAssignedResource();
  if (action.getImplementations().length > 0) {
    int coreId=action.getImplementations()[0].getCoreId();
    readyCounts[coreId]--;
  }
  LinkedList<AllocatableAction<P,T>> dataFreeActions=action.completed();
  for (  AllocatableAction<P,T> dataFreeAction : dataFreeActions) {
    if (dataFreeAction.getImplementations().length > 0) {
      int coreId=dataFreeAction.getImplementations()[0].getCoreId();
      readyCounts[coreId]++;
    }
    try {
      dependencyFreeAction(dataFreeAction);
    }
 catch (    BlockedActionException bae) {
      logger.info("String_Node_Str" + action);
      blockedActions.addAction(action);
    }
  }
  LinkedList<AllocatableAction<P,T>> resourceFree=resource.unscheduleAction(action);
  workerLoadUpdate((ResourceScheduler<P,T>)action.getAssignedResource());
  HashSet<AllocatableAction<P,T>> freeTasks=new HashSet<AllocatableAction<P,T>>();
  freeTasks.addAll(dataFreeActions);
  freeTasks.addAll(resourceFree);
  for (  AllocatableAction<P,T> a : freeTasks) {
    try {
      try {
        a.tryToLaunch();
      }
 catch (      InvalidSchedulingException ise) {
        Score aScore=a.schedulingScore(this);
        a.schedule(action.getConstrainingPredecessor().getAssignedResource(),aScore);
        try {
          a.tryToLaunch();
        }
 catch (        InvalidSchedulingException ise2) {
        }
      }
    }
 catch (    UnassignedActionException ure) {
      StringBuilder info=new StringBuilder("String_Node_Str");
      info.append(action.toString());
      ErrorManager.fatal(info.toString());
    }
catch (    BlockedActionException bae) {
      logger.info("String_Node_Str" + action);
      blockedActions.addAction(action);
    }
  }
}

Fixed version (ground truth):
/** 
 * Registers and action as completed and releases all the resource and data dependencies.
 * @param action action that has finished
 */
public final void actionCompleted(AllocatableAction<P,T> action){
  ResourceScheduler<P,T> resource=action.getAssignedResource();
  if (action.getImplementations().length > 0) {
    int coreId=action.getImplementations()[0].getCoreId();
    readyCounts[coreId]--;
  }
  LinkedList<AllocatableAction<P,T>> dataFreeActions=action.completed();
  for (  AllocatableAction<P,T> dataFreeAction : dataFreeActions) {
    if (dataFreeAction.getImplementations().length > 0) {
      int coreId=dataFreeAction.getImplementations()[0].getCoreId();
      readyCounts[coreId]++;
    }
    try {
      dependencyFreeAction(dataFreeAction);
    }
 catch (    BlockedActionException bae) {
      logger.info("String_Node_Str" + action);
      blockedActions.addAction(action);
    }
  }
  LinkedList<AllocatableAction<P,T>> resourceFree=resource.unscheduleAction(action);
  workerLoadUpdate((ResourceScheduler<P,T>)action.getAssignedResource());
  for (  AllocatableAction<P,T> a : resourceFree) {
    try {
      try {
        a.tryToLaunch();
      }
 catch (      InvalidSchedulingException ise) {
        Score aScore=a.schedulingScore(this);
        a.schedule(action.getConstrainingPredecessor().getAssignedResource(),aScore);
        try {
          a.tryToLaunch();
        }
 catch (        InvalidSchedulingException ise2) {
        }
      }
    }
 catch (    UnassignedActionException ure) {
      StringBuilder info=new StringBuilder("String_Node_Str");
      info.append(action.toString());
      ErrorManager.fatal(info.toString());
    }
catch (    BlockedActionException bae) {
      logger.info("String_Node_Str" + action);
      blockedActions.addAction(action);
    }
  }
}