yzb81 created DIRMINA-995: ----------------------------- Summary: Deadlock when using SSL and proxy Key: DIRMINA-995 URL: https://issues.apache.org/jira/browse/DIRMINA-995 Project: MINA Issue Type: Bug Components: Filter Affects Versions: 2.0.7 Environment: JRE 1.6, Linux Reporter: yzb81
I write a SSL client to connect server through SOCKS5 proxy, then meet a deadlock. Maybe the reason of deadlock is I write data to a IoSession in my main thread, but now this session is reading data from socket. Found one Java-level deadlock: ============================= "NioProcessor-7": waiting to lock monitor 0x0940a8a8 (object 0x98732818, a org.apache.mina.filter.ssl.SslHandler), which is held by "Thread-102" "Thread-102": waiting to lock monitor 0x09e8128c (object 0x9873d750, a org.apache.mina.proxy.handlers.socks.Socks5LogicHandler), which is held by "NioProcessor-7" Java stack information for the threads listed above: =================================================== "NioProcessor-7": at org.apache.mina.filter.ssl.SslFilter.filterWrite(SslFilter.java:576) - waiting to lock <0x98732818> (a org.apache.mina.filter.ssl.SslHandler) at org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:482) at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1400(DefaultIoFilterChain.java:47) at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:775) at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.filterWrite(DefaultIoFilterChain.java:705) at org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:482) at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireFilterWrite(DefaultIoFilterChain.java:475) at org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:494) at org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:439) at xxx.xxxProxyHandler.messageReceived(xxxProxyHandler.java:74) at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:690) at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417) at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47) at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765) at org.apache.mina.filter.ssl.SslHandler.flushScheduledEvents(SslHandler.java:322) at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:497) at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417) at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47) at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765) at org.apache.mina.proxy.filter.ProxyFilter.messageReceived(ProxyFilter.java:153) - locked <0x9873d750> (a org.apache.mina.proxy.handlers.socks.Socks5LogicHandler) at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417) at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47) at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765) at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:109) at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417) at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:410) at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:710) at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:664) at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:653) at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:67) at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1124) at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Thread-102": at org.apache.mina.proxy.filter.ProxyFilter.writeData(ProxyFilter.java:209) - waiting to lock <0x9873d750> (a org.apache.mina.proxy.handlers.socks.Socks5LogicHandler) at org.apache.mina.proxy.filter.ProxyFilter.filterWrite(ProxyFilter.java:192) at org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:482) at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1400(DefaultIoFilterChain.java:47) at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:775) at org.apache.mina.filter.ssl.SslHandler.flushScheduledEvents(SslHandler.java:316) - locked <0x98732818> (a org.apache.mina.filter.ssl.SslHandler) at org.apache.mina.filter.ssl.SslFilter.filterWrite(SslFilter.java:609) at org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:482) at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1400(DefaultIoFilterChain.java:47) at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:775) at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.filterWrite(DefaultIoFilterChain.java:705) at org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:482) at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireFilterWrite(DefaultIoFilterChain.java:475) at org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:494) at org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:439) at xxx.run(xxx.java:219) at java.lang.Thread.run(Unknown Source) -- This message was sent by Atlassian JIRA (v6.3.4#6332)