Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-18314

Possible incompatibility between jffi-1.2.7 and jruby 1.6.5 as shipped with ruby-runtime plugin

      After upgrading to Jenkins 1.518 (from 1.517) last night, the ruby-runtime plugin disappeared from the list of installed plugins. Attempting to reinstall the plugin fails, and results in a stack trace ending with:

      Caused by: org.jruby.embed.EvalFailedException: java.lang.IncompatibleClassChangeError: Found class com.kenai.jffi.InvocationBuffer, but interface was expected

      A little googling suggests that this is a backwards incompatibility between jruby and more recent versions jffi.

          [JENKINS-18314] Possible incompatibility between jffi-1.2.7 and jruby 1.6.5 as shipped with ruby-runtime plugin

          To further support this, rolling back to 1.517 completely resolves this issue. ruby-runtime re-appears in the list of installed apps, along with any plugins that depend on it.

          steve bussetti added a comment - To further support this, rolling back to 1.517 completely resolves this issue. ruby-runtime re-appears in the list of installed apps, along with any plugins that depend on it.

          Bright Fulton added a comment -

          Same experience as sbussetti here. Upgrading to 1.518 causes the ruby-runtime plugin to fail during initialization with the following exception

          Jun 12, 2013 11:53:58 AM ruby.RubyRuntimePlugin start
          INFO: Injecting JRuby into XStream
          
          java.lang.IncompatibleClassChangeError: Found class com.kenai.jffi.InvocationBuffer, but interface was expected
          	at com.kenai.jaffl.provider.jffi.AsmRuntime.marshal(AsmRuntime.java:169)
          	at org.jruby.ext.posix.LinuxLibC$jaffl$0.setenv(Unknown Source)
          	at org.jruby.ext.posix.BaseNativePOSIX.setenv(BaseNativePOSIX.java:221)
          	at org.jruby.ext.posix.LazyPOSIX.setenv(LazyPOSIX.java:263)
          	at org.jruby.RubyGlobal$StringOnlyRubyHash.case_aware_op_aset(RubyGlobal.java:176)
          	at org.jruby.RubyGlobal$CaseInsensitiveStringOnlyRubyHash.op_aset(RubyGlobal.java:87)
          	at org.jruby.RubyHash$i$2$0$op_aset.call(RubyHash$i$2$0$op_aset.gen:65535)
          	at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
          	at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:203)
          	at org.jruby.ast.AttrAssignTwoArgNode.interpret(AttrAssignTwoArgNode.java:42)
          	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
          	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
          	at org.jruby.ast.RootNode.interpret(RootNode.java:129)
          	at org.jruby.evaluator.ASTInterpreter.INTERPRET_ROOT(ASTInterpreter.java:120)
          	at org.jruby.Ruby.runInterpreter(Ruby.java:720)
          	at org.jruby.Ruby.runInterpreter(Ruby.java:728)
          	at org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:119)
          	at org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1231)
          	at org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1224)
          	at org.kohsuke.stapler.jelly.jruby.haml.HamlLanguage.createContainer(HamlLanguage.java:28)
          	at org.kohsuke.stapler.jelly.jruby.JRubyFacet.<init>(JRubyFacet.java:71)
          	at ruby.RubyRuntimePlugin.registerJRubyFacet(RubyRuntimePlugin.java:39)
          	at ruby.RubyRuntimePlugin.start(RubyRuntimePlugin.java:30)
          	at hudson.ClassicPluginStrategy.startPlugin(ClassicPluginStrategy.java:379)
          	at hudson.ClassicPluginStrategy.load(ClassicPluginStrategy.java:368)
          	at hudson.PluginManager$2$1$1.run(PluginManager.java:334)
          	at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:146)
          	at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:259)
          	at jenkins.model.Jenkins$7.runTask(Jenkins.java:893)
          	at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:187)
          	at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:94)
          	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
          	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
          	at java.lang.Thread.run(Thread.java:679)
          

          This causes dependent plugins to also fail and build configs which reference them to not load. Downgrading to 1.517 fixes.

          Bright Fulton added a comment - Same experience as sbussetti here. Upgrading to 1.518 causes the ruby-runtime plugin to fail during initialization with the following exception Jun 12, 2013 11:53:58 AM ruby.RubyRuntimePlugin start INFO: Injecting JRuby into XStream java.lang.IncompatibleClassChangeError: Found class com.kenai.jffi.InvocationBuffer, but interface was expected at com.kenai.jaffl.provider.jffi.AsmRuntime.marshal(AsmRuntime.java:169) at org.jruby.ext.posix.LinuxLibC$jaffl$0.setenv(Unknown Source) at org.jruby.ext.posix.BaseNativePOSIX.setenv(BaseNativePOSIX.java:221) at org.jruby.ext.posix.LazyPOSIX.setenv(LazyPOSIX.java:263) at org.jruby.RubyGlobal$StringOnlyRubyHash.case_aware_op_aset(RubyGlobal.java:176) at org.jruby.RubyGlobal$CaseInsensitiveStringOnlyRubyHash.op_aset(RubyGlobal.java:87) at org.jruby.RubyHash$i$2$0$op_aset.call(RubyHash$i$2$0$op_aset.gen:65535) at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:203) at org.jruby.ast.AttrAssignTwoArgNode.interpret(AttrAssignTwoArgNode.java:42) at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104) at org.jruby.ast.BlockNode.interpret(BlockNode.java:71) at org.jruby.ast.RootNode.interpret(RootNode.java:129) at org.jruby.evaluator.ASTInterpreter.INTERPRET_ROOT(ASTInterpreter.java:120) at org.jruby.Ruby.runInterpreter(Ruby.java:720) at org.jruby.Ruby.runInterpreter(Ruby.java:728) at org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:119) at org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1231) at org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1224) at org.kohsuke.stapler.jelly.jruby.haml.HamlLanguage.createContainer(HamlLanguage.java:28) at org.kohsuke.stapler.jelly.jruby.JRubyFacet.<init>(JRubyFacet.java:71) at ruby.RubyRuntimePlugin.registerJRubyFacet(RubyRuntimePlugin.java:39) at ruby.RubyRuntimePlugin.start(RubyRuntimePlugin.java:30) at hudson.ClassicPluginStrategy.startPlugin(ClassicPluginStrategy.java:379) at hudson.ClassicPluginStrategy.load(ClassicPluginStrategy.java:368) at hudson.PluginManager$2$1$1.run(PluginManager.java:334) at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:146) at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:259) at jenkins.model.Jenkins$7.runTask(Jenkins.java:893) at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:187) at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:94) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang. Thread .run( Thread .java:679) This causes dependent plugins to also fail and build configs which reference them to not load. Downgrading to 1.517 fixes.

          Yuu Yamashita added a comment -

          Close this issue since JENKINS-18311 has been fixed.

          Yuu Yamashita added a comment - Close this issue since JENKINS-18311 has been fixed.

          Yuu Yamashita added a comment -

          This problem has been fixed in ruby-runtime 0.11.

          Yuu Yamashita added a comment - This problem has been fixed in ruby-runtime 0.11.

            jorgenpt Jørgen Tjernø
            sbussetti steve bussetti
            Votes:
            5 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: