[jira] [Commented] (DIRMINA-1119) Deadlock when using SSL and proxy

2019-09-09 Thread Christoph John (Jira)


[ 
https://issues.apache.org/jira/browse/DIRMINA-1119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16925413#comment-16925413
 ] 

Christoph John commented on DIRMINA-1119:
-

Just a question: you are surely testing this with MINA 2.1.3? Because 
QuickFIX/J with MINA 2.1.3 has not been released yet. But I guess you simply 
swapped out the mina JARs then?

> Deadlock when using SSL and proxy
> -
>
> Key: DIRMINA-1119
> URL: https://issues.apache.org/jira/browse/DIRMINA-1119
> Project: MINA
>  Issue Type: Bug
>  Components: Core, Filter
>Affects Versions: 2.1.3
>Reporter: Sergey Staritsin
>Priority: Critical
>
> The issue seems to be the same as DIRMINA-995 (at least they have exactly the 
> same symptoms and conditions). 
>  
> 2019-09-09 12:04:38
> Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.151-b12 mixed mode):
> Found one Java-level deadlock:
> =
> "NioProcessor-138":
>  waiting to lock monitor 0x0001040b88f8 (object 0x2ef07520, a 
> org.apache.mina.filter.ssl.SslHandler),
>  which is held by "OutputEventRoutingHandler"
> "OutputEventRoutingHandler":
>  waiting to lock monitor 0x00010386a108 (object 0x2eff53b0, a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler),
>  which is held by "NioProcessor-138" 
>  
> Java stack information for the threads listed above:
>  ===
>  "NioProcessor-138":
>  at 
> org.apache.mina.filter.ssl.SslFilter.getSslSessionHandler(SslFilter.java:823)
>  - waiting to lock <0x2ef07520> (a 
> org.apache.mina.filter.ssl.SslHandler)
>  at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:499)
>  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.proxy.filter.ProxyFilter.messageReceived(ProxyFilter.java:153)
>  - locked <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  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.fireMessageReceived(DefaultIoFilterChain.java:643)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:539)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.access$1200(AbstractPollingIoProcessor.java:68)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1222)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1211)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:683)
>  at 
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
>  at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>  at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>  at java.lang.Thread.run(Thread.java:748)
>  "OutputEventRoutingHandler":
>  at org.apache.mina.proxy.filter.ProxyFilter.writeData(ProxyFilter.java:214)
>  - waiting to lock <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  at org.apache.mina.proxy.filter.ProxyFilter.filterWrite(ProxyFilter.java:198)
>  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.ssl.SslHandler.flushFilterWrite(SslHandler.java:310)
>  at org.apache.mina.filter.ssl.SslFilter.filterWrite(SslFilter.java:668)
>  - locked <0x2ef07520> (a org.apache.mina.filter.ssl.SslHandler)
>  at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:753)
>  at 
> org.apa

[jira] [Commented] (DIRMINA-1119) Deadlock when using SSL and proxy

2019-09-09 Thread Sergey Staritsin (Jira)


[ 
https://issues.apache.org/jira/browse/DIRMINA-1119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16925684#comment-16925684
 ] 

Sergey Staritsin commented on DIRMINA-1119:
---

[~chrjohn] Yes, that's correct. We are using QuickfixJ 2.1.1 and Apache Mina 
2.1.3.

