[ 
https://issues.apache.org/jira/browse/DIRMINA-169?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Emmanuel Lecharny closed DIRMINA-169.
-------------------------------------


> Deadlock in ThreadPoolFilter
> ----------------------------
>
>                 Key: DIRMINA-169
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-169
>             Project: MINA
>          Issue Type: Bug
>    Affects Versions: 0.9.0
>            Reporter: Rurik Krylov
>            Assignee: Niklas Therning
>             Fix For: 0.9.3
>
>
> The dedlock occurs in case of simultaniously closing sessions. You can find 
> thread dumps below. 
> When 2 threads reach synchronized method callDestroyIfNecessary, reference 
> count is 0 already. So first thread tries to interrupt() second worker, but 
> it cannot be interrupted because it is lying on the synch block. 
> I'm not familar with this architecture, but from my point of of view 
> ThreadPoolFilter as singleton should not have too many synchronized methods. 
> In this particular case, synchronization of method callDestroyIfNecessary 
> should be narrowed to synchronisztion collection operations only.
> filter.destroy() need not of synchronisation, and just it causes the deadlock.
> iothreadpoo...@547 prio=5, in group "main", status: WAIT
>        blocks iothreadpoo...@548
>        blocks socketaccepto...@4e9
>         wait():-1, Object.java
>         join():1103, Thread.java
>         destroy():209, ThreadPoolFilter.java
>         callDestroyIfNecessary():171, IoFilterLifeCycleManager.java
>         deregister():363, AbstractIoFilterChain.java
>         remove():295, AbstractIoFilterChain.java
>         clear():304, AbstractIoFilterChain.java
>         sessionClosed():168, AbstractIoFilterChain.java
>         callNextSessionClosed():453, AbstractIoFilterChain.java
>         access$700():52, AbstractIoFilterChain.java
>         sessionClosed():742, AbstractIoFilterChain.java
>         sessionClosed():165, ProtocolCodecFilter.java
>         callNextSessionClosed():453, AbstractIoFilterChain.java
>         access$700():52, AbstractIoFilterChain.java
>         sessionClosed():742, AbstractIoFilterChain.java
>         processEvent():687, ThreadPoolFilter.java
>         processEvents():421, ThreadPoolFilter.java
>         run():376, ThreadPoolFilter.java
> iothreadpoo...@548 prio=5, in group "main", status: MONITOR
>        waiting for iothreadpoo...@547
>         callDestroyIfNecessary():160, IoFilterLifeCycleManager.java
>         deregister():363, AbstractIoFilterChain.java
>         remove():295, AbstractIoFilterChain.java
>         clear():304, AbstractIoFilterChain.java
>         sessionClosed():168, AbstractIoFilterChain.java
>         callNextSessionClosed():453, AbstractIoFilterChain.java
>         access$700():52, AbstractIoFilterChain.java
>         sessionClosed():742, AbstractIoFilterChain.java
>         sessionClosed():165, ProtocolCodecFilter.java
>         callNextSessionClosed():453, AbstractIoFilterChain.java
>         access$700():52, AbstractIoFilterChain.java
>         sessionClosed():742, AbstractIoFilterChain.java
>         processEvent():687, ThreadPoolFilter.java
>         processEvents():421, ThreadPoolFilter.java
>         run():376, ThreadPoolFilter.java

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to