Hi Steve, How have you determined that there is a deadlock?
At least from the thread dump above, I see no sign of a deadlock. I see a bunch of threads waiting on a lock but that can happen for normal healthy reasons, like waiting on a queue as mentioned elsewhere in this thread. It would be useful if you could explain what you're doing to provoke this "deadlock" - e.g. I start up my app, connect on port xx via telnet and....... If you haven't done it already, it might also be useful to get a packet sniffer up and running to see what interactions (if any) are occurring at network level. Finally, I think it would also help to see how you've configured the Mina stack - what filters have you configured etc. Cheers, Dan. On Fri, Dec 5, 2008 at 8:41 AM, Steve Johns <[EMAIL PROTECTED]>wrote: > I am using mina 1.1.7 and i just want to make the deadlock caused NOT by > mina itself.Thanks. > AnonymousIoService is Acceptor thread? > On Thu, Dec 4, 2008 at 4:36 PM, Emmanuel Lecharny <[EMAIL PROTECTED] > >wrote: > > > Hi, > > > > this is a very small piece of information you gave us to work on !!! We > > don't know anything about your code, about the MINA version you are > using, > > etc ... > > > > The only thing I can see from this TD is that you have 8 thread blocked, > > waiting for some queue to be fed. Those thread are Acceptors waiting for > an > > incoming connection, AFAICS. > > > > More information and context could help... > > > > > > Steve Johns wrote: > > > >> Hi the following is the full thread dump, can someone give any idea if > >> mina > >> itself problem or my program problem? Thanks a lot. > >> > >> "AnonymousIoService-8" daemon prio=6 tid=0x16dd9400 nid=0x1608 waiting > on > >> condit > >> ion [0x1856f000..0x1856fd18] > >> java.lang.Thread.State: WAITING (parking) > >> at sun.misc.Unsafe.park(Native Method) > >> - parking to wait for <0x088f69b0> (a > >> java.util.concurrent.locks.Abstra > >> ctQueuedSynchronizer$ConditionObject) > >> at java.util.concurrent.locks.LockSupport.park(Unknown Source) > >> at > >> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject > >> .await(Unknown Source) > >> at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source) > >> at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown > Source) > >> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown > >> Source) > >> at > >> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnabl > >> e.java:51) > >> at java.lang.Thread.run(Unknown Source) > >> > >> "AnonymousIoService-7" daemon prio=6 tid=0x16dd8400 nid=0xe1c waiting on > >> conditi > >> on [0x1851f000..0x1851fd98] > >> java.lang.Thread.State: WAITING (parking) > >> at sun.misc.Unsafe.park(Native Method) > >> - parking to wait for <0x088f69b0> (a > >> java.util.concurrent.locks.Abstra > >> ctQueuedSynchronizer$ConditionObject) > >> at java.util.concurrent.locks.LockSupport.park(Unknown Source) > >> at > >> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject > >> .await(Unknown Source) > >> at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source) > >> at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown > Source) > >> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown > >> Source) > >> at > >> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnabl > >> e.java:51) > >> at java.lang.Thread.run(Unknown Source) > >> > >> "AnonymousIoService-6" daemon prio=6 tid=0x16cb8800 nid=0x650 waiting on > >> conditi > >> on [0x1826f000..0x1826fa18] > >> java.lang.Thread.State: WAITING (parking) > >> at sun.misc.Unsafe.park(Native Method) > >> - parking to wait for <0x088f69b0> (a > >> java.util.concurrent.locks.Abstra > >> ctQueuedSynchronizer$ConditionObject) > >> at java.util.concurrent.locks.LockSupport.park(Unknown Source) > >> at > >> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject > >> .await(Unknown Source) > >> at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source) > >> at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown > Source) > >> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown > >> Source) > >> at > >> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnabl > >> e.java:51) > >> at java.lang.Thread.run(Unknown Source) > >> > >> "AnonymousIoService-5" daemon prio=6 tid=0x16cb8400 nid=0x123c waiting > on > >> condit > >> ion [0x180df000..0x180dfa98] > >> java.lang.Thread.State: WAITING (parking) > >> at sun.misc.Unsafe.park(Native Method) > >> - parking to wait for <0x088f69b0> (a > >> java.util.concurrent.locks.Abstra > >> ctQueuedSynchronizer$ConditionObject) > >> at java.util.concurrent.locks.LockSupport.park(Unknown Source) > >> at > >> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject > >> .await(Unknown Source) > >> at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source) > >> at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown > Source) > >> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown > >> Source) > >> at > >> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnabl > >> e.java:51) > >> at java.lang.Thread.run(Unknown Source) > >> > >> "AnonymousIoService-4" daemon prio=6 tid=0x16f75c00 nid=0x110c waiting > on > >> condit > >> ion [0x1808f000..0x1808fb18] > >> java.lang.Thread.State: WAITING (parking) > >> at sun.misc.Unsafe.park(Native Method) > >> - parking to wait for <0x088f69b0> (a > >> java.util.concurrent.locks.Abstra > >> ctQueuedSynchronizer$ConditionObject) > >> at java.util.concurrent.locks.LockSupport.park(Unknown Source) > >> at > >> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject > >> .await(Unknown Source) > >> at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source) > >> at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown > Source) > >> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown > >> Source) > >> at > >> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnabl > >> e.java:51) > >> at java.lang.Thread.run(Unknown Source) > >> > >> "AnonymousIoService-3" daemon prio=6 tid=0x16cb7800 nid=0x179c waiting > on > >> condit > >> ion [0x184cf000..0x184cfb98] > >> java.lang.Thread.State: WAITING (parking) > >> at sun.misc.Unsafe.park(Native Method) > >> - parking to wait for <0x088f69b0> (a > >> java.util.concurrent.locks.Abstra > >> ctQueuedSynchronizer$ConditionObject) > >> at java.util.concurrent.locks.LockSupport.park(Unknown Source) > >> at > >> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject > >> .await(Unknown Source) > >> at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source) > >> at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown > Source) > >> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown > >> Source) > >> at > >> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnabl > >> e.java:51) > >> at java.lang.Thread.run(Unknown Source) > >> > >> "AnonymousIoService-2" daemon prio=6 tid=0x16f13800 nid=0x13cc waiting > on > >> condit > >> ion [0x1847f000..0x1847fc18] > >> java.lang.Thread.State: WAITING (parking) > >> at sun.misc.Unsafe.park(Native Method) > >> - parking to wait for <0x088f69b0> (a > >> java.util.concurrent.locks.Abstra > >> ctQueuedSynchronizer$ConditionObject) > >> at java.util.concurrent.locks.LockSupport.park(Unknown Source) > >> at > >> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject > >> .await(Unknown Source) > >> at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source) > >> at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown > Source) > >> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown > >> Source) > >> at > >> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnabl > >> e.java:51) > >> at java.lang.Thread.run(Unknown Source) > >> > >> "AnonymousIoService-1" daemon prio=6 tid=0x16f2bc00 nid=0x12ac waiting > on > >> condit > >> ion [0x1842f000..0x1842fc98] > >> java.lang.Thread.State: WAITING (parking) > >> at sun.misc.Unsafe.park(Native Method) > >> - parking to wait for <0x088f69b0> (a > >> java.util.concurrent.locks.Abstra > >> ctQueuedSynchronizer$ConditionObject) > >> at java.util.concurrent.locks.LockSupport.park(Unknown Source) > >> at > >> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject > >> .await(Unknown Source) > >> at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source) > >> at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown > Source) > >> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown > >> Source) > >> at > >> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnabl > >> e.java:51) > >> at java.lang.Thread.run(Unknown Source) > >> > >> "DestroyJavaVM" prio=6 tid=0x002f5800 nid=0xd38 waiting on condition > >> [0x00000000 > >> ..0x0089fd50] > >> java.lang.Thread.State: RUNNABLE > >> > >> "TimerQueue" daemon prio=6 tid=0x17438c00 nid=0x13bc in Object.wait() > >> [0x1812f00 > >> 0..0x1812fd18] > >> java.lang.Thread.State: WAITING (on object monitor) > >> at java.lang.Object.wait(Native Method) > >> - waiting on <0x08a536b0> (a javax.swing.TimerQueue) > >> at javax.swing.TimerQueue.run(Unknown Source) > >> - locked <0x08a536b0> (a javax.swing.TimerQueue) > >> at java.lang.Thread.run(Unknown Source) > >> > >> "Timer-0" daemon prio=6 tid=0x176ce400 nid=0x1244 in Object.wait() > >> [0x17fdf000.. > >> 0x17fdfb18] > >> java.lang.Thread.State: WAITING (on object monitor) > >> at java.lang.Object.wait(Native Method) > >> - waiting on <0x089b7b30> (a java.util.TaskQueue) > >> at java.lang.Object.wait(Object.java:485) > >> at java.util.TimerThread.mainLoop(Unknown Source) > >> - locked <0x089b7b30> (a java.util.TaskQueue) > >> at java.util.TimerThread.run(Unknown Source) > >> > >> "H2 Log Writer QUOTEIMAGE" daemon prio=6 tid=0x17657800 nid=0x1318 > >> runnable > >> [0x1 > >> 7f8f000..0x17f8fb98] > >> java.lang.Thread.State: RUNNABLE > >> at java.lang.Thread.sleep(Native Method) > >> at org.h2.store.WriterThread.run(WriterThread.java:150) > >> > >> "AWT-EventQueue-0" prio=6 tid=0x175a7800 nid=0x132c runnable > >> [0x17c5f000..0x17c5 > >> fd18] > >> java.lang.Thread.State: RUNNABLE > >> at sun.awt.windows.WDesktopProperties.getWindowsParameters(Native > >> Method > >> ) > >> at sun.awt.windows.WDesktopProperties.diffPropertyChanges(Unknown > >> Source > >> ) > >> - locked <0x08a22d88> (a sun.awt.windows.WDesktopProperties) > >> at sun.awt.windows.WDesktopProperties.access$100(Unknown Source) > >> at > >> sun.awt.windows.WDesktopProperties$DiffPropertyChanges.run(Unknown So > >> urce) > >> at java.awt.event.InvocationEvent.dispatch(Unknown Source) > >> at java.awt.EventQueue.dispatchEvent(Unknown Source) > >> at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown > >> Source) > >> at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown > Source) > >> at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown > >> Source) > >> at java.awt.EventDispatchThread.pumpEvents(Unknown Source) > >> at java.awt.EventDispatchThread.pumpEvents(Unknown Source) > >> at java.awt.EventDispatchThread.run(Unknown Source) > >> > >> "AWT-Windows" daemon prio=6 tid=0x174d8c00 nid=0x1260 runnable > >> [0x17b7f000..0x17 > >> b7fd98] > >> java.lang.Thread.State: RUNNABLE > >> at sun.awt.windows.WToolkit.eventLoop(Native Method) > >> at sun.awt.windows.WToolkit.run(Unknown Source) > >> at java.lang.Thread.run(Unknown Source) > >> > >> "AWT-Shutdown" prio=6 tid=0x174d8400 nid=0xb48 in Object.wait() > >> [0x17b2f000..0x1 > >> 7b2fa18] > >> java.lang.Thread.State: WAITING (on object monitor) > >> at java.lang.Object.wait(Native Method) > >> - waiting on <0x08138600> (a java.lang.Object) > >> at java.lang.Object.wait(Object.java:485) > >> at sun.awt.AWTAutoShutdown.run(Unknown Source) > >> - locked <0x08138600> (a java.lang.Object) > >> at java.lang.Thread.run(Unknown Source) > >> > >> "Java2D Disposer" daemon prio=10 tid=0x174aa800 nid=0x116c in > >> Object.wait() > >> [0x1 > >> 7adf000..0x17adfa98] > >> java.lang.Thread.State: WAITING (on object monitor) > >> at java.lang.Object.wait(Native Method) > >> - waiting on <0x08975fe8> (a java.lang.ref.ReferenceQueue$Lock) > >> at java.lang.ref.ReferenceQueue.remove(Unknown Source) > >> - locked <0x08975fe8> (a java.lang.ref.ReferenceQueue$Lock) > >> at java.lang.ref.ReferenceQueue.remove(Unknown Source) > >> at sun.java2d.Disposer.run(Unknown Source) > >> at java.lang.Thread.run(Unknown Source) > >> > >> "RMI TCP Accept-0" daemon prio=6 tid=0x16e8b400 nid=0x16f0 runnable > >> [0x1738f000. > >> .0x1738fc18] > >> java.lang.Thread.State: RUNNABLE > >> at java.util.HashMap.newValueIterator(Unknown Source) > >> at java.util.HashMap$Values.iterator(Unknown Source) > >> at sun.rmi.transport.tcp.TCPEndpoint.allKnownTransports(Unknown > >> Source) > >> - locked <0x0747eec8> (a java.util.HashMap) > >> at sun.rmi.transport.tcp.TCPEndpoint.shedConnectionCaches(Unknown > >> Source > >> ) > >> at > >> sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(Unkno > >> wn Source) > >> at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(Unknown > >> Source) > >> at java.lang.Thread.run(Unknown Source) > >> > >> "Low Memory Detector" daemon prio=6 tid=0x16cafc00 nid=0xc9c runnable > >> [0x0000000 > >> 0..0x00000000] > >> java.lang.Thread.State: RUNNABLE > >> > >> "CompilerThread0" daemon prio=10 tid=0x16ca6000 nid=0xc50 waiting on > >> condition [ > >> 0x00000000..0x1709f9c0] > >> java.lang.Thread.State: RUNNABLE > >> > >> "Attach Listener" daemon prio=10 tid=0x16ca5400 nid=0x12e4 runnable > >> [0x00000000. > >> .0x00000000] > >> java.lang.Thread.State: RUNNABLE > >> > >> "Signal Dispatcher" daemon prio=10 tid=0x16db0400 nid=0x169c runnable > >> [0x0000000 > >> 0..0x00000000] > >> java.lang.Thread.State: RUNNABLE > >> > >> "Finalizer" daemon prio=8 tid=0x16c8a000 nid=0x10f4 in Object.wait() > >> [0x16daf000 > >> ..0x16dafa98] > >> java.lang.Thread.State: WAITING (on object monitor) > >> at java.lang.Object.wait(Native Method) > >> - waiting on <0x08a368d0> (a java.lang.ref.ReferenceQueue$Lock) > >> at java.lang.ref.ReferenceQueue.remove(Unknown Source) > >> - locked <0x08a368d0> (a java.lang.ref.ReferenceQueue$Lock) > >> at java.lang.ref.ReferenceQueue.remove(Unknown Source) > >> at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) > >> > >> "Reference Handler" daemon prio=10 tid=0x16c88c00 nid=0xab0 in > >> Object.wait() > >> [0x > >> 16d5f000..0x16d5fb18] > >> java.lang.Thread.State: WAITING (on object monitor) > >> at java.lang.Object.wait(Native Method) > >> - waiting on <0x08254270> (a java.lang.ref.Reference$Lock) > >> at java.lang.Object.wait(Object.java:485) > >> at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) > >> - locked <0x08254270> (a java.lang.ref.Reference$Lock) > >> > >> "VM Thread" prio=10 tid=0x16c84400 nid=0x16c8 runnable > >> > >> "GC task thread#0 (ParallelGC)" prio=6 tid=0x002fbc00 nid=0x131c > runnable > >> > >> "GC task thread#1 (ParallelGC)" prio=6 tid=0x002fcc00 nid=0xe58 runnable > >> > >> "GC task thread#2 (ParallelGC)" prio=6 tid=0x002fdc00 nid=0x6e0 runnable > >> > >> "GC task thread#3 (ParallelGC)" prio=6 tid=0x002fec00 nid=0xe50 runnable > >> > >> "VM Periodic Task Thread" prio=10 tid=0x16ef9c00 nid=0xd5c waiting on > >> condition > >> > >> > >> JNI global references: 989 > >> > >> [Full GC [PSYoungGen: 42112K->42112K(50112K)] [PSOldGen: > >> 196607K->196607K(196608 > >> K)] 238719K->238719K(246720K) [PSPermGen: 16839K->16839K(17024K)], > >> 1.1583541 > >> sec > >> s] [Times: user=1.16 sys=0.00, real=1.16 secs] > >> [Full GC [PSYoungGen: 42112K->42112K(50112K)] [PSOldGen: > >> 196607K->196607K(196608 > >> K)] 238719K->238719K(246720K) [PSPermGen: 16839K->16839K(17024K)], > >> 1.3595003 > >> sec > >> s] [Times: user=1.31 sys=0.00, real=1.38 secs] > >> Heap > >> PSYoungGen total 50112K, used 42112K [0x12950000, 0x16950000, > >> 0x16950000) > >> eden space 42112K, 100% used [0x12950000,0x15270000,0x15270000) > >> from space 8000K, 0% used [0x15270000,0x15270000,0x15a40000) > >> to space 11840K, 0% used [0x15dc0000,0x15dc0000,0x16950000) > >> PSOldGen total 196608K, used 196607K [0x06950000, 0x12950000, > >> 0x12950000 > >> ) > >> object space 196608K, 99% used [0x06950000,0x1294fff8,0x12950000) > >> PSPermGen total 17024K, used 16839K [0x02950000, 0x039f0000, > >> 0x06950000) > >> object space 17024K, 98% used [0x02950000,0x039c1e90,0x039f0000) > >> > >> [Full GC [PSYoungGen: 42112K->42112K(50112K)] [PSOldGen: > >> 196607K->196607K(196608 > >> K)] 238719K->238719K(246720K) [PSPermGen: 16839K->16839K(17024K)], > >> 1.1538969 > >> sec > >> s] [Times: user=1.14 sys=0.00, real=1.16 secs] > >> [Full GC [PSYoungGen: 42112K->42111K(50112K)] [PSOldGen: > >> 196607K->196607K(196608 > >> K)] 238719K->238719K(246720K) [PSPermGen: 16839K->16839K(17024K)], > >> 1.1473042 > >> sec > >> s] [Times: user=1.16 sys=0.00, real=1.16 secs] > >> [Full GC [PSYoungGen: 42112K->42112K(50112K)] [PSOldGen: > >> 196607K->196607K(196608 > >> K)] 238719K->238719K(246720K) [PSPermGen: 16839K->16839K(17024K)], > >> 1.4030792 > >> sec > >> s] [Times: user=1.25 sys=0.02, real=1.41 secs] > >> [Full GC > >> > >> > >> > > > > > > -- > > -- > > cordialement, regards, > > Emmanuel Lécharny > > www.iktek.com > > directory.apache.org > > > > > > >
