Program: 149658
Project: 149658
Buggy source:
@Override public void collectionPhase(short phaseId){
  if (phaseId == SET_COLLECTION_KIND) {
    super.collectionPhase(phaseId);
    if (CC_ENABLED) {
      ccForceFull=Options.fullHeapSystemGC.getValue();
      performCycleCollection|=(collectionAttempt > 1) || emergencyCollection || ccForceFull;
      if (performCycleCollection && Options.verbose.getValue() > 0)       Log.write("String_Node_Str");
    }
    return;
  }
  if (phaseId == PREPARE) {
    VM.finalizableProcessor.clear();
    VM.weakReferences.clear();
    VM.softReferences.clear();
    VM.phantomReferences.clear();
    rootTrace.prepare();
    rcSpace.prepare();
    if (CC_BACKUP_TRACE && performCycleCollection) {
      backupTrace.prepare();
    }
    return;
  }
  if (phaseId == CLOSURE) {
    rootTrace.prepare();
    modPool.prepare();
    return;
  }
  if (phaseId == BT_CLOSURE) {
    if (CC_BACKUP_TRACE && performCycleCollection) {
      backupTrace.prepare();
    }
    return;
  }
  if (phaseId == PROCESS_OLDROOTBUFFER) {
    oldRootPool.prepare();
    return;
  }
  if (phaseId == PROCESS_NEWROOTBUFFER) {
    newRootPool.prepare();
    return;
  }
  if (phaseId == PROCESS_MODBUFFER) {
    modPool.prepare();
    return;
  }
  if (phaseId == PROCESS_DECBUFFER) {
    decPool.prepare();
    return;
  }
  if (phaseId == RELEASE) {
    rootTrace.release();
    if (CC_BACKUP_TRACE && performCycleCollection) {
      backupTrace.release();
      rcSpace.sweepCells(rcSweeper);
      rcloSpace.sweep(loFreeSweeper);
    }
 else {
      rcSpace.release();
    }
    performCycleCollection=getPagesAvail() < Options.cycleTriggerThreshold.getPages();
    return;
  }
  super.collectionPhase(phaseId);
}

Fixed version (ground truth):
@Override public void collectionPhase(short phaseId){
  if (phaseId == SET_COLLECTION_KIND) {
    super.collectionPhase(phaseId);
    if (CC_ENABLED) {
      ccForceFull=Options.fullHeapSystemGC.getValue();
      if (BUILD_FOR_GENRC)       performCycleCollection=(collectionAttempt > 1) || emergencyCollection || ccForceFull;
 else       performCycleCollection|=(collectionAttempt > 1) || emergencyCollection || ccForceFull;
      if (performCycleCollection && Options.verbose.getValue() > 0)       Log.write("String_Node_Str");
    }
    return;
  }
  if (phaseId == PREPARE) {
    VM.finalizableProcessor.clear();
    VM.weakReferences.clear();
    VM.softReferences.clear();
    VM.phantomReferences.clear();
    rootTrace.prepare();
    rcSpace.prepare();
    if (CC_BACKUP_TRACE && performCycleCollection) {
      backupTrace.prepare();
    }
    return;
  }
  if (phaseId == CLOSURE) {
    rootTrace.prepare();
    modPool.prepare();
    return;
  }
  if (phaseId == BT_CLOSURE) {
    if (CC_BACKUP_TRACE && performCycleCollection) {
      backupTrace.prepare();
    }
    return;
  }
  if (phaseId == PROCESS_OLDROOTBUFFER) {
    oldRootPool.prepare();
    return;
  }
  if (phaseId == PROCESS_NEWROOTBUFFER) {
    newRootPool.prepare();
    return;
  }
  if (phaseId == PROCESS_MODBUFFER) {
    modPool.prepare();
    return;
  }
  if (phaseId == PROCESS_DECBUFFER) {
    decPool.prepare();
    return;
  }
  if (phaseId == RELEASE) {
    rootTrace.release();
    if (CC_BACKUP_TRACE && performCycleCollection) {
      backupTrace.release();
      rcSpace.sweepCells(rcSweeper);
      rcloSpace.sweep(loFreeSweeper);
    }
 else {
      rcSpace.release();
    }
    if (!BUILD_FOR_GENRC)     performCycleCollection=getPagesAvail() < Options.cycleTriggerThreshold.getPages();
    return;
  }
  super.collectionPhase(phaseId);
}