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

[JDK9] Illegal reflective access from remoting

      While exploring Jenkins 2.60.3 on Oracle Java 9 build 181 (pre-release), it reports illegal access exceptions and warns that a future release of Java 9 will forbid illegal access.

      A stack trace shows:

      WARNING: Illegal reflective access by hudson.remoting.RemoteClassLoader (file:/var/jenkins_home/war/WEB-INF/lib/remoting-3.7.jar) to method java.lang.ClassLoader.getClassLoadingLock(java.lang.String)
              at hudson.remoting.RemoteClassLoader.<clinit>(RemoteClassLoader.java:330)
              at hudson.remoting.MultiClassLoaderSerializer$Output.annotateClass(MultiClassLoaderSerializer.java:69)
              at java.base/java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1291)
              at java.base/java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1232)
              at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1428)
              at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
              at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)
              at hudson.remoting.UserRequest._serialize(UserRequest.java:190)
              at hudson.remoting.UserRequest.serialize(UserRequest.java:199)
              at hudson.remoting.UserRequest.<init>(UserRequest.java:64)
              at hudson.remoting.Channel.call(Channel.java:828)
              at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:517)
              at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:390)
              at hudson.plugins.sshslaves.SSHLauncher.startSlave(SSHLauncher.java:1074)
              at hudson.plugins.sshslaves.SSHLauncher.access$500(SSHLauncher.java:145)
              at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:818)
              at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:793)
              at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
              at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
              at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
              at java.base/java.lang.Thread.run(Thread.java:844)
      

      If it helps you to duplicate the scenario with current Jenkins environment, I have a Dockerfile configured which will run the latest Jenkins Long Term Support release.

      To duplicate the problem:

      1. Clone, build, and run the docker instance
          $ git lfs clone https://github.com/MarkEWaite/docker-lfs JENKINS-46724
          $ cd JENKINS-46724
          $ git lfs fetch origin origin/lts-jdk9-with-plugins
          $ git checkout -b lts-jdk9-with-plugins -t origin/lts-jdk9-with-plugins
          $ docker build -t  lts-jdk9-with-plugins:latest .
          $ docker run -i --rm --publish 8080:8080 lts-jdk9-with-plugins:latest
        

          [JENKINS-46724] [JDK9] Illegal reflective access from remoting

          Mark Waite created issue -
          Mark Waite made changes -
          Epic Link New: JENKINS-40689 [ 177392 ]
          Mark Waite made changes -
          Description Original: While exploring Jenkins 2.60.3 on Oracle Java 9 build 181 (pre-release), it reports illegal access exceptions and warns that a future release of Java 9 will forbid illegal access.

          A partial stack trace shows:

          {noformat}
          WARNING: Illegal reflective access by org.kohsuke.stapler.lang.FieldRef (file:/var/jenkins_home/war/WEB-INF/lib/stapler-1.250.jar) to field java.lang.Throwable.serialVersionUID
                  at org.kohsuke.stapler.lang.FieldRef.wrap(FieldRef.java:39)
                  at org.kohsuke.stapler.lang.KlassNavigator$1$2.get(KlassNavigator.java:202)
                  at org.kohsuke.stapler.lang.KlassNavigator$1$2.get(KlassNavigator.java:199)
                  at java.base/java.util.AbstractList$Itr.next(AbstractList.java:371)
                  at org.kohsuke.stapler.lang.Klass.getFields(Klass.java:79)
                  at org.kohsuke.stapler.KlassDescriptor.<init>(KlassDescriptor.java:26)
                  at org.kohsuke.stapler.MetaClass.buildDispatchers(MetaClass.java:105)
                  at org.kohsuke.stapler.MetaClass.<init>(MetaClass.java:93)
                  at org.kohsuke.stapler.WebApp.getMetaClass(WebApp.java:204)
                  at org.kohsuke.stapler.MetaClass.<init>(MetaClass.java:91)
                  at org.kohsuke.stapler.WebApp.getMetaClass(WebApp.java:204)
                  at org.kohsuke.stapler.MetaClass.<init>(MetaClass.java:91)
                  at org.kohsuke.stapler.WebApp.getMetaClass(WebApp.java:204)
                  at org.kohsuke.stapler.WebApp.getMetaClass(WebApp.java:196)
                  at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:109)
                  at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
                  at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
                  at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
                  at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
                  at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
                  at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95)
                  at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147)
                  at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
                  at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
                  at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150)
                  at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
                  at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
                  at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
                  at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
                  at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
                  at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
                  at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
          {noformat}

          {noformat}
          WARNING: Illegal reflective access by org.kohsuke.stapler.lang.FieldRef (file:/var/jenkins_home/war/WEB-INF/lib/stapler-1.250.jar) to field java.lang.Throwable.backtrace
                  at org.kohsuke.stapler.lang.FieldRef.wrap(FieldRef.java:39)
                  at org.kohsuke.stapler.lang.KlassNavigator$1$2.get(KlassNavigator.java:202)
                  at org.kohsuke.stapler.lang.KlassNavigator$1$2.get(KlassNavigator.java:199)
                  at java.base/java.util.AbstractList$Itr.next(AbstractList.java:371)
                  at org.kohsuke.stapler.lang.Klass.getFields(Klass.java:79)
                  at org.kohsuke.stapler.KlassDescriptor.<init>(KlassDescriptor.java:26)
                  at org.kohsuke.stapler.MetaClass.buildDispatchers(MetaClass.java:105)
                  at org.kohsuke.stapler.MetaClass.<init>(MetaClass.java:93)
                  at org.kohsuke.stapler.WebApp.getMetaClass(WebApp.java:204)
                  at org.kohsuke.stapler.MetaClass.<init>(MetaClass.java:91)
                  at org.kohsuke.stapler.WebApp.getMetaClass(WebApp.java:204)
                  at org.kohsuke.stapler.MetaClass.<init>(MetaClass.java:91)
                  at org.kohsuke.stapler.WebApp.getMetaClass(WebApp.java:204)
                  at org.kohsuke.stapler.WebApp.getMetaClass(WebApp.java:196)
                  at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:109)
                  at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
          {noformat}
          New: While exploring Jenkins 2.60.3 on Oracle Java 9 build 181 (pre-release), it reports illegal access exceptions and warns that a future release of Java 9 will forbid illegal access.

          A stack trace shows:

          {noformat}
          WARNING: Illegal reflective access by hudson.remoting.RemoteClassLoader (file:/var/jenkins_home/war/WEB-INF/lib/remoting-3.7.jar) to method java.lang.ClassLoader.getClassLoadingLock(java.lang.String)
                  at hudson.remoting.RemoteClassLoader.<clinit>(RemoteClassLoader.java:330)
                  at hudson.remoting.MultiClassLoaderSerializer$Output.annotateClass(MultiClassLoaderSerializer.java:69)
                  at java.base/java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1291)
                  at java.base/java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1232)
                  at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1428)
                  at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
                  at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)
                  at hudson.remoting.UserRequest._serialize(UserRequest.java:190)
                  at hudson.remoting.UserRequest.serialize(UserRequest.java:199)
                  at hudson.remoting.UserRequest.<init>(UserRequest.java:64)
                  at hudson.remoting.Channel.call(Channel.java:828)
                  at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:517)
                  at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:390)
                  at hudson.plugins.sshslaves.SSHLauncher.startSlave(SSHLauncher.java:1074)
                  at hudson.plugins.sshslaves.SSHLauncher.access$500(SSHLauncher.java:145)
                  at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:818)
                  at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:793)
                  at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
                  at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
                  at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
                  at java.base/java.lang.Thread.run(Thread.java:844)
          {noformat}
          Mark Waite made changes -
          Summary Original: JDK9] Illegal reflective access from remoting New: [JDK9] Illegal reflective access from remoting
          Oleg Nenashev made changes -
          Component/s New: remoting [ 15489 ]
          Oleg Nenashev made changes -
          Labels New: newbie-friendly
          Elton Alves made changes -
          Assignee New: Elton Alves [ tonho ]
          Elton Alves made changes -
          Status Original: Open [ 1 ] New: In Progress [ 3 ]
          Mark Waite made changes -
          Description Original: While exploring Jenkins 2.60.3 on Oracle Java 9 build 181 (pre-release), it reports illegal access exceptions and warns that a future release of Java 9 will forbid illegal access.

          A stack trace shows:

          {noformat}
          WARNING: Illegal reflective access by hudson.remoting.RemoteClassLoader (file:/var/jenkins_home/war/WEB-INF/lib/remoting-3.7.jar) to method java.lang.ClassLoader.getClassLoadingLock(java.lang.String)
                  at hudson.remoting.RemoteClassLoader.<clinit>(RemoteClassLoader.java:330)
                  at hudson.remoting.MultiClassLoaderSerializer$Output.annotateClass(MultiClassLoaderSerializer.java:69)
                  at java.base/java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1291)
                  at java.base/java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1232)
                  at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1428)
                  at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
                  at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)
                  at hudson.remoting.UserRequest._serialize(UserRequest.java:190)
                  at hudson.remoting.UserRequest.serialize(UserRequest.java:199)
                  at hudson.remoting.UserRequest.<init>(UserRequest.java:64)
                  at hudson.remoting.Channel.call(Channel.java:828)
                  at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:517)
                  at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:390)
                  at hudson.plugins.sshslaves.SSHLauncher.startSlave(SSHLauncher.java:1074)
                  at hudson.plugins.sshslaves.SSHLauncher.access$500(SSHLauncher.java:145)
                  at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:818)
                  at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:793)
                  at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
                  at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
                  at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
                  at java.base/java.lang.Thread.run(Thread.java:844)
          {noformat}
          New: While exploring Jenkins 2.60.3 on Oracle Java 9 build 181 (pre-release), it reports illegal access exceptions and warns that a future release of Java 9 will forbid illegal access.

          A stack trace shows:

          {noformat}
          WARNING: Illegal reflective access by hudson.remoting.RemoteClassLoader (file:/var/jenkins_home/war/WEB-INF/lib/remoting-3.7.jar) to method java.lang.ClassLoader.getClassLoadingLock(java.lang.String)
                  at hudson.remoting.RemoteClassLoader.<clinit>(RemoteClassLoader.java:330)
                  at hudson.remoting.MultiClassLoaderSerializer$Output.annotateClass(MultiClassLoaderSerializer.java:69)
                  at java.base/java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1291)
                  at java.base/java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1232)
                  at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1428)
                  at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
                  at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)
                  at hudson.remoting.UserRequest._serialize(UserRequest.java:190)
                  at hudson.remoting.UserRequest.serialize(UserRequest.java:199)
                  at hudson.remoting.UserRequest.<init>(UserRequest.java:64)
                  at hudson.remoting.Channel.call(Channel.java:828)
                  at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:517)
                  at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:390)
                  at hudson.plugins.sshslaves.SSHLauncher.startSlave(SSHLauncher.java:1074)
                  at hudson.plugins.sshslaves.SSHLauncher.access$500(SSHLauncher.java:145)
                  at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:818)
                  at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:793)
                  at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
                  at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
                  at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
                  at java.base/java.lang.Thread.run(Thread.java:844)
          {noformat}

          If it helps you to duplicate the scenario with current Jenkins environment, I have a Dockerfile configured which will run the latest Jenkins Long Term Support release.

          To duplicate the problem:

          # Clone, build, and run the docker instance
          {code}
            $ git lfs clone https://github.com/MarkEWaite/docker-lfs JENKINS-46724
            $ cd JENKINS-46724
            $ git lfs fetch origin origin/lts-jdk9-with-plugins
            $ git checkout -b lts-jdk9-with-plugins -t origin/lts-jdk9-with-plugins
            $ docker build -t lts-jdk9-with-plugins:latest .
            $ docker run -i --rm --publish 8080:8080 lts-jdk9-with-plugins:latest
          {code}
          Elton Alves made changes -
          Status Original: In Progress [ 3 ] New: Open [ 1 ]
          Elton Alves made changes -
          Assignee Original: Elton Alves [ tonho ]

            oleg_nenashev Oleg Nenashev
            markewaite Mark Waite
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: