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!

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
121 views