Skip to Main Content

Java User Groups

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

ReentrantReadWriteLock Deadlock Issue in 11.0.26

Hey Team,
We are seeing

Found one Java-level deadlock:
=============================
"IOHub#1: Worker[channel:java.nio.channels.SocketChannel[connected local=/10.89.0.2:50000 remote=100.105.134.190/100.105.134.190:37486]] / Computer.threadPoolForRemoting [#9570]":
  waiting to lock monitor 0x00007f7ca0009500 (object 0x00007f9c3e6fb930, a org.jenkinsci.remoting.protocol.impl.ConnectionHeadersFilterLayer),
  which is held by "TCP agent connection handler #52086 with /100.105.134.190:37486"
"TCP agent connection handler #52086 with /100.105.134.190:37486":
  waiting for ownable synchronizer 0x00007f9c3e6f5cb0, (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync),
  which is held by "IOHub#1: Worker[channel:java.nio.channels.SocketChannel[connected local=/10.89.0.2:50000 remote=100.105.134.190/100.105.134.190:37486]] / Computer.threadPoolForRemoting [#9570]"

Java stack information for the threads listed above:
===================================================
"IOHub#1: Worker[channel:java.nio.channels.SocketChannel[connected local=/10.89.0.2:50000 remote=100.105.134.190/100.105.134.190:37486]] / Computer.threadPoolForRemoting [#9570]":
        at org.jenkinsci.remoting.protocol.FilterLayer.onRecvRemoved(FilterLayer.java:134)
        - waiting to lock <0x00007f9c3e6fb930> (a org.jenkinsci.remoting.protocol.impl.ConnectionHeadersFilterLayer)
        at org.jenkinsci.remoting.protocol.ProtocolStack$Ptr.getNextRecv(ProtocolStack.java:922)
        at org.jenkinsci.remoting.protocol.ProtocolStack$Ptr.onRecv(ProtocolStack.java:671)
        at org.jenkinsci.remoting.protocol.impl.SSLEngineFilterLayer.processRead(SSLEngineFilterLayer.java:367)
        at org.jenkinsci.remoting.protocol.impl.SSLEngineFilterLayer.onRecv(SSLEngineFilterLayer.java:119)
        at org.jenkinsci.remoting.protocol.ProtocolStack$Ptr.onRecv(ProtocolStack.java:677)
        at org.jenkinsci.remoting.protocol.NetworkLayer.onRead(NetworkLayer.java:137)
        at org.jenkinsci.remoting.protocol.impl.NIONetworkLayer.ready(NIONetworkLayer.java:161)
        at org.jenkinsci.remoting.protocol.IOHub$OnReady.run(IOHub.java:789)
        at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
        at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
        at jenkins.util.ErrorLoggingExecutorService.lambda$wrap$0(ErrorLoggingExecutorService.java:51)
        at jenkins.util.ErrorLoggingExecutorService$$Lambda$737/0x00007f7a11779840.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@11.0.26-ea/ThreadPoolExecutor.java:1128)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@11.0.26-ea/ThreadPoolExecutor.java:628)
        at java.lang.Thread.run(java.base@11.0.26-ea/Thread.java:834)
"TCP agent connection handler #52086 with /100.105.134.190:37486":
        at jdk.internal.misc.Unsafe.park(java.base@11.0.26-ea/Native Method)
        - parking to wait for  <0x00007f9c3e6f5cb0> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
        at java.util.concurrent.locks.LockSupport.park(java.base@11.0.26-ea/LockSupport.java:194)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(java.base@11.0.26-ea/AbstractQueuedSynchronizer.java:885)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(java.base@11.0.26-ea/AbstractQueuedSynchronizer.java:1009)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(java.base@11.0.26-ea/AbstractQueuedSynchronizer.java:1324)
        at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(java.base@11.0.26-ea/ReentrantReadWriteLock.java:738)
        at org.jenkinsci.remoting.protocol.ProtocolStack$Ptr.getNextSend(ProtocolStack.java:850)
        at org.jenkinsci.remoting.protocol.ProtocolStack$Ptr.doSend(ProtocolStack.java:694)
        at org.jenkinsci.remoting.protocol.impl.ConnectionHeadersFilterLayer.doSend(ConnectionHeadersFilterLayer.java:499)
        - locked <0x00007f9c3e6fb930> (a org.jenkinsci.remoting.protocol.impl.ConnectionHeadersFilterLayer)
        at org.jenkinsci.remoting.protocol.ProtocolStack$Ptr.doSend(ProtocolStack.java:700)
        at org.jenkinsci.remoting.protocol.ApplicationLayer.write(ApplicationLayer.java:156)
        at org.jenkinsci.remoting.protocol.impl.ChannelApplicationLayer.start(ChannelApplicationLayer.java:259)
        at org.jenkinsci.remoting.protocol.ProtocolStack.init(ProtocolStack.java:209)
        at org.jenkinsci.remoting.protocol.ProtocolStack$Builder.build(ProtocolStack.java:563)
        at org.jenkinsci.remoting.engine.JnlpProtocol4Handler.handle(JnlpProtocol4Handler.java:156)
        at jenkins.slaves.JnlpSlaveAgentProtocol4.handle(JnlpSlaveAgentProtocol4.java:177)
        at hudson.TcpSlaveAgentListener$ConnectionHandler.run(TcpSlaveAgentListener.java:276)

Found 1 deadlock.

I did read some issues reported for ReentrantReadWriteLock . Is there a way to understand why is this thread BLOCKED on a thread which isn't active. Is there any version for JDK 11 with this patch?

Comments
Post Details
Added on Apr 9 2025
0 comments
73 views