[jboss-jira] [JBoss JIRA] Commented: (JBREM-553) deadlock when disconnecting

Tom Elrod (JIRA) jira-events at jboss.com
Sun Jul 23 15:30:11 EDT 2006


    [ http://jira.jboss.com/jira/browse/JBREM-553?page=comments#action_12339917 ] 
            
Tom  Elrod commented on JBREM-553:
----------------------------------

Am having no success in reproducing deadlock.  Have updated the test cases (will explain test scenario in detail below) to use ssl socket and have client on both client and server.  Can you take a look at test cases to see if there is something else I am missing?

test classes:
org.jboss.test.remoting.detection.multicast.deadlock.DeadlockTestCase
org.jboss.test.remoting.detection.multicast.deadlock.MulticastDetectorClient
org.jboss.test.remoting.detection.multicast.deadlock.MulticastDetectorServer

Test scenario:

MulticastDetectorServer - will setup with multicast detector and connector.  The connector will use sslsocket transport and CLIENT_AUTH_MODE_WANT.  The handler for the connector will expect any invocation calls to contain locator url for connector running within the client (MulticastDetectorClient).  When it gets the locator url, will create and run a ServerClient, which will take the locator url and create a remoting client and make an invocation on that connector and then disconnect.

MulticastDetectorClient - will setup with multicast detector and will then force detection which will return the locator url for the MulticastDetectorServer.  It will then create a connector itself and then create a client that calls on the MulticastDetector server connector (via locator it discovered) and pass the locator url for the connector just created on the client.  Then waits 30 seconds and disconnects.

DeadlockTestCase - driver class for both client and server (so will be local calls instead of remote).  



> deadlock when disconnecting
> ---------------------------
>
>                 Key: JBREM-553
>                 URL: http://jira.jboss.com/jira/browse/JBREM-553
>             Project: JBoss Remoting
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 2.0.0.Beta2 (Boon)
>            Reporter: John Mazzitelli
>         Assigned To: Tom  Elrod
>             Fix For: 2.0.0.CR1 (Boon)
>
>
> I am seeing a deadlock in my test suite.  It happens everytime.  I haven't finished looking at all the data, but I'm submitting this JIRA now because I only started seeing this after building a new remoting jar from HEAD and installing it.  I do not believe any changes that I did caused this (I haven't changed much if any code in my own stuff - though I will test this by switching out to an older remoting jar to see what happens).
> Here's the two threads that deadlocked on java.util.LinkedList<E>  (id=2271:
> Thread [Thread-3562] (Suspended)	
> 	owns: java.io.BufferedInputStream  (id=2299)	
> 	owns: java.util.LinkedList<E>  (id=2271)	
> 	java.net.SocketInputStream.socketRead0(java.io.FileDescriptor, byte[], int, int, int) line: not available [native method]	
> 	java.net.SocketInputStream.read(byte[], int, int) line: 129	
> 	java.io.BufferedInputStream.fill() line: 218	
> 	java.io.BufferedInputStream.read1(byte[], int, int) line: 256	
> 	java.io.BufferedInputStream.read(byte[], int, int) line: 313	
> 	java.io.ObjectInputStream$PeekInputStream.read(byte[], int, int) line: 2217	
> 	java.io.ObjectInputStream$PeekInputStream.readFully(byte[], int, int) line: 2230	
> 	java.io.ObjectInputStream$BlockDataInputStream.readShort() line: 2698	
> 	org.jboss.remoting.loading.ObjectInputStreamWithClassLoader(java.io.ObjectInputStream).readStreamHeader() line: 750	
> 	org.jboss.remoting.loading.ObjectInputStreamWithClassLoader(java.io.ObjectInputStream).<init>(java.io.InputStream) line: 268	
> 	org.jboss.remoting.loading.ObjectInputStreamWithClassLoader.<init>(java.io.InputStream, java.lang.ClassLoader) line: 73	
> 	org.jboss.remoting.serialization.impl.java.JavaSerializationManager.createInput(java.io.InputStream, java.lang.ClassLoader) line: 52	
> 	org.jboss.remoting.transport.socket.ClientSocketWrapper.createInputStream(java.lang.String, java.net.Socket) line: 83	
> 	org.jboss.remoting.transport.socket.ClientSocketWrapper.createStreams(java.net.Socket, java.util.Map) line: 76	
> 	org.jboss.remoting.transport.socket.ClientSocketWrapper.<init>(java.net.Socket, java.util.Map, java.lang.Integer) line: 54	
> 	sun.reflect.GeneratedConstructorAccessor31.newInstance(java.lang.Object[]) line: not available	
> 	sun.reflect.DelegatingConstructorAccessorImpl.newInstance(java.lang.Object[]) line: 27	
> 	java.lang.reflect.Constructor<T>.newInstance(java.lang.Object...) line: 494	
> 	org.jboss.remoting.transport.socket.SocketClientInvoker.createClientSocket(java.net.Socket, int, java.util.Map) line: 158	
> 	org.jboss.remoting.transport.socket.SocketClientInvoker(org.jboss.remoting.transport.socket.MicroSocketClientInvoker).getConnection() line: 666	
> 	org.jboss.remoting.transport.socket.SocketClientInvoker(org.jboss.remoting.transport.socket.MicroSocketClientInvoker).transport(java.lang.String, java.lang.Object, java.util.Map, org.jboss.remoting.marshal.Marshaller, org.jboss.remoting.marshal.UnMarshaller) line: 292	
> 	org.jboss.remoting.transport.socket.SocketClientInvoker(org.jboss.remoting.MicroRemoteClientInvoker).invoke(org.jboss.remoting.InvocationRequest) line: 116	
> 	org.jboss.remoting.ConnectionValidator$2.run() line: 170	
> 	java.lang.Thread.run() line: 595	
> Thread [main] (Suspended)	
> 	owns: java.util.HashMap<K,V>  (id=2272)	
> 	owns: org.jboss.remoting.transport.sslsocket.SSLSocketClientInvoker  (id=2273)	
> 	owns: java.lang.Object  (id=2274)	
> 	owns: java.lang.Object  (id=2275)	
> 	owns: boolean[]  (id=2276)	
> 		waited by: Thread [JON Agent Main] (Running)	
> 		waited by: Thread [JON Agent Main] (Running)	
> 	waiting for: java.util.LinkedList<E>  (id=2271)	
> 		owned by: Thread [Thread-3562] (Running)	
> 	org.jboss.remoting.transport.socket.MicroSocketClientInvoker.clearPool(org.jboss.remoting.transport.socket.ServerAddress) line: 509	
> 	org.jboss.remoting.transport.socket.MicroSocketClientInvoker.clearPools() line: 541	
> 	org.jboss.remoting.transport.sslsocket.SSLSocketClientInvoker(org.jboss.remoting.transport.socket.MicroSocketClientInvoker).handleDisconnect() line: 253	
> 	org.jboss.remoting.transport.sslsocket.SSLSocketClientInvoker(org.jboss.remoting.MicroRemoteClientInvoker).disconnect() line: 287	
> 	org.jboss.remoting.InvokerRegistry.destroyClientInvoker(org.jboss.remoting.InvokerLocator, java.util.Map) line: 225	
> 	org.jboss.remoting.Client.disconnect() line: 536	
> 	org.jboss.on.communications.command.client.JBossRemotingRemoteCommunicator.disconnect() line: 406	
> 	org.jboss.on.communications.command.client.ClientCommandSender.stopSending(boolean) line: 725	
> 	org.jboss.on.agent.AgentMain.shutdown() line: 436	
> 	org.jboss.on.agent.AgentCommTest.tearDown() line: 146	
> 	sun.reflect.GeneratedMethodAccessor26.invoke(java.lang.Object, java.lang.Object[]) line: not available	
> 	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25	
> 	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 585	
> 	org.testng.internal.MethodHelper.invokeMethod(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: 552	
> 	org.testng.internal.Invoker.invokeConfigurationMethod(java.lang.Object[], org.testng.ITestNGMethod, java.lang.Object[], boolean, org.testng.ITestResult) line: 318	
> 	org.testng.internal.Invoker.invokeConfigurations(org.testng.IClass, org.testng.ITestNGMethod[], org.testng.xml.XmlSuite, java.util.Map<java.lang.String,java.lang.String>, java.lang.Object) line: 152	
> 	org.testng.internal.Invoker.invokeMethod(java.lang.Object[], org.testng.ITestNGMethod, java.lang.Object[], org.testng.xml.XmlSuite, java.util.Map<java.lang.String,java.lang.String>, org.testng.ITestClass, org.testng.ITestNGMethod[], org.testng.ITestNGMethod[], org.testng.internal.ConfigurationGroupMethods) line: 483	
> 	org.testng.internal.Invoker.invokeTestMethods(org.testng.ITestNGMethod, org.testng.xml.XmlSuite, java.util.Map<java.lang.String,java.lang.String>, org.testng.ITestNGMethod[], int, org.testng.internal.ConfigurationGroupMethods) line: 778	
> 	org.testng.internal.TestMethodWorker.run() line: 105	
> 	org.testng.TestRunner.privateRun(org.testng.xml.XmlTest) line: 682	
> 	org.testng.TestRunner.run() line: 566	
> 	org.testng.SuiteRunner.privateRun() line: 220	
> 	org.testng.SuiteRunner.run() line: 146	
> 	org.testng.TestNG.createAndRunSuiteRunners(org.testng.xml.XmlSuite) line: 713	
> 	org.testng.TestNG.runSuitesLocally() line: 676	
> 	org.apache.maven.surefire.testng.TestNGExecutor.executeTestNG(org.apache.maven.surefire.suite.SurefireTestSuite, java.lang.String, org.testng.xml.XmlSuite, org.apache.maven.surefire.report.ReporterManager) line: 64	
> 	org.apache.maven.surefire.testng.TestNGXmlTestSuite.execute(org.apache.maven.surefire.report.ReporterManager, java.lang.ClassLoader) line: 75	
> 	org.apache.maven.surefire.Surefire.run(java.util.List, java.util.List, java.lang.ClassLoader, java.lang.ClassLoader) line: 129	
> 	sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]	
> 	sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 39	
> 	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25	
> 	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 585	
> 	org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess() line: 225	
> 	org.apache.maven.surefire.booter.SurefireBooter.main(java.lang.String[]) line: 747	

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list