Buggy code:
public abstract class ClientSOContainer extends SOContainer { protected ISynchAsynchConnection connection ; protected ID remoteServerID ; protected byte connectionState ; public static final byte UNCONNECTED = 0 ; public static final byte CONNECTING = 1 ; public static final byte CONNECTED = 2 ; static final class Lock { } protected ClientSOContainer . Lock connectLock ; protected ClientSOContainer . Lock getConnectLock ( ) { } protected ISynchAsynchConnection getConnection ( ) { } public ClientSOContainer ( ISharedObjectContainerConfig config ) { } public void dispose ( ) { } public final boolean isGroupManager ( ) { } public ID getConnectedID ( ) { } protected Callback [ ] makeAuthorizationCallbacks ( ) { } public void connect ( ID remote , IConnectContext joinContext ) throws ContainerConnectException { fireContainerEvent ( new org . eclipse . ecf . core . events . SharedObjectContainerConnectingEvent ( this . getID ( ) , remote , joinContext ) ) ; try { if ( isClosing ) throw new IllegalStateException ( "container<seq2seq4repair_space>is<seq2seq4repair_space>closing" ) ; <START_BUG> debug ( ( ( ( "joingroup:" + remote ) + ":" ) + joinContext ) ) ; <END_BUG> ISynchAsynchConnection aConnection = makeConnection ( remote , joinContext ) ; if ( aConnection == null ) throw new ConnectException ( ( ( ( "join<seq2seq4repair_space>failed<seq2seq4repair_space>to" + ":" ) + ( remote . getName ( ) ) ) + "<seq2seq4repair_space>because<seq2seq4repair_space>makeConnection<seq2seq4repair_space>returned<seq2seq4repair_space>null" ) ) ; Object response = null ; synchronized ( connectLock ) { if ( isConnected ( ) ) { killConnection ( aConnection ) ; aConnection = null ; throw new ConnectException ( ( "already<seq2seq4repair_space>connected<seq2seq4repair_space>to<seq2seq4repair_space>" + ( getConnectedID ( ) ) ) ) ; } if ( isConnecting ( ) ) { killConnection ( aConnection ) ; aConnection = null ; throw new ConnectException ( "currently<seq2seq4repair_space>connecting" ) ; } connectionState = ClientSOContainer . CONNECTING ; connection = aConnection ; } Callback [ ] callbacks = makeAuthorizationCallbacks ( ) ; if ( joinContext != null ) { CallbackHandler handler = joinContext . getCallbackHandler ( ) ; if ( handler != null ) { handler . handle ( callbacks ) ; } } synchronized ( aConnection ) { try { Object connectData = makeConnectData ( remote , callbacks , null ) ; response = aConnection . connect ( remote , connectData , getConnectTimeout ( ) ) ; } catch ( IOException e ) { synchronized ( connectLock ) { killConnection ( aConnection ) ; if ( ( connection ) != aConnection ) { aConnection = null ; throw e ; } connectionState = ClientSOContainer . UNCONNECTED ; connection = null ; remoteServerID = null ; } throw e ; } synchronized ( connectLock ) { if ( ( connection ) != aConnection ) { killConnection ( aConnection ) ; aConnection = null ; throw new ConnectException ( "join<seq2seq4repair_space>failed<seq2seq4repair_space>because<seq2seq4repair_space>not<seq2seq4repair_space>in<seq2seq4repair_space>correct<seq2seq4repair_space>state" ) ; } ID serverID = null ; try { serverID = handleConnectResponse ( remote , response ) ; } catch ( Exception e ) { killConnection ( aConnection ) ; aConnection = null ; connection = null ; remoteServerID = null ; connectionState = ClientSOContainer . UNCONNECTED ; throw new ConnectException ( "join<seq2seq4repair_space>refused<seq2seq4repair_space>locally<seq2seq4repair_space>via<seq2seq4repair_space>acceptNewServer" ) ; } aConnection . start ( ) ; remoteServerID = serverID ; connectionState = ClientSOContainer . CONNECTED ; } } } catch ( Exception e ) { dumpStack ( "Exception<seq2seq4repair_space>in<seq2seq4repair_space>joinGroup" , e ) ; ContainerConnectException except = new ContainerConnectException ( ( ( ( ( ( ( ( "joinGroup<seq2seq4repair_space>exception<seq2seq4repair_space>in<seq2seq4repair_space>container<seq2seq4repair_space>" + ( getID ( ) ) ) + "<seq2seq4repair_space>joining<seq2seq4repair_space>" ) + remote ) + ":<seq2seq4repair_space>" ) + ( e . getClass ( ) . getName ( ) ) ) + ":<seq2seq4repair_space>" ) + ( e . getMessage ( ) ) ) ) ; except . setStackTrace ( e . getStackTrace ( ) ) ; throw except ; } } protected int getConnectTimeout ( ) { } protected void handleLeaveGroupMessage ( ContainerMessage mess ) { } protected void handleViewChangeMessage ( ContainerMessage mess ) throws IOException { } protected void forwardExcluding ( ID from , ID excluding , ContainerMessage data ) throws IOException { } protected Object makeConnectData ( ID target , Callback [ ] cbs , Object data ) { } protected Serializable getLeaveData ( ID target ) { } public void disconnect ( ) { } protected abstract ISynchAsynchConnection makeConnection ( ID remoteSpace , Object data ) throws ConnectionInstantiationException { } protected void queueContainerMessage ( ContainerMessage message ) throws IOException { } protected void forwardExcluding ( ID from , ID excluding , byte msg , Serializable data ) throws IOException { } protected void forwardToRemote ( ID from , ID to , ContainerMessage message ) throws IOException { } protected ID getIDForConnection ( IAsynchConnection conn ) { } protected void memberLeave ( ID fromID , IAsynchConnection conn ) { } protected void sendMessage ( ContainerMessage data ) throws IOException { } protected ID [ ] sendCreateMsg ( ID toID , SharedObjectDescription createInfo ) throws IOException { } protected void processDisconnect ( DisconnectConnectionEvent evt ) { } protected void processAsynchPacket ( AsynchConnectionEvent evt ) throws IOException { } protected Serializable processSynch ( SynchConnectionEvent evt ) throws IOException { } protected boolean isConnected ( ) { } protected boolean isConnecting ( ) { } private void checkConnected ( ) throws ConnectException { } protected ID handleConnectResponse ( ID orginalTarget , Object serverData ) throws Exception { } }

Fix:
debug ( ( ( ( "connect:" + remote ) + ":" ) + joinContext ) ) ;