> Deadlock when using SSL and proxy
> -
>
> Key: DIRMINA-1119
> URL: https://issues.apache.org/jira/browse/DIRMINA-1119
> Project: MINA
>  Issue Type: Bug
>  Components: Core, Filter
>Affects Versions: 2.1.3
>Reporter: Sergey Staritsin
>Priority: Critical
>
> The issue seems to be the same as DIRMINA-995 (at least they have exactly the 
> same symptoms and conditions). 
>  
> 2019-09-09 12:04:38
> Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.151-b12 mixed mode):
> Found one Java-level deadlock:
> =
> "NioProcessor-138":
>  waiting to lock monitor 0x0001040b88f8 (object 0x2ef07520, a 
> org.apache.mina.filter.ssl.SslHandler),
>  which is held by "OutputEventRoutingHandler"
> "OutputEventRoutingHandler":
>  waiting to lock monitor 0x00010386a108 (object 0x2eff53b0, a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler),
>  which is held by "NioProcessor-138" 
>  
> Java stack information for the threads listed above:
>  ===
>  "NioProcessor-138":
>  at 
> org.apache.mina.filter.ssl.SslFilter.getSslSessionHandler(SslFilter.java:823)
>  - waiting to lock <0x2ef07520> (a 
> org.apache.mina.filter.ssl.SslHandler)
>  at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:499)
>  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.proxy.filter.ProxyFilter.messageReceived(ProxyFilter.java:153)
>  - locked <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  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.fireMessageReceived(DefaultIoFilterChain.java:643)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:539)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.access$1200(AbstractPollingIoProcessor.java:68)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1222)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1211)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:683)
>  at 
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
>  at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>  at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>  at java.lang.Thread.run(Thread.java:748)
>  "OutputEventRoutingHandler":
>  at org.apache.mina.proxy.filter.ProxyFilter.writeData(ProxyFilter.java:214)
>  - waiting to lock <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  at org.apache.mina.proxy.filter.ProxyFilter.filterWrite(ProxyFilter.java:198)
>  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.ssl.SslHandler.flushFilterWrite(SslHandler.java:310)
>  at org.apache.mina.filter.ssl.SslFilter.filterWrite(SslFilter.java:668)
>  - locked <0x2ef07520> (a org.apache.mina.filter.ssl.SslHandler)
>  at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:753)
>  at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(DefaultIoFilterChain.java:49)
>  

[jira] [Commented] (DIRMINA-1119) Deadlock when using SSL and proxy

2020-02-10 Thread Anton Novikov (Jira)


[ 
https://issues.apache.org/jira/browse/DIRMINA-1119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17033452#comment-17033452
 ] 

Anton Novikov commented on DIRMINA-1119:


We've just had an almost exactly the same issue in the same setup (QucikFIX/J 
2.11 and Apache Mina 2.1.3), this time between NioProcessor and QFJ Timer. 
Attaching the thread dump in case it helps: [^Deadlock_QFJ 
Timer_NioProcessor.txt]

> Deadlock when using SSL and proxy
> -
>
> Key: DIRMINA-1119
> URL: https://issues.apache.org/jira/browse/DIRMINA-1119
> Project: MINA
>  Issue Type: Bug
>  Components: Core, Filter
>Affects Versions: 2.1.3
>Reporter: Sergey Staritsin
>Priority: Critical
> Attachments: Deadlock_QFJ Timer_NioProcessor.txt
>
>
> The issue seems to be the same as DIRMINA-995 (at least they have exactly the 
> same symptoms and conditions). 
>  
> 2019-09-09 12:04:38
> Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.151-b12 mixed mode):
> Found one Java-level deadlock:
> =
> "NioProcessor-138":
>  waiting to lock monitor 0x0001040b88f8 (object 0x2ef07520, a 
> org.apache.mina.filter.ssl.SslHandler),
>  which is held by "OutputEventRoutingHandler"
> "OutputEventRoutingHandler":
>  waiting to lock monitor 0x00010386a108 (object 0x2eff53b0, a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler),
>  which is held by "NioProcessor-138" 
>  
> Java stack information for the threads listed above:
>  ===
>  "NioProcessor-138":
>  at 
> org.apache.mina.filter.ssl.SslFilter.getSslSessionHandler(SslFilter.java:823)
>  - waiting to lock <0x2ef07520> (a 
> org.apache.mina.filter.ssl.SslHandler)
>  at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:499)
>  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.proxy.filter.ProxyFilter.messageReceived(ProxyFilter.java:153)
>  - locked <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  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.fireMessageReceived(DefaultIoFilterChain.java:643)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:539)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.access$1200(AbstractPollingIoProcessor.java:68)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1222)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1211)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:683)
>  at 
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
>  at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>  at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>  at java.lang.Thread.run(Thread.java:748)
>  "OutputEventRoutingHandler":
>  at org.apache.mina.proxy.filter.ProxyFilter.writeData(ProxyFilter.java:214)
>  - waiting to lock <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  at org.apache.mina.proxy.filter.ProxyFilter.filterWrite(ProxyFilter.java:198)
>  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.ssl.SslHandler.flushFilterWrite(SslHandler.java:310)
>  at org.apache.mina.filter.ssl.SslFilter.filterWrite(SslFilter.java:668)
>  - locked <0x2ef07520> (a org.apache.mina.filter.ssl.SslHandler)
>  at 
> org.apac

