Stuck in an infinite loop inside Netty when shutting down NIO client

tsuna tsunanet at gmail.com
Mon Nov 22 11:46:45 EST 2010


On Mon, Nov 22, 2010 at 2:08 AM, "이희승 (Trustin Lee)" <trustin at gmail.com> wrote:
> This is pretty weird - is it always stuck at IOUtil.drain()?

Hmm, no, actually it seems to be changing over time, but the threads
don't wanna go away.
Other stack traces I've seen:

"New I/O client worker #1-3" prio=10 tid=0x00002aabb0be6800 nid=0x5b3
runnable [0x0000000042250000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:210)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
	- locked <0x00002aab5fee01c8> (a sun.nio.ch.Util$1)
	- locked <0x00002aab5fee01e0> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00002aab5fee0138> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
	at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:38)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:164)
	at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
	at org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
	- <0x00002aab5fea2c58> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

"New I/O client worker #1-2" prio=10 tid=0x00002aabb0bcd000 nid=0x5b2
runnable [0x0000000040b14000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.interrupt(Native Method)
	at sun.nio.ch.EPollArrayWrapper.interrupt(EPollArrayWrapper.java:256)
	at sun.nio.ch.EPollSelectorImpl.wakeup(EPollSelectorImpl.java:175)
	- locked <0x00002aab5fee02f0> (a java.lang.Object)
	at java.nio.channels.spi.AbstractSelector$1.interrupt(AbstractSelector.java:193)
	at java.nio.channels.spi.AbstractSelector.begin(AbstractSelector.java:198)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:64)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
	- locked <0x00002aab5fee0378> (a sun.nio.ch.Util$1)
	- locked <0x00002aab5fee0390> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00002aab5fee0300> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
	at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:38)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:164)
	at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
	at org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
	- <0x00002aab5fea2508> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)


I put the complete output of a few consecutive calls to jstack -l at
https://gist.github.com/709554#gistcomment-14603 where you can also
see timestamps to see how much time there is between each call.

-- 
Benoit "tsuna" Sigoure
Software Engineer @ www.StumbleUpon.com



More information about the netty-users mailing list