Program: 49743
Project: 49743
Buggy source:
void doRemoveAddress(Address deadAddress){
  mapStorageMemberIndexes.clear();
  logger.log(Level.INFO,"String_Node_Str" + deadAddress);
  if (!node.joined()) {
    node.failedConnection(deadAddress);
    return;
  }
  if (deadAddress.equals(thisAddress))   return;
  if (deadAddress.equals(getMasterAddress())) {
    if (node.joined()) {
      MemberImpl newMaster=getNextMemberAfter(deadAddress,false,1);
      if (newMaster != null)       node.setMasterAddress(newMaster.getAddress());
 else       node.setMasterAddress(null);
    }
 else {
      node.setMasterAddress(null);
    }
    logger.log(Level.FINEST,"String_Node_Str" + node.getMasterAddress());
  }
  if (isMaster()) {
    setJoins.remove(new MemberInfo(deadAddress));
  }
  Connection conn=node.connectionManager.getConnection(deadAddress);
  if (conn != null) {
    node.connectionManager.destroyConnection(conn);
  }
  MemberImpl deadMember=getMember(deadAddress);
  if (deadMember != null) {
    lsMembersBefore.clear();
    for (    MemberImpl memberBefore : lsMembers) {
      lsMembersBefore.add(memberBefore);
    }
    removeMember(deadMember);
    node.concurrentMapManager.syncForDead(deadMember);
    node.listenerManager.syncForDead(deadAddress);
    node.topicManager.syncForDead(deadAddress);
    node.getClusterImpl().setMembers(lsMembers);
    disconnectExistingCalls(deadAddress);
    if (isMaster()) {
      logger.log(Level.FINEST,deadAddress + "String_Node_Str");
      sendRemoveMemberToOthers(deadAddress);
    }
    logger.log(Level.INFO,this.toString());
  }
}

Fixed version (ground truth):
void doRemoveAddress(Address deadAddress){
  mapStorageMemberIndexes.clear();
  logger.log(Level.INFO,"String_Node_Str" + deadAddress);
  if (!node.joined()) {
    node.failedConnection(deadAddress);
    return;
  }
  if (deadAddress.equals(thisAddress))   return;
  if (deadAddress.equals(getMasterAddress())) {
    if (node.joined()) {
      MemberImpl newMaster=getNextMemberAfter(deadAddress,false,1);
      if (newMaster != null)       node.setMasterAddress(newMaster.getAddress());
 else       node.setMasterAddress(null);
    }
 else {
      node.setMasterAddress(null);
    }
    logger.log(Level.FINEST,"String_Node_Str" + node.getMasterAddress());
  }
  if (isMaster()) {
    setJoins.remove(new MemberInfo(deadAddress));
  }
  Connection conn=node.connectionManager.getConnection(deadAddress);
  if (conn != null) {
    node.connectionManager.destroyConnection(conn);
  }
  MemberImpl deadMember=getMember(deadAddress);
  if (deadMember != null) {
    lsMembersBefore.clear();
    for (    MemberImpl memberBefore : lsMembers) {
      lsMembersBefore.add(memberBefore);
    }
    removeMember(deadMember);
    node.concurrentMapManager.syncForDead(deadMember);
    node.blockingQueueManager.syncForDead(deadMember);
    node.listenerManager.syncForDead(deadAddress);
    node.topicManager.syncForDead(deadAddress);
    node.getClusterImpl().setMembers(lsMembers);
    disconnectExistingCalls(deadAddress);
    if (isMaster()) {
      logger.log(Level.FINEST,deadAddress + "String_Node_Str");
      sendRemoveMemberToOthers(deadAddress);
    }
    logger.log(Level.INFO,this.toString());
  }
}