[jira] [Commented] (DIRMINA-1119) Deadlock when using SSL and proxy

2020-02-10 Thread Jonathan Valliere (Jira)


[ 
https://issues.apache.org/jira/browse/DIRMINA-1119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17033599#comment-17033599
 ] 

Jonathan Valliere commented on DIRMINA-1119:


Your deadlock appears to be due to the Proxy mechanism.  One thread is holding 
SSL while writing to the Proxy while another thread is reading to the Proxy 
trying to get the SSL.  Two locks are holding each other while trying to obtain 
the other.  This could be fixed by having a read and write lock on the Proxy 
instead of a single lock.

> Deadlock when using SSL and proxy
> -
>
> Key: DIRMINA-1119
> URL: https://issues.apache.org/jira/browse/DIRMINA-1119
> Project: MINA
>  Issue Type: Bug
>  Components: Core, Filter
>Affects Versions: 2.1.3
>Reporter: Sergey Staritsin
>Priority: Critical
> Attachments: Deadlock_QFJ Timer_NioProcessor.txt
>
>
> The issue seems to be the same as DIRMINA-995 (at least they have exactly the 
> same symptoms and conditions). 
>  
> 2019-09-09 12:04:38
> Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.151-b12 mixed mode):
> Found one Java-level deadlock:
> =
> "NioProcessor-138":
>  waiting to lock monitor 0x0001040b88f8 (object 0x2ef07520, a 
> org.apache.mina.filter.ssl.SslHandler),
>  which is held by "OutputEventRoutingHandler"
> "OutputEventRoutingHandler":
>  waiting to lock monitor 0x00010386a108 (object 0x2eff53b0, a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler),
>  which is held by "NioProcessor-138" 
>  
> Java stack information for the threads listed above:
>  ===
>  "NioProcessor-138":
>  at 
> org.apache.mina.filter.ssl.SslFilter.getSslSessionHandler(SslFilter.java:823)
>  - waiting to lock <0x2ef07520> (a 
> org.apache.mina.filter.ssl.SslHandler)
>  at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:499)
>  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.proxy.filter.ProxyFilter.messageReceived(ProxyFilter.java:153)
>  - locked <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  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.fireMessageReceived(DefaultIoFilterChain.java:643)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:539)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.access$1200(AbstractPollingIoProcessor.java:68)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1222)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1211)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:683)
>  at 
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
>  at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>  at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>  at java.lang.Thread.run(Thread.java:748)
>  "OutputEventRoutingHandler":
>  at org.apache.mina.proxy.filter.ProxyFilter.writeData(ProxyFilter.java:214)
>  - waiting to lock <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  at org.apache.mina.proxy.filter.ProxyFilter.filterWrite(ProxyFilter.java:198)
>  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.ssl.SslHandler.flushFilterWrite(SslHandler.java:310)
>  at org.apache.mina.filter.ssl.SslFilter.filterWrite(S

[jira] [Commented] (DIRMINA-1119) Deadlock when using SSL and proxy

2020-02-10 Thread Anton Novikov (Jira)


[ 
https://issues.apache.org/jira/browse/DIRMINA-1119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17033661#comment-17033661
 ] 

Anton Novikov commented on DIRMINA-1119:


Is there a reason why ProxyFilter holds the lock when calling the next filter 
in the first place? I looked through the relevant piece of code and it doesn't 
seem to be necessary. It is harder to argue about SslFilter, but it probably 
shouldn't do that either. Unfortunately, I am not familiar with the code, so I 
have to rely on the judgement of someone who is

> Deadlock when using SSL and proxy
> -
>
> Key: DIRMINA-1119
> URL: https://issues.apache.org/jira/browse/DIRMINA-1119
> Project: MINA
>  Issue Type: Bug
>  Components: Core, Filter
>Affects Versions: 2.1.3
>Reporter: Sergey Staritsin
>Priority: Critical
> Attachments: Deadlock_QFJ Timer_NioProcessor.txt
>
>
> The issue seems to be the same as DIRMINA-995 (at least they have exactly the 
> same symptoms and conditions). 
>  
> 2019-09-09 12:04:38
> Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.151-b12 mixed mode):
> Found one Java-level deadlock:
> =
> "NioProcessor-138":
>  waiting to lock monitor 0x0001040b88f8 (object 0x2ef07520, a 
> org.apache.mina.filter.ssl.SslHandler),
>  which is held by "OutputEventRoutingHandler"
> "OutputEventRoutingHandler":
>  waiting to lock monitor 0x00010386a108 (object 0x2eff53b0, a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler),
>  which is held by "NioProcessor-138" 
>  
> Java stack information for the threads listed above:
>  ===
>  "NioProcessor-138":
>  at 
> org.apache.mina.filter.ssl.SslFilter.getSslSessionHandler(SslFilter.java:823)
>  - waiting to lock <0x2ef07520> (a 
> org.apache.mina.filter.ssl.SslHandler)
>  at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:499)
>  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.proxy.filter.ProxyFilter.messageReceived(ProxyFilter.java:153)
>  - locked <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  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.fireMessageReceived(DefaultIoFilterChain.java:643)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:539)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.access$1200(AbstractPollingIoProcessor.java:68)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1222)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1211)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:683)
>  at 
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
>  at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>  at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>  at java.lang.Thread.run(Thread.java:748)
>  "OutputEventRoutingHandler":
>  at org.apache.mina.proxy.filter.ProxyFilter.writeData(ProxyFilter.java:214)
>  - waiting to lock <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  at org.apache.mina.proxy.filter.ProxyFilter.filterWrite(ProxyFilter.java:198)
>  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.ssl.SslHandler.flushFilterWrite(SslHandler.java:310)
>  at org.apache.mina.filter.ssl.SslFilte

