Infinite hanging of connections is likely a root cause of JENKINS-48613.
"SSHLauncher.launch for 'myagent' node [#1]" #2565 prio=5 os_prio=0 tid=0x00007f080c1b1000 nid=0x35c runnable [0x00007f07b2c5c000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.net.SocketInputStream.read(SocketInputStream.java:224)
at com.trilead.ssh2.transport.ClientServerHello.readLineRN(ClientServerHello.java:31)
at com.trilead.ssh2.transport.ClientServerHello.<init>(ClientServerHello.java:68)
at com.trilead.ssh2.transport.TransportManager.initialize(TransportManager.java:487)
at com.trilead.ssh2.Connection.connect(Connection.java:774)
- locked <0x0000000594003de0> (a com.trilead.ssh2.Connection)
at com.trilead.ssh2.Connection.connect(Connection.java:703)
- locked <0x0000000594003de0> (a com.trilead.ssh2.Connection)
at com.trilead.ssh2.Connection.connect(Connection.java:617)
- locked <0x0000000594003de0> (a com.trilead.ssh2.Connection)
at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:1302)
at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:814)
at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:803)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Trilead SSH API allows passing timeouts, so we should leverage that at least in the cases when the agent startup timeout is specified.