Am 02.01.2011 18:17, schrieb Emmanuel Lecharny:
So it sounds like a JDK bug ? What would be interesting is to get a
threadump, as it's easier to analyse than a screenshot. On linux, a
kill -3 is the way to go.
Yes, sounds like a OpenJDK bug related to NIO/selector mechanism.
Here's the requested thread-dump:
--threaddump--
Full thread dump OpenJDK Core VM (1.6.0_0-b11 interpreted mode):
"QueueMessageProcessor[myQueue]" prio=10 tid=0x67405210 nid=0x29a in
Object.wait() [0x67b8d000..0x67b8d9fc]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x42a80070> (a java.util.ArrayList)
at
de.root1.mms.QueueMessageProcessor.run(QueueMessageProcessor.java:56)
- locked <0x42a80070> (a java.util.ArrayList)
"NioSocketAcceptor-1" prio=10 tid=0x0016a828 nid=0x297 runnable
[0x67a8d000..0x67a8da7c]
java.lang.Thread.State: RUNNABLE
at sun.misc.SharedSecrets.getJavaLangAccess(SharedSecrets.java:69)
at
java.nio.channels.spi.AbstractInterruptibleChannel.blockedOn(AbstractInterruptibleChannel.java:208)
at
java.nio.channels.spi.AbstractSelector.end(AbstractSelector.java:227)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:85)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
- locked <0x48f3dd18> (a sun.nio.ch.Util$1)
- locked <0x48f3dd08> (a java.util.Collections$UnmodifiableSet)
- locked <0x48f37c88> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102)
at
org.apache.mina.transport.socket.nio.NioSocketAcceptor.select(NioSocketAcceptor.java:285)
at
org.apache.mina.core.polling.AbstractPollingIoAcceptor$Acceptor.run(AbstractPollingIoAcceptor.java:401)
at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)
"EasyModulesCore Thread-3" prio=10 tid=0x001f0208 nid=0x296 waiting on
condition [0x6798d000..0x6798dafc]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at
de.root1.easymodules.basicmodules.core.EasyModulesCore.run(EasyModulesCore.java:100)
"DestroyJavaVM" prio=10 tid=0x0001e8e8 nid=0x289 waiting on condition
[0x00000000..0x40673b74]
java.lang.Thread.State: RUNNABLE
"Deployer" prio=10 tid=0x0012ac78 nid=0x294 waiting on condition
[0x6788d000..0x6788db7c]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at de.root1.mas.deployer.Deployer.run(Deployer.java:336)
at java.lang.Thread.run(Thread.java:636)
"RMI TCP Accept-0" daemon prio=10 tid=0x00101918 nid=0x292 runnable
[0x676fe000..0x676fe87c]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at
java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:358)
at java.net.ServerSocket.implAccept(ServerSocket.java:470)
at java.net.ServerSocket.accept(ServerSocket.java:438)
at
sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:52)
at
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:387)
at
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:359)
at java.lang.Thread.run(Thread.java:636)
"RMI TCP Accept-44444" daemon prio=10 tid=0x000fbc08 nid=0x290 runnable
[0x675fe000..0x675fe8fc]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at
java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:358)
at java.net.ServerSocket.implAccept(ServerSocket.java:470)
at java.net.ServerSocket.accept(ServerSocket.java:438)
at
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:387)
at
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:359)
at java.lang.Thread.run(Thread.java:636)
"RMI TCP Accept-0" daemon prio=10 tid=0x000f42e8 nid=0x28f runnable
[0x673f5000..0x673f597c]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at
java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:358)
at java.net.ServerSocket.implAccept(ServerSocket.java:470)
at java.net.ServerSocket.accept(ServerSocket.java:438)
at
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:387)
at
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:359)
at java.lang.Thread.run(Thread.java:636)
"Low Memory Detector" daemon prio=10 tid=0x0008bc30 nid=0x28e runnable
[0x00000000..0x00000000]
java.lang.Thread.State: RUNNABLE
"Signal Dispatcher" daemon prio=10 tid=0x0008a4e0 nid=0x28d waiting on
condition [0x00000000..0x00000000]
java.lang.Thread.State: RUNNABLE
"Finalizer" daemon prio=10 tid=0x00076ab0 nid=0x28c in Object.wait()
[0x66e1f000..0x66e1fafc]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x48e62c08> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:133)
- locked <0x48e62c08> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:149)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:177)
"Reference Handler" daemon prio=10 tid=0x000757d8 nid=0x28b in
Object.wait() [0x66d1f000..0x66d1fb7c]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x48e62c90> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:502)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
- locked <0x48e62c90> (a java.lang.ref.Reference$Lock)
"VM Thread" prio=10 tid=0x000726e0 nid=0x28a runnable
"VM Periodic Task Thread" prio=10 tid=0x00103758 nid=0x293 waiting on
condition
JNI global references: 155
Heap
def new generation total 2752K, used 1307K [0x427d0000, 0x42ac0000,
0x48e30000)
eden space 2496K, 49% used [0x427d0000, 0x429076a8, 0x42a40000)
from space 256K, 24% used [0x42a80000, 0x42a8f840, 0x42ac0000)
to space 256K, 0% used [0x42a40000, 0x42a40000, 0x42a80000)
tenured generation total 11920K, used 11143K [0x48e30000,
0x499d4000, 0x627d0000)
the space 11920K, 93% used [0x48e30000, 0x49911cc8, 0x49911e00,
0x499d4000)
compacting perm gen total 18432K, used 18275K [0x627d0000,
0x639d0000, 0x667d0000)
the space 18432K, 99% used [0x627d0000, 0x639a8fe0, 0x639a9000,
0x639d0000)
No shared spaces configured.
--/threaddump--
The NioSocketAcceptor Thread is always in runnable state. Here's another
dump of this thread, taken a few seconds after the first dump:
--dump--
"NioSocketAcceptor-1" prio=10 tid=0x0016a828 nid=0x297 runnable
[0x67a8d000..0x67a8da7c]
java.lang.Thread.State: RUNNABLE
at sun.misc.Unsafe.getInt(Native Method)
at sun.nio.ch.NativeObject.getInt(NativeObject.java:256)
at
sun.nio.ch.EPollArrayWrapper.getDescriptor(EPollArrayWrapper.java:162)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:235)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:83)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
- locked <0x48f3dd18> (a sun.nio.ch.Util$1)
- locked <0x48f3dd08> (a java.util.Collections$UnmodifiableSet)
- locked <0x48f37c88> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102)
at
org.apache.mina.transport.socket.nio.NioSocketAcceptor.select(NioSocketAcceptor.java:285)
at
org.apache.mina.core.polling.AbstractPollingIoAcceptor$Acceptor.run(AbstractPollingIoAcceptor.java:401)
at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)
--/dump--
and again a few seconds later:
--dump--
"NioSocketAcceptor-1" prio=10 tid=0x0016a828 nid=0x297 runnable
[0x67a8d000..0x67a8da7c]
java.lang.Thread.State: RUNNABLE
at java.lang.Thread.isInterrupted(Native Method)
at java.lang.Thread.isInterrupted(Thread.java:907)
at
java.nio.channels.spi.AbstractSelector.begin(AbstractSelector.java:214)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:82)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
- locked <0x48f3dd18> (a sun.nio.ch.Util$1)
- locked <0x48f3dd08> (a java.util.Collections$UnmodifiableSet)
- locked <0x48f37c88> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102)
at
org.apache.mina.transport.socket.nio.NioSocketAcceptor.select(NioSocketAcceptor.java:285)
at
org.apache.mina.core.polling.AbstractPollingIoAcceptor$Acceptor.run(AbstractPollingIoAcceptor.java:401)
at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)
--/dump--
The whole time, there was no client connected to server or trying to
connect to server.
Otherwise, give a try to MINA 2.0.3, there are a few fixed issues in it.
2.0.3 ??? I thought 2.0.2 is/was the latest release? I did not find a
newer version than 2.0.2 on the webpage, in maven central repo, ...
Or did you refer to 2.0.3 development snapshot via SVN?!
br,
Alex