[jira] [Commented] (DIRMINA-1119) Deadlock when using SSL and proxy

2020-02-10 Thread Jonathan Valliere (Jira)


[ 
https://issues.apache.org/jira/browse/DIRMINA-1119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17033671#comment-17033671
 ] 

Jonathan Valliere commented on DIRMINA-1119:


That might be more of a question for [~elecharny]

> Deadlock when using SSL and proxy
> -
>
> Key: DIRMINA-1119
> URL: https://issues.apache.org/jira/browse/DIRMINA-1119
> Project: MINA
>  Issue Type: Bug
>  Components: Core, Filter
>Affects Versions: 2.1.3
>Reporter: Sergey Staritsin
>Priority: Critical
> Attachments: Deadlock_QFJ Timer_NioProcessor.txt
>
>
> The issue seems to be the same as DIRMINA-995 (at least they have exactly the 
> same symptoms and conditions). 
>  
> 2019-09-09 12:04:38
> Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.151-b12 mixed mode):
> Found one Java-level deadlock:
> =
> "NioProcessor-138":
>  waiting to lock monitor 0x0001040b88f8 (object 0x2ef07520, a 
> org.apache.mina.filter.ssl.SslHandler),
>  which is held by "OutputEventRoutingHandler"
> "OutputEventRoutingHandler":
>  waiting to lock monitor 0x00010386a108 (object 0x2eff53b0, a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler),
>  which is held by "NioProcessor-138" 
>  
> Java stack information for the threads listed above:
>  ===
>  "NioProcessor-138":
>  at 
> org.apache.mina.filter.ssl.SslFilter.getSslSessionHandler(SslFilter.java:823)
>  - waiting to lock <0x2ef07520> (a 
> org.apache.mina.filter.ssl.SslHandler)
>  at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:499)
>  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.proxy.filter.ProxyFilter.messageReceived(ProxyFilter.java:153)
>  - locked <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  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.fireMessageReceived(DefaultIoFilterChain.java:643)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:539)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.access$1200(AbstractPollingIoProcessor.java:68)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1222)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1211)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:683)
>  at 
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
>  at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>  at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>  at java.lang.Thread.run(Thread.java:748)
>  "OutputEventRoutingHandler":
>  at org.apache.mina.proxy.filter.ProxyFilter.writeData(ProxyFilter.java:214)
>  - waiting to lock <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  at org.apache.mina.proxy.filter.ProxyFilter.filterWrite(ProxyFilter.java:198)
>  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.ssl.SslHandler.flushFilterWrite(SslHandler.java:310)
>  at org.apache.mina.filter.ssl.SslFilter.filterWrite(SslFilter.java:668)
>  - locked <0x2ef07520> (a org.apache.mina.filter.ssl.SslHandler)
>  at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:753)
>  at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(Defau

[jira] [Commented] (DIRMINA-1119) Deadlock when using SSL and proxy

2020-02-10 Thread Jira


[ 
https://issues.apache.org/jira/browse/DIRMINA-1119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17034030#comment-17034030
 ] 

Emmanuel Lécharny commented on DIRMINA-1119:


I'm afraid I'm not capable of giving you some clue either. This is one of the 
rare MINA parts I'm not familiar with...

> Deadlock when using SSL and proxy
> -
>
> Key: DIRMINA-1119
> URL: https://issues.apache.org/jira/browse/DIRMINA-1119
> Project: MINA
>  Issue Type: Bug
>  Components: Core, Filter
>Affects Versions: 2.1.3
>Reporter: Sergey Staritsin
>Priority: Critical
> Attachments: Deadlock_QFJ Timer_NioProcessor.txt
>
>
> The issue seems to be the same as DIRMINA-995 (at least they have exactly the 
> same symptoms and conditions). 
>  
> 2019-09-09 12:04:38
> Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.151-b12 mixed mode):
> Found one Java-level deadlock:
> =
> "NioProcessor-138":
>  waiting to lock monitor 0x0001040b88f8 (object 0x2ef07520, a 
> org.apache.mina.filter.ssl.SslHandler),
>  which is held by "OutputEventRoutingHandler"
> "OutputEventRoutingHandler":
>  waiting to lock monitor 0x00010386a108 (object 0x2eff53b0, a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler),
>  which is held by "NioProcessor-138" 
>  
> Java stack information for the threads listed above:
>  ===
>  "NioProcessor-138":
>  at 
> org.apache.mina.filter.ssl.SslFilter.getSslSessionHandler(SslFilter.java:823)
>  - waiting to lock <0x2ef07520> (a 
> org.apache.mina.filter.ssl.SslHandler)
>  at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:499)
>  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.proxy.filter.ProxyFilter.messageReceived(ProxyFilter.java:153)
>  - locked <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  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.fireMessageReceived(DefaultIoFilterChain.java:643)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:539)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.access$1200(AbstractPollingIoProcessor.java:68)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1222)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1211)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:683)
>  at 
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
>  at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>  at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>  at java.lang.Thread.run(Thread.java:748)
>  "OutputEventRoutingHandler":
>  at org.apache.mina.proxy.filter.ProxyFilter.writeData(ProxyFilter.java:214)
>  - waiting to lock <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  at org.apache.mina.proxy.filter.ProxyFilter.filterWrite(ProxyFilter.java:198)
>  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.ssl.SslHandler.flushFilterWrite(SslHandler.java:310)
>  at org.apache.mina.filter.ssl.SslFilter.filterWrite(SslFilter.java:668)
>  - locked <0x2ef07520> (a org.apache.mina.filter.ssl.SslHandler)
>  at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:753)
>  at 
> o

[jira] [Commented] (DIRMINA-1119) Deadlock when using SSL and proxy

2021-08-05 Thread Jonathan Valliere (Jira)


[ 
https://issues.apache.org/jira/browse/DIRMINA-1119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17394332#comment-17394332
 ] 

Jonathan Valliere commented on DIRMINA-1119:


This will probably be fixed from the changed in DIRMINA-1132 but I need some 
example code to reproduce this in order to verify that it is fixed.

> Deadlock when using SSL and proxy
> -
>
> Key: DIRMINA-1119
> URL: https://issues.apache.org/jira/browse/DIRMINA-1119
> Project: MINA
>  Issue Type: Bug
>  Components: Core, Filter
>Affects Versions: 2.1.3
>Reporter: Sergey Staritsin
>Assignee: Jonathan Valliere
>Priority: Critical
> Fix For: 2.2.0
>
> Attachments: Deadlock_QFJ Timer_NioProcessor.txt
>
>
> The issue seems to be the same as DIRMINA-995 (at least they have exactly the 
> same symptoms and conditions). 
>  
> 2019-09-09 12:04:38
> Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.151-b12 mixed mode):
> Found one Java-level deadlock:
> =
> "NioProcessor-138":
>  waiting to lock monitor 0x0001040b88f8 (object 0x2ef07520, a 
> org.apache.mina.filter.ssl.SslHandler),
>  which is held by "OutputEventRoutingHandler"
> "OutputEventRoutingHandler":
>  waiting to lock monitor 0x00010386a108 (object 0x2eff53b0, a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler),
>  which is held by "NioProcessor-138" 
>  
> Java stack information for the threads listed above:
>  ===
>  "NioProcessor-138":
>  at 
> org.apache.mina.filter.ssl.SslFilter.getSslSessionHandler(SslFilter.java:823)
>  - waiting to lock <0x2ef07520> (a 
> org.apache.mina.filter.ssl.SslHandler)
>  at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:499)
>  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.proxy.filter.ProxyFilter.messageReceived(ProxyFilter.java:153)
>  - locked <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  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.fireMessageReceived(DefaultIoFilterChain.java:643)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:539)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.access$1200(AbstractPollingIoProcessor.java:68)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1222)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1211)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:683)
>  at 
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
>  at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>  at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>  at java.lang.Thread.run(Thread.java:748)
>  "OutputEventRoutingHandler":
>  at org.apache.mina.proxy.filter.ProxyFilter.writeData(ProxyFilter.java:214)
>  - waiting to lock <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  at org.apache.mina.proxy.filter.ProxyFilter.filterWrite(ProxyFilter.java:198)
>  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.ssl.SslHandler.flushFilterWrite(SslHandler.java:310)
>  at org.apache.mina.filter.ssl.SslFilter.filterWrite(SslFilter.java:668)
>  - locked <0x2ef07520> (a org.apache.mina.filter.ssl.SslHandler)
>  at 
> org.apache.mina.core.

