Opps... someone pointed out to me that JProfiler is filtering those
call stacks tremendously. The threads weren't created directly in the
methods I mentioned before, but from methods called from those.
Complete (and hopefully accurate this time) call stacks for the two
threads that remain after each attempt (I believe this is the call stack
of the thread creating the one that's going to wait forever, but only
JProfiler knows for sure)
Thread-N (N1 = N0 + 4)
org.apache.mina.transport.serial.SerialSessionImpl$SerialIoProcessor.flush(org.apache.mina.transport.serial.SerialSessionImpl)
org.apache.mina.transport.serial.SerialSessionImpl$SerialIoProcessor.flush(org.apache.mina.core.session.IoSession)
org.apache.mina.core.filterchain.DefaultIoFilterChain$HeadFilter.filterWrite(org.apache.mina.core.filterchain.IoFilter$NextFilter,
org.apache.mina.core.session.IoSession,
org.apache.mina.core.write.WriteRequest)
org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(org.apache.mina.core.filterchain.IoFilterChain$Entry,
org.apache.mina.core.session.IoSession,
org.apache.mina.core.write.WriteRequest)
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1400(org.apache.mina.core.filterchain.DefaultIoFilterChain,
org.apache.mina.core.filterchain.IoFilterChain$Entry,
org.apache.mina.core.session.IoSession,
org.apache.mina.core.write.WriteRequest)
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(org.apache.mina.core.session.IoSession,
org.apache.mina.core.write.WriteRequest)
org.apache.mina.core.filterchain.IoFilterAdapter.filterWrite(org.apache.mina.core.filterchain.IoFilter$NextFilter,
org.apache.mina.core.session.IoSession,
org.apache.mina.core.write.WriteRequest)
org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(org.apache.mina.core.filterchain.IoFilterChain$Entry,
org.apache.mina.core.session.IoSession,
org.apache.mina.core.write.WriteRequest)
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1400(org.apache.mina.core.filterchain.DefaultIoFilterChain,
org.apache.mina.core.filterchain.IoFilterChain$Entry,
org.apache.mina.core.session.IoSession,
org.apache.mina.core.write.WriteRequest)
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(org.apache.mina.core.session.IoSession,
org.apache.mina.core.write.WriteRequest)
org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolEncoderOutputImpl.flushWithoutFuture()
org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(org.apache.mina.core.filterchain.IoFilter$NextFilter,
org.apache.mina.core.session.IoSession,
org.apache.mina.core.write.WriteRequest)
org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(org.apache.mina.core.filterchain.IoFilterChain$Entry,
org.apache.mina.core.session.IoSession,
org.apache.mina.core.write.WriteRequest)
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1400(org.apache.mina.core.filterchain.DefaultIoFilterChain,
org.apache.mina.core.filterchain.IoFilterChain$Entry,
org.apache.mina.core.session.IoSession,
org.apache.mina.core.write.WriteRequest)
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(org.apache.mina.core.session.IoSession,
org.apache.mina.core.write.WriteRequest)
org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.filterWrite(org.apache.mina.core.filterchain.IoFilter$NextFilter,
org.apache.mina.core.session.IoSession,
org.apache.mina.core.write.WriteRequest)
org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(org.apache.mina.core.filterchain.IoFilterChain$Entry,
org.apache.mina.core.session.IoSession,
org.apache.mina.core.write.WriteRequest)
org.apache.mina.core.filterchain.DefaultIoFilterChain.fireFilterWrite(org.apache.mina.core.write.WriteRequest)
org.apache.mina.core.session.AbstractIoSession.write(java.lang.Object,
java.net.SocketAddress)
org.apache.mina.core.session.AbstractIoSession.write(java.lang.Object)
com.ekosystems.frontiers.pdr.framework.transport.PdrProtocolEngine.write(org.apache.mina.core.session.IoSession,
com.ekosystems.frontiers.pdr.proto.PdrProtocolWidget)
com.ekosystems.frontiers.pdr.framework.transport.PdrProtocolEngine$SessionWriteRunnable.run()
java.util.concurrent.ThreadPoolExecutor$Worker.run()
SerialConnector-N-idleStatusChecker
java.util.concurrent.Executor.execute(java.lang.Runnable)
org.apache.mina.core.service.AbstractIoService.executeWorker(java.lang.Runnable,
java.lang.String)
org.apache.mina.transport.serial.SerialConnector.<init>(java.util.concurrent.Executor)
org.apache.mina.transport.serial.SerialConnector.<init>()
com.ekosystems.frontiers.pdr.monitors.IoAddress$Serial.createIoConnector()
com.ekosystems.frontiers.pdr.monitors.PdrMonitor.buildIoConnector()
com.ekosystems.frontiers.pdr.monitors.PdrMonitor.open(java.net.SocketAddress)
com.ekosystems.frontiers.pdr.monitors.PdrMonitor.open(com.ekosystems.frontiers.pdr.monitors.IoAddress)
com.ekosystems.frontiers.pdr.framework.PortManager.openConnection(com.ekosystems.frontiers.pdr.monitors.Monitor)
com.ekosystems.frontiers.pdr.framework.PortManager.establishConnection(com.ekosystems.frontiers.pdr.monitors.Monitor)
com.ekosystems.frontiers.pdr.framework.PortManager.run()
I am digging through Mina source code myself right now, but am very
unfamiliar with the internals....
Thanks in advance!
boB
--
boB Gage
Software Engineer
Merge Healthcare
This message is a PRIVATE communication. This message and all
attachments are a private communication and may be confidential or
protected by privilege. If you are not the intended recipient, you are
hereby notified that any disclosure, copying, distribution or use of the
information contained in or attached to this message is strictly
prohibited. Please notify the sender of the delivery error by replying
to this message, and then delete it from your system. Thank you.