Program: 95070
Project: 95070
Buggy source:
protected ContainerMessage acceptNewClient(Socket socket,String target,Serializable data,ISynchAsynchConnection conn){
  debug("String_Node_Str" + socket + "String_Node_Str"+ target+ "String_Node_Str"+ data+ "String_Node_Str"+ conn+ "String_Node_Str");
  try {
    ContainerMessage mess=(ContainerMessage)data;
    if (mess == null)     throw new InvalidObjectException("String_Node_Str");
    ID remoteID=mess.getFromContainerID();
    if (remoteID == null)     throw new InvalidObjectException("String_Node_Str");
    ContainerMessage.JoinGroupMessage jgm=(ContainerMessage.JoinGroupMessage)mess.getData();
    if (jgm == null)     throw new IOException("String_Node_Str");
    ID memberIDs[]=null;
synchronized (getGroupMembershipLock()) {
      if (isClosing) {
        Exception e=new InvalidObjectException("String_Node_Str");
        throw e;
      }
      checkJoin(socket.getRemoteSocketAddress(),remoteID,target,jgm.getData());
      ISynchConnection oldConn=getSynchConnectionForID(remoteID);
      if (oldConn != null) {
        memberLeave(remoteID,oldConn);
      }
      if (addNewRemoteMember(remoteID,conn)) {
        try {
          forwardExcluding(getID(),remoteID,ContainerMessage.createViewChangeMessage(getID(),remoteID,getNextSequenceNumber(),new ID[]{remoteID},true,null));
        }
 catch (        IOException e) {
          traceStack("String_Node_Str",e);
        }
        memberIDs=groupManager.getMemberIDs();
        conn.start();
      }
 else {
        ConnectException e=new ConnectException("String_Node_Str");
        throw e;
      }
    }
    fireContainerEvent(new ContainerConnectedEvent(this.getID(),remoteID));
    return ContainerMessage.createViewChangeMessage(getID(),remoteID,getNextSequenceNumber(),memberIDs,true,null);
  }
 catch (  Exception e) {
    logException("String_Node_Str" + socket + "String_Node_Str"+ target+ "String_Node_Str"+ data+ "String_Node_Str"+ conn,e);
    return null;
  }
}

Fixed version (ground truth):
protected ContainerMessage acceptNewClient(Socket socket,String target,Serializable data,ISynchAsynchConnection conn){
  debug("String_Node_Str" + socket + "String_Node_Str"+ target+ "String_Node_Str"+ data+ "String_Node_Str"+ conn+ "String_Node_Str");
  ContainerMessage connectMessage=null;
  ID remoteID=null;
  try {
    connectMessage=(ContainerMessage)data;
    if (connectMessage == null)     throw new NullPointerException("String_Node_Str");
    remoteID=connectMessage.getFromContainerID();
    if (remoteID == null)     throw new NullPointerException("String_Node_Str");
    ContainerMessage.JoinGroupMessage jgm=(ContainerMessage.JoinGroupMessage)connectMessage.getData();
    if (jgm == null)     throw new NullPointerException("String_Node_Str");
    ID memberIDs[]=null;
synchronized (getGroupMembershipLock()) {
      if (isClosing) {
        Exception e=new IllegalStateException("String_Node_Str");
        throw e;
      }
      checkJoin(socket.getRemoteSocketAddress(),remoteID,target,jgm.getData());
      ISynchConnection oldConn=getSynchConnectionForID(remoteID);
      if (oldConn != null) {
        memberLeave(remoteID,oldConn);
      }
      if (addNewRemoteMember(remoteID,conn)) {
        try {
          forwardExcluding(getID(),remoteID,ContainerMessage.createViewChangeMessage(getID(),remoteID,getNextSequenceNumber(),new ID[]{remoteID},true,null));
        }
 catch (        IOException e) {
          traceStack("String_Node_Str",e);
        }
        memberIDs=groupManager.getMemberIDs();
        conn.start();
      }
 else {
        ConnectException e=new ConnectException("String_Node_Str");
        throw e;
      }
    }
    fireContainerEvent(new ContainerConnectedEvent(this.getID(),remoteID));
    return ContainerMessage.createViewChangeMessage(getID(),remoteID,getNextSequenceNumber(),memberIDs,true,null);
  }
 catch (  Exception e) {
    logException("String_Node_Str" + socket + "String_Node_Str"+ target+ "String_Node_Str"+ data+ "String_Node_Str"+ conn,e);
    return ContainerMessage.createViewChangeMessage(getID(),remoteID,getNextSequenceNumber(),null,false,e);
  }
}