[jira] [Commented] (DIRMINA-1119) Deadlock when using SSL and proxy

2022-03-12 Thread Michael Franz (Jira)


[ 
https://issues.apache.org/jira/browse/DIRMINA-1119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17505314#comment-17505314
 ] 

Michael Franz commented on DIRMINA-1119:


I have experienced this same issue and after looking into it like others, I am 
not 100% sure what the fix should be.  This issues has been around for a while, 
hopefully we can fix it soon. My issue occurs when writing out a message (SSL 
-> Proxy) and reading a message (Proxy -> SSL).

I have read the code and the documentation for the SSLFilter 
[https://mina.apache.org/mina-project/userguide/ch11-ssl-filter/ch11-ssl-filter.html]
 and ProxyFilter (there is none). Since the SSL filter has great details and 
states that "It’s even worse : you can’t process an incoming message *and* and 
outgoing message at the same time." So, reads and write cannot occur at the 
same time, which explains the synchronization in the SslFilter around the 
SslHandler. 

However, there is no documentation for the ProxyFilter and the code states it 
is based on the SslFilter. It is possible that the same synchronization around 
ProxyLogicHandler was just a blind copy.  This leads me to believe the the 
easiest fix to this issue is to remove the synchronization block in the 
ProxyFilter as it is not required to protect the state of the ProxyLogicHandler 
from reading and writing occurring at the same time.  

If the ProxyLogicHandler (specifically the HttpSmartProxyHandler - the 
implementation my issues occurs with) needs to be protected, then I fear that 
the solution is to synchronize around the entire filter chain to prevent 
filters locking themselves and then passing the processing to another filter 
that may want to also lock itself.

Another solution would be to reimplement the SslHandler to use an SslEngine 
that can both read and write at the same time.

Note:I have tried to test this, but I cannot reproduce a build following the 
instructions [https://mina.apache.org/mina-project/developer-guide.html] . I 
get test failures trying to ensure a valid baseline for 2.1.6 and 2.1.x.

> Deadlock when using SSL and proxy
> -
>
> Key: DIRMINA-1119
> URL: https://issues.apache.org/jira/browse/DIRMINA-1119
> Project: MINA
>  Issue Type: Bug
>  Components: Core, Filter
>Affects Versions: 2.1.3
>Reporter: Sergey Staritsin
>Assignee: Jonathan Valliere
>Priority: Critical
> Fix For: 2.2.0
>
> Attachments: Deadlock_QFJ Timer_NioProcessor.txt
>
>
> The issue seems to be the same as DIRMINA-995 (at least they have exactly the 
> same symptoms and conditions). 
>  
> 2019-09-09 12:04:38
> Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.151-b12 mixed mode):
> Found one Java-level deadlock:
> =
> "NioProcessor-138":
>  waiting to lock monitor 0x0001040b88f8 (object 0x2ef07520, a 
> org.apache.mina.filter.ssl.SslHandler),
>  which is held by "OutputEventRoutingHandler"
> "OutputEventRoutingHandler":
>  waiting to lock monitor 0x00010386a108 (object 0x2eff53b0, a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler),
>  which is held by "NioProcessor-138" 
>  
> Java stack information for the threads listed above:
>  ===
>  "NioProcessor-138":
>  at 
> org.apache.mina.filter.ssl.SslFilter.getSslSessionHandler(SslFilter.java:823)
>  - waiting to lock <0x2ef07520> (a 
> org.apache.mina.filter.ssl.SslHandler)
>  at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:499)
>  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.proxy.filter.ProxyFilter.messageReceived(ProxyFilter.java:153)
>  - locked <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  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.fireMessageReceived(DefaultIoFilterChain.java:643)
>  at 
> org.apache.mina.core.polling.AbstractPo

