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


Reply via email to