Check my graphic in the previous email. On Mon, Dec 12, 2022 at 3:53 AM Emmanuel Lécharny <elecha...@gmail.com> wrote:
> Hi Guus, > > there is something missing in the stacck trace: the two threads are > blocked on different monitors: > * SSLHandlerG0@99f49e2 owned by socket_c2s_ssl-thread-2 > * StreamManager@7e024771 owned by TaskEngine-pool-3 > > they are not related, they are not blocking each one other. > > Can you provide the full stack trace ? > > Thanks ! > > > On 09/12/2022 10:02, Guus der Kinderen wrote: > > Hello, > > > > I wonder if MINA 2.2.1 introduces a new potential for deadlock in its > > SSLHandler implementation. Did something change there, as compared to > MINA > > 2.1.3? > > > > Since this upgrade, we consistently run into a thread deadlock. One of > the > > threads that is deadlocking is sending data to the peer, while the other > is > > processing data from the peer. The deadlock involves a MINA-based lock > (in > > SSLHandler), and a lock in our code (StreamManager), that is responsible > > for recording what packets that are exchanged have been acknowledged by > the > > peer. The latter did not change, so I'm suspecting a change in > SSLHandler. > > > > The stack traces of two deadlocked threads are added to this email. > > > > Kind regards, > > > > Guus > > > > > > "TaskEngine-pool-3" #40 daemon prio=5 waiting on lock > > java.lang.Thread.State: BLOCKED > > - blocked on org.apache.mina.filter.ssl.SSLHandlerG0@99f49e2 (owned > by > > socket_c2s_ssl-thread-2 id=78) > > at > org.apache.mina.filter.ssl.SSLHandlerG0.write(SSLHandlerG0.java:312) > > at > org.apache.mina.filter.ssl.SslFilter.filterWrite(SslFilter.java:380) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:753) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(DefaultIoFilterChain.java:49) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:1146) > > at > > > org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:301) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:753) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(DefaultIoFilterChain.java:49) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:1146) > > at > > > org.apache.mina.core.filterchain.IoFilterAdapter.filterWrite(IoFilterAdapter.java:138) > > at > > org.jivesoftware.openfire.net > .StalledSessionsFilter.filterWrite(StalledSessionsFilter.java:61) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:753) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(DefaultIoFilterChain.java:49) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:1146) > > at > > > org.apache.mina.core.filterchain.IoFilterAdapter.filterWrite(IoFilterAdapter.java:138) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:753) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain.fireFilterWrite(DefaultIoFilterChain.java:746) > > at > > > org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:575) > > at > > > org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:520) > > at > > > org.jivesoftware.openfire.nio.NIOConnection.deliver(NIOConnection.java:349) > > at > > > org.jivesoftware.openfire.session.LocalClientSession.deliver(LocalClientSession.java:928) > > - locked > org.jivesoftware.openfire.streammanagement.StreamManager@7e024771 > > at > > > org.jivesoftware.openfire.session.LocalSession.process(LocalSession.java:407) > > at > > > org.jivesoftware.openfire.spi.RoutingTableImpl.routeToLocalDomain(RoutingTableImpl.java:439) > > at > > > org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.java:350) > > at org.jivesoftware.openfire.IQRouter.handle(IQRouter.java:426) > > at org.jivesoftware.openfire.IQRouter.route(IQRouter.java:106) > > at > > > org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:74) > > at > > > org.jivesoftware.openfire.pubsub.PubSubEngine.publishItemsToNode(PubSubEngine.java:428) > > at > > org.jivesoftware.openfire.pubsub.PubSubEngine$1.run(PubSubEngine.java:96) > > at java.base@11.0.17 > > /java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) > > at java.base@11.0.17 > > /java.util.concurrent.FutureTask.run(FutureTask.java:264) > > at java.base@11.0.17 > > > /java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) > > at java.base@11.0.17 > > > /java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) > > at java.base@11.0.17/java.lang.Thread.run(Thread.java:829) > > > > "socket_c2s_ssl-thread-2" #78 daemon prio=5 waiting on lock > > java.lang.Thread.State: BLOCKED > > - blocked on > > org.jivesoftware.openfire.streammanagement.StreamManager@7e024771 > (owned by > > TaskEngine-pool-3 id=40) > > at > > > org.jivesoftware.openfire.streammanagement.StreamManager.processClientAcknowledgement(StreamManager.java:493) > > at > > > org.jivesoftware.openfire.streammanagement.StreamManager.process(StreamManager.java:185) > > at > > org.jivesoftware.openfire.net > .StanzaHandler.process(StanzaHandler.java:223) > > at > > > org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandler.java:178) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:1015) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:650) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:49) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:1128) > > at > > > org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:122) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:650) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:49) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:1128) > > at > > > org.apache.mina.filter.codec.AbstractProtocolDecoderOutput.flush(AbstractProtocolDecoderOutput.java:64) > > at > > > org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:249) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:650) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:49) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:1128) > > at > > > org.apache.mina.filter.ssl.SSLHandlerG0.receive_loop(SSLHandlerG0.java:236) > > at > org.apache.mina.filter.ssl.SSLHandlerG0.receive(SSLHandlerG0.java:162) > > - locked org.apache.mina.filter.ssl.SSLHandlerG0@99f49e2 > > at > > org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:342) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:650) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:49) > > at > > > org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:1128) > > at > > > org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:106) > > at org.apache.mina.core.session.IoEvent.run(IoEvent.java:89) > > at > > > org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTask(OrderedThreadPoolExecutor.java:763) > > at > > > org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(OrderedThreadPoolExecutor.java:755) > > at > > > org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThreadPoolExecutor.java:695) > > at java.base@11.0.17/java.lang.Thread.run(Thread.java:829) > > > > -- > *Emmanuel Lécharny - CTO* 205 Promenade des Anglais – 06200 NICE > T. +33 (0)4 89 97 36 50 > P. +33 (0)6 08 33 32 61 > emmanuel.lecha...@busit.com https://www.busit.com/ > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@mina.apache.org > For additional commands, e-mail: users-h...@mina.apache.org > > -- CONFIDENTIALITY NOTICE: The contents of this email message and any attachments are intended solely for the addressee(s) and may contain confidential and/or privileged information and may be legally protected from disclosure.