[jira] [Commented] (DIRMINA-1119) Deadlock when using SSL and proxy

2022-07-28 Thread Christoph John (Jira)


[ 
https://issues.apache.org/jira/browse/DIRMINA-1119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17572389#comment-17572389
 ] 

Christoph John commented on DIRMINA-1119:
-

Anyone that wants to check if the issue is fixed within QuickFIX/J using the 
current MINA 2.2.1 please check this branch 
https://github.com/quickfix-j/quickfixj/tree/chrjohn-mina-2.2.0 
Build instructions: 
https://github.com/quickfix-j/quickfixj/tree/chrjohn-mina-2.2.0#build-instructions


> Deadlock when using SSL and proxy
> -
>
> Key: DIRMINA-1119
> URL: https://issues.apache.org/jira/browse/DIRMINA-1119
> Project: MINA
>  Issue Type: Bug
>  Components: Core, Filter
>Affects Versions: 2.1.3
>Reporter: Sergey Staritsin
>Assignee: Jonathan Valliere
>Priority: Critical
> Fix For: 2.2.0
>
> Attachments: Deadlock_QFJ Timer_NioProcessor.txt
>
>
> The issue seems to be the same as DIRMINA-995 (at least they have exactly the 
> same symptoms and conditions). 
>  
> 2019-09-09 12:04:38
> Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.151-b12 mixed mode):
> Found one Java-level deadlock:
> =
> "NioProcessor-138":
>  waiting to lock monitor 0x0001040b88f8 (object 0x2ef07520, a 
> org.apache.mina.filter.ssl.SslHandler),
>  which is held by "OutputEventRoutingHandler"
> "OutputEventRoutingHandler":
>  waiting to lock monitor 0x00010386a108 (object 0x2eff53b0, a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler),
>  which is held by "NioProcessor-138" 
>  
> Java stack information for the threads listed above:
>  ===
>  "NioProcessor-138":
>  at 
> org.apache.mina.filter.ssl.SslFilter.getSslSessionHandler(SslFilter.java:823)
>  - waiting to lock <0x2ef07520> (a 
> org.apache.mina.filter.ssl.SslHandler)
>  at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:499)
>  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.proxy.filter.ProxyFilter.messageReceived(ProxyFilter.java:153)
>  - locked <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  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.fireMessageReceived(DefaultIoFilterChain.java:643)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:539)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.access$1200(AbstractPollingIoProcessor.java:68)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1222)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1211)
>  at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:683)
>  at 
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
>  at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>  at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>  at java.lang.Thread.run(Thread.java:748)
>  "OutputEventRoutingHandler":
>  at org.apache.mina.proxy.filter.ProxyFilter.writeData(ProxyFilter.java:214)
>  - waiting to lock <0x2eff53b0> (a 
> org.apache.mina.proxy.handlers.socks.Socks5LogicHandler)
>  at org.apache.mina.proxy.filter.ProxyFilter.filterWrite(ProxyFilter.java:198)
>  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.ssl.SslHandler.flushFilterWrite(SslHandler.java:310)
>  at org.apache.mina.filter.ssl.SslFil