Buggy code:
public abstract class ClientSOContainer extends SOContainer { protected ISynchAsynchConnection connection ; protected ID remoteServerID ; protected byte connectionState ; public static final byte DISCONNECTED = 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 [ ] createAuthorizationCallbacks ( ) { } private void setStateDisconnected ( ISynchAsynchConnection conn ) { } private void setStateConnecting ( ISynchAsynchConnection conn ) { } private void setStateConnected ( ID serverID , ISynchAsynchConnection conn ) { } public void connect ( ID remote , IConnectContext joinContext ) throws ContainerConnectException { try { if ( isClosing ) throw new IllegalStateException ( "container<seq2seq4repair_space>is<seq2seq4repair_space>closing" ) ; debug ( ( ( ( ( "connect(" + remote ) + "," ) + joinContext ) + ")" ) ) ; Object response = null ; synchronized ( getConnectLock ( ) ) { if ( isConnected ( ) ) throw new ConnectException ( ( "already<seq2seq4repair_space>connected<seq2seq4repair_space>to<seq2seq4repair_space>" + ( getConnectedID ( ) ) ) ) ; if ( isConnecting ( ) ) throw new ConnectException ( "currently<seq2seq4repair_space>connecting" ) ; fireContainerEvent ( new org . eclipse . ecf . core . events . ContainerConnectingEvent ( this . getID ( ) , remote , joinContext ) ) ; ISynchAsynchConnection aConnection = createConnection ( remote , joinContext ) ; setStateConnecting ( aConnection ) ; synchronized ( aConnection ) { Callback [ ] callbacks = createAuthorizationCallbacks ( ) ; if ( joinContext != null ) { CallbackHandler handler = joinContext . getCallbackHandler ( ) ; if ( handler != null ) { handler . handle ( callbacks ) ; } } try { Object connectData = createConnectData ( remote , callbacks , null ) ; response = aConnection . connect ( remote , connectData , getConnectTimeout ( ) ) ; } catch ( IOException e ) { if ( ( getConnection ( ) ) != aConnection ) killConnection ( aConnection ) ; else setStateDisconnected ( aConnection ) ; throw e ; } if ( ( getConnection ( ) ) != aConnection ) { killConnection ( aConnection ) ; throw new ConnectException ( "connect<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 ) { setStateDisconnected ( aConnection ) ; throw new ConnectException ( "connect<seq2seq4repair_space>refused<seq2seq4repair_space>locally<seq2seq4repair_space>via<seq2seq4repair_space>acceptNewServer" ) ; } aConnection . start ( ) ; setStateConnected ( serverID , aConnection ) ; } } } catch ( Exception e ) { <START_BUG> dumpStack ( "Exception<seq2seq4repair_space>in<seq2seq4repair_space>connect" , e ) ; <END_BUG> ContainerConnectException except = new ContainerConnectException ( ( "exception<seq2seq4repair_space>connecting<seq2seq4repair_space>to<seq2seq4repair_space>" + ( remote . getName ( ) ) ) , e ) ; 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 createConnectData ( ID target , Callback [ ] cbs , Object data ) { } protected Serializable getLeaveData ( ID target ) { } public void disconnect ( ) { } protected abstract ISynchAsynchConnection createConnection ( ID remoteSpace , Object data ) throws ConnectionCreateException { } 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 ( DisconnectEvent evt ) { } protected void processAsynch ( AsynchEvent evt ) throws IOException { } protected Serializable processSynch ( SynchEvent evt ) throws IOException { } protected boolean isConnected ( ) { } protected boolean isConnecting ( ) { } private void checkConnected ( ) throws ConnectException { } protected ID handleConnectResponse ( ID orginalTarget , Object serverData ) throws Exception { } }

Fix:
traceStack ( "Exception<seq2seq4repair_space>in<seq2seq4repair_space>connect" , e ) ;