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.

Reply via email to