• Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: Major Major
    • ssh-agent-plugin
    • None

      When trying to use the ssh-agent-plugin on any of my ARM slaves I get the following stacktrace:

      Started by user ...
      Building remotely on refi-tester in workspace /jenkins/workspace/test-job-refi-teq
      [ssh-agent] Using credentials jenkins (jenkins' own ssh key)
      [ssh-agent] Looking for ssh-agent implementation...
      [ssh-agent]   Java/JNR ssh-agent
      [ssh-agent] FATAL: Could not find a suitable ssh-agent provider
      [ssh-agent] Diagnostic report
      [ssh-agent] * Java/JNR ssh-agent
      [ssh-agent]     java.io.IOException: Remote call on refi-tester failed
      [ssh-agent]     	at hudson.remoting.Channel.call(Channel.java:786)
      [ssh-agent]     	at com.cloudbees.jenkins.plugins.sshagent.jna.JNRRemoteAgentFactory.start(JNRRemoteAgentFactory.java:61)
      [ssh-agent]     	at com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper$SSHAgentEnvironment.<init>(SSHAgentBuildWrapper.java:314)
      [ssh-agent]     	at com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper.createSSHAgentEnvironment(SSHAgentBuildWrapper.java:224)
      [ssh-agent]     	at com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper.preCheckout(SSHAgentBuildWrapper.java:189)
      [ssh-agent]     	at jenkins.scm.SCMCheckoutStrategy.preCheckout(SCMCheckoutStrategy.java:76)
      [ssh-agent]     	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:531)
      [ssh-agent]     	at hudson.model.Run.execute(Run.java:1741)
      [ssh-agent]     	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
      [ssh-agent]     	at hudson.model.ResourceController.execute(ResourceController.java:98)
      [ssh-agent]     	at hudson.model.Executor.run(Executor.java:408)
      [ssh-agent]     Caused by: java.lang.UnsatisfiedLinkError: could not load FFI provider jnr.ffi.provider.jffi.Provider
      [ssh-agent]     	at jnr.ffi.provider.InvalidRuntime.newLoadError(InvalidRuntime.java:83)
      [ssh-agent]     	at jnr.ffi.provider.InvalidRuntime.findType(InvalidRuntime.java:24)
      [ssh-agent]     	at jnr.ffi.Struct$NumberField.<init>(Struct.java:649)
      [ssh-agent]     	at jnr.ffi.Struct$Unsigned16.<init>(Struct.java:1007)
      [ssh-agent]     	at jnr.unixsocket.SockAddrUnix$DefaultSockAddrUnix.<init>(SockAddrUnix.java:129)
      [ssh-agent]     	at jnr.unixsocket.SockAddrUnix.create(SockAddrUnix.java:99)
      [ssh-agent]     	at jnr.unixsocket.UnixSocketAddress.<init>(UnixSocketAddress.java:32)
      [ssh-agent]     	at com.cloudbees.jenkins.plugins.sshagent.jna.AgentServer.start(AgentServer.java:73)
      [ssh-agent]     	at com.cloudbees.jenkins.plugins.sshagent.jna.JNRRemoteAgent.<init>(JNRRemoteAgent.java:64)
      [ssh-agent]     	at com.cloudbees.jenkins.plugins.sshagent.jna.JNRRemoteAgentStarter.call(JNRRemoteAgentStarter.java:63)
      [ssh-agent]     	at com.cloudbees.jenkins.plugins.sshagent.jna.JNRRemoteAgentStarter.call(JNRRemoteAgentStarter.java:37)
      [ssh-agent]     	at hudson.remoting.UserRequest.perform(UserRequest.java:121)
      [ssh-agent]     	at hudson.remoting.UserRequest.perform(UserRequest.java:49)
      [ssh-agent]     	at hudson.remoting.Request$2.run(Request.java:326)
      [ssh-agent]     	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
      [ssh-agent]     	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      [ssh-agent]     	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      [ssh-agent]     	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      [ssh-agent]     	at java.lang.Thread.run(Thread.java:745)
      [ssh-agent]     	at ......remote call to refi-tester(Native Method)
      [ssh-agent]     	at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1413)
      [ssh-agent]     	at hudson.remoting.UserResponse.retrieve(UserRequest.java:221)
      [ssh-agent]     	at hudson.remoting.Channel.call(Channel.java:778)
      [ssh-agent]     	... 10 more
      [ssh-agent]     Caused by: java.lang.ExceptionInInitializerError
      [ssh-agent]     	at jnr.ffi.provider.jffi.NativeRuntime.getInstance(NativeRuntime.java:49)
      [ssh-agent]     	at jnr.ffi.provider.jffi.Provider.<init>(Provider.java:29)
      [ssh-agent]     	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      [ssh-agent]     	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
      [ssh-agent]     	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      [ssh-agent]     	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
      [ssh-agent]     	at java.lang.Class.newInstance(Class.java:442)
      [ssh-agent]     	at jnr.ffi.provider.FFIProvider$SystemProviderSingletonHolder.getInstance(FFIProvider.java:60)
      [ssh-agent]     	at jnr.ffi.provider.FFIProvider$SystemProviderSingletonHolder.<clinit>(FFIProvider.java:49)
      [ssh-agent]     	at jnr.ffi.provider.FFIProvider.getSystemProvider(FFIProvider.java:35)
      [ssh-agent]     	at jnr.ffi.Runtime$SingletonHolder.<clinit>(Runtime.java:85)
      [ssh-agent]     	at jnr.ffi.Runtime.getSystemRuntime(Runtime.java:70)
      [ssh-agent]     	at jnr.unixsocket.SockAddrUnix.<init>(SockAddrUnix.java:34)
      [ssh-agent]     	at jnr.unixsocket.SockAddrUnix$DefaultSockAddrUnix.<init>(SockAddrUnix.java:128)
      [ssh-agent]     	at jnr.unixsocket.SockAddrUnix.create(SockAddrUnix.java:99)
      [ssh-agent]     	at jnr.unixsocket.UnixSocketAddress.<init>(UnixSocketAddress.java:32)
      [ssh-agent]     	at com.cloudbees.jenkins.plugins.sshagent.jna.AgentServer.start(AgentServer.java:73)
      [ssh-agent]     	at com.cloudbees.jenkins.plugins.sshagent.jna.JNRRemoteAgent.<init>(JNRRemoteAgent.java:64)
      [ssh-agent]     	at com.cloudbees.jenkins.plugins.sshagent.jna.JNRRemoteAgentStarter.call(JNRRemoteAgentStarter.java:63)
      [ssh-agent]     	at com.cloudbees.jenkins.plugins.sshagent.jna.JNRRemoteAgentStarter.call(JNRRemoteAgentStarter.java:37)
      [ssh-agent]     	at hudson.remoting.UserRequest.perform(UserRequest.java:121)
      [ssh-agent]     	at hudson.remoting.UserRequest.perform(UserRequest.java:49)
      [ssh-agent]     	at hudson.remoting.Request$2.run(Request.java:326)
      [ssh-agent]     	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
      [ssh-agent]     	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      [ssh-agent]     	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      [ssh-agent]     	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      [ssh-agent]     	at java.lang.Thread.run(Thread.java:745)
      [ssh-agent]     Caused by: java.lang.IllegalStateException: Can't overwrite cause with java.lang.UnsatisfiedLinkError
      [ssh-agent]     	at java.lang.Throwable.initCause(Throwable.java:457)
      [ssh-agent]     	at com.kenai.jffi.Type$Builtin.lookupTypeInfo(Type.java:252)
      [ssh-agent]     	at com.kenai.jffi.Type$Builtin.getTypeInfo(Type.java:237)
      [ssh-agent]     	at com.kenai.jffi.Type.resolveSize(Type.java:155)
      [ssh-agent]     	at com.kenai.jffi.Type.size(Type.java:138)
      [ssh-agent]     	at jnr.ffi.provider.jffi.NativeRuntime$TypeDelegate.size(NativeRuntime.java:178)
      [ssh-agent]     	at jnr.ffi.provider.AbstractRuntime.<init>(AbstractRuntime.java:48)
      [ssh-agent]     	at jnr.ffi.provider.jffi.NativeRuntime.<init>(NativeRuntime.java:57)
      [ssh-agent]     	at jnr.ffi.provider.jffi.NativeRuntime.<init>(NativeRuntime.java:41)
      [ssh-agent]     	at jnr.ffi.provider.jffi.NativeRuntime$SingletonHolder.<clinit>(NativeRuntime.java:53)
      [ssh-agent]     	... 28 more
      [ssh-agent]     Caused by: java.lang.UnsatisfiedLinkError
      [ssh-agent]     	at com.kenai.jffi.Foreign.newLoadError(Foreign.java:72)
      [ssh-agent]     	at com.kenai.jffi.Foreign.access$300(Foreign.java:42)
      [ssh-agent]     	at com.kenai.jffi.Foreign$InValidInstanceHolder.getForeign(Foreign.java:98)
      [ssh-agent]     	at com.kenai.jffi.Foreign.getInstance(Foreign.java:103)
      [ssh-agent]     	at com.kenai.jffi.Type$Builtin.lookupTypeInfo(Type.java:242)
      [ssh-agent]     	... 36 more
      [ssh-agent]     Caused by: java.lang.UnsatisfiedLinkError: /tmp/jffi3859728592252335340.tmp: /tmp/jffi3859728592252335340.tmp: cannot open shared object file: No such file or directory
      [ssh-agent]     	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
      [ssh-agent]     	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1938)
      [ssh-agent]     	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1821)
      [ssh-agent]     	at java.lang.Runtime.load0(Runtime.java:809)
      [ssh-agent]     	at java.lang.System.load(System.java:1086)
      [ssh-agent]     	at com.kenai.jffi.internal.StubLoader.loadFromJar(StubLoader.java:328)
      [ssh-agent]     	at com.kenai.jffi.internal.StubLoader.load(StubLoader.java:235)
      [ssh-agent]     	at com.kenai.jffi.internal.StubLoader.<clinit>(StubLoader.java:403)
      [ssh-agent]     	at java.lang.Class.forName0(Native Method)
      [ssh-agent]     	at java.lang.Class.forName(Class.java:348)
      [ssh-agent]     	at com.kenai.jffi.Init.load(Init.java:68)
      [ssh-agent]     	at com.kenai.jffi.Foreign$InstanceHolder.getInstanceHolder(Foreign.java:49)
      [ssh-agent]     	at com.kenai.jffi.Foreign$InstanceHolder.<clinit>(Foreign.java:45)
      [ssh-agent]     	... 38 more
      FATAL: [ssh-agent] Unable to start agent
      hudson.util.IOException2: [ssh-agent] Unable to start agent
      	at com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper.createSSHAgentEnvironment(SSHAgentBuildWrapper.java:231)
      	at com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper.preCheckout(SSHAgentBuildWrapper.java:189)
      	at jenkins.scm.SCMCheckoutStrategy.preCheckout(SCMCheckoutStrategy.java:76)
      	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:531)
      	at hudson.model.Run.execute(Run.java:1741)
      	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
      	at hudson.model.ResourceController.execute(ResourceController.java:98)
      	at hudson.model.Executor.run(Executor.java:408)
      Caused by: java.lang.RuntimeException: [ssh-agent] Could not find a suitable ssh-agent provider.
      	at com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper$SSHAgentEnvironment.<init>(SSHAgentBuildWrapper.java:332)
      	at com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper.createSSHAgentEnvironment(SSHAgentBuildWrapper.java:224)
      	... 7 more
      Finished: FAILURE
      

      the ssh-agent-plugin works fine if I run it on one of my x86 machines (detailed above).

          [JENKINS-30746] SSH-Agent breaks on ARM slave

          Fathi Boudra added a comment - - edited

          Same bug on PowerPC and Aarch64 slaves. See also https://issues.jenkins-ci.org/browse/JENKINS-37430

          On Aarch64, the relevant line is:

          [ssh-agent]     Caused by: java.lang.UnsatisfiedLinkError: could not locate stub library in jar file.  Tried [jni/unknown-Linux/libjffi-1.2.so, /jni/unknown-Linux/libjffi-1.2.so]
          

          It makes the plugin unusable on anything except x86.

          I tried to install libjffi-jni package on the slave but it doesn't help. It doesn't provide libjffi-1.2.so shared library but jffi-native.jar.

          Fathi Boudra added a comment - - edited Same bug on PowerPC and Aarch64 slaves. See also https://issues.jenkins-ci.org/browse/JENKINS-37430 On Aarch64, the relevant line is: [ssh-agent] Caused by: java.lang.UnsatisfiedLinkError: could not locate stub library in jar file. Tried [jni/unknown-Linux/libjffi-1.2.so, /jni/unknown-Linux/libjffi-1.2.so] It makes the plugin unusable on anything except x86. I tried to install libjffi-jni package on the slave but it doesn't help. It doesn't provide libjffi-1.2.so shared library but jffi-native.jar.

          Fathi Boudra added a comment -

          A workaround have been found. On unix slaves, you can use tomcat native library as an alternate implementation. It's working just fine on ARM architecture. Installing libtcnative-1 package on the slave was good enough to get the issue resolved.

          [ssh-agent] Looking for ssh-agent implementation...
          [ssh-agent]   Java/JNR ssh-agent
          [ssh-agent]   Java/tomcat-native ssh-agent
          [ssh-agent] Started.
          

          Fathi Boudra added a comment - A workaround have been found. On unix slaves, you can use tomcat native library as an alternate implementation. It's working just fine on ARM architecture. Installing libtcnative-1 package on the slave was good enough to get the issue resolved. [ssh-agent] Looking for ssh-agent implementation... [ssh-agent] Java/JNR ssh-agent [ssh-agent] Java/tomcat- native ssh-agent [ssh-agent] Started.

          Same issue is seen when we have POWER (ppc64le arch) server as Jenkins slave node with Jenkins CI server having ssh-agent plugin @v1.13 version. Followed the workaround of installing libtcnative-1 package after installing the libjffi native library and the issue got resolved.

          Srirama Sharma added a comment - Same issue is seen when we have POWER (ppc64le arch) server as Jenkins slave node with Jenkins CI server having ssh-agent plugin @v1.13 version. Followed the workaround of installing libtcnative-1 package after installing the libjffi native library and the issue got resolved.

          Christy Perez added a comment -

          I'm seeing this with ppc64le as well, and the Ubuntu workaround worked. But for our RHEL nodes, I'm stuck. Any suggestions there? I've tried building the jffi libraries using ant, and also installed libtcnative using a fedora 23 rpm – but still get the same error.

          Christy Perez added a comment - I'm seeing this with ppc64le as well, and the Ubuntu workaround worked. But for our RHEL nodes, I'm stuck. Any suggestions there? I've tried building the jffi libraries using ant, and also installed libtcnative using a fedora 23 rpm – but still get the same error.

          Jesse Glick added a comment -

          Presumably not an issue for most people after JENKINS-36997 in 1.14.

          Jesse Glick added a comment - Presumably not an issue for most people after JENKINS-36997 in 1.14.

          Jesse Glick added a comment -

          Jesse Glick added a comment - Close if https://github.com/jenkinsci/ssh-agent-plugin/pull/48 is merged.

            Unassigned Unassigned
            ecksun Linus Wallgren
            Votes:
            1 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: