You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "Edward Gao (JIRA)" <ji...@apache.org> on 2019/04/29 07:48:00 UTC
[jira] [Updated] (HTTPCORE-575) Deadlock found in IOSessionImpl in
httpcomponents-core
[ https://issues.apache.org/jira/browse/HTTPCORE-575?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Edward Gao updated HTTPCORE-575:
--------------------------------
Description:
Hi, I'm using below components:
httpcore-nio:4.4.10
httpasyncclient:4.1.4.3
jdk:1.8.0.131
and It caused deadlock when closing the connection pool:
below is thread 1 stack:
{code:java}
h2. {color:#cc3300}sitemon-async-http-client-io-dispatch-thread20-48{color}
priority:5 - threadId:0x00000000022b6800 - nativeId:0x2068 - nativeId (decimal):8296 - state:BLOCKED
stackTrace:
java.lang.Thread.State: BLOCKED (on object monitor)
at java.nio.channels.spi.AbstractInterruptibleChannel.close({color:#000080}AbstractInterruptibleChannel.java:111{color})
- waiting to lock *<0x00000007495b4738>* (a java.lang.Object)
at org.apache.http.impl.nio.reactor.IOSessionImpl.close({color:#000080}IOSessionImpl.java:227{color})
- locked *<0x00000007495b4808>* (a sun.nio.ch.SelectionKeyImpl)
at org.apache.http.impl.nio.reactor.IOSessionImpl.shutdown({color:#000080}IOSessionImpl.java:255{color})
at org.apache.http.impl.nio.reactor.AbstractIODispatch.connected({color:#000080}AbstractIODispatch.java:89{color})
at org.apache.http.impl.nio.client.LMIODispatcher.connected({color:#000080}LMIODispatcher.java:32{color})
at org.apache.http.impl.nio.reactor.BaseIOReactor.sessionCreated({color:#000080}BaseIOReactor.java:248{color})
at org.apache.http.impl.nio.reactor.AbstractIOReactor.processNewChannels({color:#000080}AbstractIOReactor.java:427{color})
at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute({color:#000080}AbstractIOReactor.java:287{color})
at org.apache.http.impl.nio.reactor.BaseIOReactor.execute({color:#000080}BaseIOReactor.java:104{color})
at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run({color:#000080}AbstractMultiworkerIOReactor.java:588{color})
at java.lang.Thread.run({color:#000080}Thread.java:748{color})
{code}
below is thread 2 stack:
{code:java}
{color:#cc3300}sitemon-webservice-task-thread-11-3{color}
priority:5 - threadId:0x00007fb840052800 - nativeId:0x1ee9 - nativeId (decimal):7913 - state:BLOCKED
stackTrace:
java.lang.Thread.State: BLOCKED (on object monitor)
at java.nio.channels.spi.AbstractSelectionKey.cancel({color:#000080}AbstractSelectionKey.java:70{color})
- waiting to lock *<0x00000007495b4808>* (a sun.nio.ch.SelectionKeyImpl)
at java.nio.channels.spi.AbstractSelectableChannel.implCloseChannel({color:#000080}AbstractSelectableChannel.java:240{color})
- locked *<0x00000007495bb1f0>* (a java.lang.Object)
at java.nio.channels.spi.AbstractInterruptibleChannel.close({color:#000080}AbstractInterruptibleChannel.java:115{color})
- locked *<0x00000007495b4738>* (a java.lang.Object)
at org.apache.http.impl.nio.reactor.SessionRequestImpl.cancel({color:#000080}SessionRequestImpl.java:216{color})
at org.apache.http.nio.pool.AbstractNIOConnPool.shutdown({color:#000080}AbstractNIOConnPool.java:217{color})
at com.logicmonitor.service.processors.website.async.AsyncWebServiceTask._finish({color:#000080}AsyncWebServiceTask.java:594{color})
//....suppressed
at java.util.concurrent.ThreadPoolExecutor.runWorker({color:#000080}ThreadPoolExecutor.java:1142{color})
at java.util.concurrent.ThreadPoolExecutor$Worker.run({color:#000080}ThreadPoolExecutor.java:617{color})
at java.lang.Thread.run({color:#000080}Thread.java:748{color})
{code}
Please note the object in bold (*0x00000007495b4738 and* *0x00000007495b4808***)
in thread 1, it get locks with selection key -> then channel
in thread 2, it get locks with channel -> then selection key.
was:
Hi, I'm using below components:
httpcore-nio:4.4.10
httpasyncclient:4.1.4.3
jdk:1.8.0.131
and It caused deadlock when closing the connection pool:
below is thread 1 stack:
{code}
h2. {color:#cc3300}sitemon-async-http-client-io-dispatch-thread20-48{color}
priority:5 - threadId:0x00000000022b6800 - nativeId:0x2068 - nativeId (decimal):8296 - state:BLOCKED
stackTrace:
java.lang.Thread.State: BLOCKED (on object monitor)
at java.nio.channels.spi.AbstractInterruptibleChannel.close({color:#000080}AbstractInterruptibleChannel.java:111{color})
- waiting to lock *<0x00000007495b4738>* (a java.lang.Object)
at org.apache.http.impl.nio.reactor.IOSessionImpl.close({color:#000080}IOSessionImpl.java:227{color})
- locked *<0x00000007495b4808>* (a sun.nio.ch.SelectionKeyImpl)
at org.apache.http.impl.nio.reactor.IOSessionImpl.shutdown({color:#000080}IOSessionImpl.java:255{color})
at org.apache.http.impl.nio.reactor.AbstractIODispatch.connected({color:#000080}AbstractIODispatch.java:89{color})
at org.apache.http.impl.nio.client.LMIODispatcher.connected({color:#000080}LMIODispatcher.java:32{color})
at org.apache.http.impl.nio.reactor.BaseIOReactor.sessionCreated({color:#000080}BaseIOReactor.java:248{color})
at org.apache.http.impl.nio.reactor.AbstractIOReactor.processNewChannels({color:#000080}AbstractIOReactor.java:427{color})
at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute({color:#000080}AbstractIOReactor.java:287{color})
at org.apache.http.impl.nio.reactor.BaseIOReactor.execute({color:#000080}BaseIOReactor.java:104{color})
at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run({color:#000080}AbstractMultiworkerIOReactor.java:588{color})
at java.lang.Thread.run({color:#000080}Thread.java:748{color})
{code}
below is thread 2 stack:
{code}
{color:#cc3300}sitemon-webservice-task-thread-11-3{color}
priority:5 - threadId:0x00007fb840052800 - nativeId:0x1ee9 - nativeId (decimal):7913 - state:BLOCKED
stackTrace:
java.lang.Thread.State: BLOCKED (on object monitor)
at java.nio.channels.spi.AbstractSelectionKey.cancel({color:#000080}AbstractSelectionKey.java:70{color})
- waiting to lock *<0x00000007495b4808>* (a sun.nio.ch.SelectionKeyImpl)
at java.nio.channels.spi.AbstractSelectableChannel.implCloseChannel({color:#000080}AbstractSelectableChannel.java:240{color})
- locked *<0x00000007495bb1f0>* (a java.lang.Object)
at java.nio.channels.spi.AbstractInterruptibleChannel.close({color:#000080}AbstractInterruptibleChannel.java:115{color})
- locked *<0x00000007495b4738>* (a java.lang.Object)
at org.apache.http.impl.nio.reactor.SessionRequestImpl.cancel({color:#000080}SessionRequestImpl.java:216{color})
at org.apache.http.nio.pool.AbstractNIOConnPool.shutdown({color:#000080}AbstractNIOConnPool.java:217{color})
at com.logicmonitor.service.processors.website.async.AsyncWebServiceTask._finish({color:#000080}AsyncWebServiceTask.java:594{color})
//....suppressed
at java.util.concurrent.ThreadPoolExecutor.runWorker({color:#000080}ThreadPoolExecutor.java:1142{color})
at java.util.concurrent.ThreadPoolExecutor$Worker.run({color:#000080}ThreadPoolExecutor.java:617{color})
at java.lang.Thread.run({color:#000080}Thread.java:748{color})
{code}
Please note the object in bold.
in thread 1, it get locks with selection key -> then channel
in thread 2, it get locks with channel -> then selection key.
> Deadlock found in IOSessionImpl in httpcomponents-core
> ------------------------------------------------------
>
> Key: HTTPCORE-575
> URL: https://issues.apache.org/jira/browse/HTTPCORE-575
> Project: HttpComponents HttpCore
> Issue Type: Bug
> Components: HttpCore, HttpCore NIO
> Affects Versions: 4.4.10
> Reporter: Edward Gao
> Priority: Major
>
> Hi, I'm using below components:
> httpcore-nio:4.4.10
> httpasyncclient:4.1.4.3
> jdk:1.8.0.131
> and It caused deadlock when closing the connection pool:
> below is thread 1 stack:
> {code:java}
> h2. {color:#cc3300}sitemon-async-http-client-io-dispatch-thread20-48{color}
> priority:5 - threadId:0x00000000022b6800 - nativeId:0x2068 - nativeId (decimal):8296 - state:BLOCKED
> stackTrace:
> java.lang.Thread.State: BLOCKED (on object monitor)
> at java.nio.channels.spi.AbstractInterruptibleChannel.close({color:#000080}AbstractInterruptibleChannel.java:111{color})
> - waiting to lock *<0x00000007495b4738>* (a java.lang.Object)
> at org.apache.http.impl.nio.reactor.IOSessionImpl.close({color:#000080}IOSessionImpl.java:227{color})
> - locked *<0x00000007495b4808>* (a sun.nio.ch.SelectionKeyImpl)
> at org.apache.http.impl.nio.reactor.IOSessionImpl.shutdown({color:#000080}IOSessionImpl.java:255{color})
> at org.apache.http.impl.nio.reactor.AbstractIODispatch.connected({color:#000080}AbstractIODispatch.java:89{color})
> at org.apache.http.impl.nio.client.LMIODispatcher.connected({color:#000080}LMIODispatcher.java:32{color})
> at org.apache.http.impl.nio.reactor.BaseIOReactor.sessionCreated({color:#000080}BaseIOReactor.java:248{color})
> at org.apache.http.impl.nio.reactor.AbstractIOReactor.processNewChannels({color:#000080}AbstractIOReactor.java:427{color})
> at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute({color:#000080}AbstractIOReactor.java:287{color})
> at org.apache.http.impl.nio.reactor.BaseIOReactor.execute({color:#000080}BaseIOReactor.java:104{color})
> at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run({color:#000080}AbstractMultiworkerIOReactor.java:588{color})
> at java.lang.Thread.run({color:#000080}Thread.java:748{color})
> {code}
>
> below is thread 2 stack:
> {code:java}
> {color:#cc3300}sitemon-webservice-task-thread-11-3{color}
> priority:5 - threadId:0x00007fb840052800 - nativeId:0x1ee9 - nativeId (decimal):7913 - state:BLOCKED
> stackTrace:
> java.lang.Thread.State: BLOCKED (on object monitor)
> at java.nio.channels.spi.AbstractSelectionKey.cancel({color:#000080}AbstractSelectionKey.java:70{color})
> - waiting to lock *<0x00000007495b4808>* (a sun.nio.ch.SelectionKeyImpl)
> at java.nio.channels.spi.AbstractSelectableChannel.implCloseChannel({color:#000080}AbstractSelectableChannel.java:240{color})
> - locked *<0x00000007495bb1f0>* (a java.lang.Object)
> at java.nio.channels.spi.AbstractInterruptibleChannel.close({color:#000080}AbstractInterruptibleChannel.java:115{color})
> - locked *<0x00000007495b4738>* (a java.lang.Object)
> at org.apache.http.impl.nio.reactor.SessionRequestImpl.cancel({color:#000080}SessionRequestImpl.java:216{color})
> at org.apache.http.nio.pool.AbstractNIOConnPool.shutdown({color:#000080}AbstractNIOConnPool.java:217{color})
> at com.logicmonitor.service.processors.website.async.AsyncWebServiceTask._finish({color:#000080}AsyncWebServiceTask.java:594{color})
> //....suppressed
> at java.util.concurrent.ThreadPoolExecutor.runWorker({color:#000080}ThreadPoolExecutor.java:1142{color})
> at java.util.concurrent.ThreadPoolExecutor$Worker.run({color:#000080}ThreadPoolExecutor.java:617{color})
> at java.lang.Thread.run({color:#000080}Thread.java:748{color})
> {code}
> Please note the object in bold (*0x00000007495b4738 and* *0x00000007495b4808***)
> in thread 1, it get locks with selection key -> then channel
> in thread 2, it get locks with channel -> then selection key.
>
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org