Uploaded image for project: 'MINA'
  1. MINA
  2. DIRMINA-138

Deadlock in SSLFilter

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • None
    • 0.9.0
    • None
    • None
    • Java 5, Linux FC3

    Description

      Found a deadlock in the SSLFilter implementation. This has happened quite a few times, even with the latest 0.9 snapshots.

      This deadlock is causing all writes to block, effectively bringing the server to a standstill.

      Stack trace of IoThreadPool-1 -

      Name: IoThreadPool-1
      State: BLOCKED on java.lang.Object@ccbab7 owned by: Thread-20
      Total blocked: 6 Total waited: 27

      Stack trace:
      org.apache.mina.common.support.BaseIoSession.close(BaseIoSession.java:109)
      com.geodesiconline.mims.io.MIMSIoSession.close(MIMSIoSession.java:56)
      com.geodesiconline.mims.io.LocalIoSession.close(LocalIoSession.java:190)
      com.geodesiconline.mims.io.IoHandlerImpl.sessionClosed(IoHandlerImpl.java:102)
      org.apache.mina.common.support.AbstractIoFilterChain$2.sessionClosed(AbstractIoFilterChain.java:163)
      org.apache.mina.common.support.AbstractIoFilterChain.callNextSessionClosed(AbstractIoFilterChain.java:453)
      org.apache.mina.common.support.AbstractIoFilterChain.access$700(AbstractIoFilterChain.java:52)
      org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.sessionClosed(AbstractIoFilterChain.java:742)
      org.apache.mina.filter.SSLFilter.sessionClosed(SSLFilter.java:376)
      org.apache.mina.common.support.AbstractIoFilterChain.callNextSessionClosed(AbstractIoFilterChain.java:453)
      org.apache.mina.common.support.AbstractIoFilterChain.access$700(AbstractIoFilterChain.java:52)
      org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.sessionClosed(AbstractIoFilterChain.java:742)
      org.apache.mina.filter.ThreadPoolFilter.processEvent(ThreadPoolFilter.java:687)
      org.apache.mina.filter.ThreadPoolFilter$Worker.processEvents(ThreadPoolFilter.java:421)
      org.apache.mina.filter.ThreadPoolFilter$Worker.run(ThreadPoolFilter.java:376)

      Stack trace of Thread-20 -

      Name: Thread-20
      State: BLOCKED on org.apache.mina.transport.socket.nio.support.SocketSessionImpl@bebb88 owned by: IoThreadPool-1
      Total blocked: 5 Total waited: 5

      Stack trace:
      org.apache.mina.filter.SSLFilter.filterWrite(SSLFilter.java:493)
      org.apache.mina.common.support.AbstractIoFilterChain.callPreviousFilterWrite(AbstractIoFilterChain.java:556)
      org.apache.mina.common.support.AbstractIoFilterChain.access$1200(AbstractIoFilterChain.java:52)
      org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.filterWrite(AbstractIoFilterChain.java:773)
      org.apache.mina.common.support.AbstractIoFilterChain$2.filterWrite(AbstractIoFilterChain.java:213)
      org.apache.mina.common.support.AbstractIoFilterChain.callPreviousFilterWrite(AbstractIoFilterChain.java:556)
      org.apache.mina.common.support.AbstractIoFilterChain.filterWrite(AbstractIoFilterChain.java:547)
      org.apache.mina.transport.socket.nio.support.SocketSessionImpl.write0(SocketSessionImpl.java:131)
      org.apache.mina.common.support.BaseIoSession.write(BaseIoSession.java:143)
      com.geodesiconline.mims.io.MIMSIoSession.write(MIMSIoSession.java:127)
      com.geodesiconline.mims.io.LocalIoSession.write(LocalIoSession.java:133)
      com.geodesiconline.mims.protocol.xmpp.handler.AbstractHandler.writeStreamError(AbstractHandler.java:306)
      com.geodesiconline.mims.protocol.xmpp.handler.AbstractHandler.retrieveAndSetActiveDefaultListItems(AbstractHandler.java:1522)
      com.geodesiconline.mims.protocol.xmpp.handler.AbstractHandler.isStanzaBlocked(AbstractHandler.java:828)
      com.geodesiconline.mims.protocol.xmpp.handler.AsynchronousStanzaHandler.writePresence(AsynchronousStanzaHandler.java:432)
      com.geodesiconline.mims.protocol.xmpp.handler.CommonPresence.sendPresence(CommonPresence.java:170)
      com.geodesiconline.mims.protocol.xmpp.handler.PresenceBroadcastHandler.broadcastPresenceContact(PresenceBroadcastHandler.java:237)
      com.geodesiconline.mims.protocol.xmpp.handler.PresenceBroadcastHandler.processOutboundStanza(PresenceBroadcastHandler.java:71)
      com.geodesiconline.mims.protocol.xmpp.handler.AsynchronousStanzaHandler.processStanza(AsynchronousStanzaHandler.java:320)
      com.geodesiconline.mims.protocol.xmpp.handler.InitialPresenceHandler.sendInitialPresence(InitialPresenceHandler.java:140)
      com.geodesiconline.mims.protocol.xmpp.handler.InitialPresenceHandler.processOutboundStanza(InitialPresenceHandler.java:89)
      com.geodesiconline.mims.protocol.xmpp.handler.AsynchronousStanzaHandler.processStanza(AsynchronousStanzaHandler.java:320)
      com.geodesiconline.mims.protocol.xmpp.handler.PresenceHandler.processStanza(PresenceHandler.java:225)
      com.geodesiconline.mims.protocol.xmpp.handler.AbstractHandler.handleStanza(AbstractHandler.java:195)
      com.geodesiconline.mims.protocol.xmpp.io.XMPPIoHandler.processData(XMPPIoHandler.java:464)
      com.geodesiconline.mims.protocol.xmpp.io.XMPPIoHandler.messageReceived(XMPPIoHandler.java:180)
      com.geodesiconline.mims.protocol.xmpp.io.XMPPIoHandler.notified(XMPPIoHandler.java:660)
      com.geodesiconline.mims.event.EventManager$1.run(EventManager.java:196)
      java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
      java.lang.Thread.run(Thread.java:595)

      All the other threads are queued up behind Thread-20

      Attachments

        Activity

          People

            trustin Trustin Lee
            vinod.p Vinod Panicker
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: