[
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.