Program: 50620
Project: 50620
Buggy source:
public void doBackup(Request req){
  if (req.operation == CONCURRENT_MAP_BACKUP_PUT) {
    toRecord(req);
  }
 else   if (req.operation == CONCURRENT_MAP_BACKUP_REMOVE) {
    Record record=getRecord(req.key);
    if (record != null) {
      if (record.value != null) {
        record.value.setNoData();
      }
      if (record.lsValues != null) {
        for (        Data value : record.lsValues) {
          value.setNoData();
        }
      }
      if (record.copyCount > 0) {
        record.decrementCopyCount();
      }
      record.value=null;
      if (record.isRemovable()) {
        removeRecord(record.key);
        record.key.setNoData();
      }
    }
  }
 else   if (req.operation == CONCURRENT_MAP_BACKUP_LOCK) {
    toRecord(req);
  }
 else   if (req.operation == CONCURRENT_MAP_BACKUP_ADD) {
    add(req);
  }
 else   if (req.operation == CONCURRENT_MAP_BACKUP_REMOVE_MULTI) {
    Record record=getRecord(req.key);
    if (record != null) {
      if (req.value == null) {
        removeRecord(req.key);
      }
 else {
        if (record.containsValue(req.value)) {
          if (record.lsValues != null) {
            Iterator<Data> itValues=record.lsValues.iterator();
            while (itValues.hasNext()) {
              Data value=itValues.next();
              if (req.value.equals(value)) {
                itValues.remove();
                value.setNoData();
              }
            }
          }
        }
      }
      if (record.isRemovable()) {
        removeRecord(record.key);
      }
    }
  }
 else {
    logger.log(Level.SEVERE,"String_Node_Str" + req.operation);
  }
}

Fixed version (ground truth):
public void doBackup(Request req){
  if (req.key == null || req.key.size() == 0) {
    throw new RuntimeException("String_Node_Str" + req.key);
  }
  if (req.operation == CONCURRENT_MAP_BACKUP_PUT) {
    toRecord(req);
  }
 else   if (req.operation == CONCURRENT_MAP_BACKUP_REMOVE) {
    Record record=getRecord(req.key);
    if (record != null) {
      if (record.value != null) {
        record.value.setNoData();
      }
      if (record.lsValues != null) {
        for (        Data value : record.lsValues) {
          value.setNoData();
        }
      }
      if (record.copyCount > 0) {
        record.decrementCopyCount();
      }
      record.value=null;
      if (record.isRemovable()) {
        if (removeRecord(record.key) == null) {
          throw new RuntimeException("String_Node_Str");
        }
        record.key.setNoData();
        record.key=null;
      }
    }
  }
 else   if (req.operation == CONCURRENT_MAP_BACKUP_LOCK) {
    toRecord(req);
  }
 else   if (req.operation == CONCURRENT_MAP_BACKUP_ADD) {
    add(req);
  }
 else   if (req.operation == CONCURRENT_MAP_BACKUP_REMOVE_MULTI) {
    Record record=getRecord(req.key);
    if (record != null) {
      if (req.value == null) {
        removeRecord(req.key);
      }
 else {
        if (record.containsValue(req.value)) {
          if (record.lsValues != null) {
            Iterator<Data> itValues=record.lsValues.iterator();
            while (itValues.hasNext()) {
              Data value=itValues.next();
              if (req.value.equals(value)) {
                itValues.remove();
                value.setNoData();
              }
            }
          }
        }
      }
      if (record.isRemovable()) {
        removeRecord(record.key);
      }
    }
  }
 else {
    logger.log(Level.SEVERE,"String_Node_Str" + req.operation);
  }
}