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

Illegal reflective access by JNR to FileDescriptor#fd

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • core
    • JDK 9, Jenkins 2.60.3 as described in my lts-with-plugins docker instance
    • 2.93

      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:

      WARNING: Illegal reflective access by jnr.posix.JavaLibCHelper (file:/var/jenkins_home/war/WEB-INF/lib/jnr-posix-3.0.1.jar) to field java.io.FileDescriptor.fd
              at jnr.posix.JavaLibCHelper.<clinit>(JavaLibCHelper.java:118)
              at jnr.posix.BaseNativePOSIX.<init>(BaseNativePOSIX.java:38)
              at jnr.posix.LinuxPOSIX.<init>(LinuxPOSIX.java:20)
              at jnr.posix.POSIXFactory.loadLinuxPOSIX(POSIXFactory.java:95)
              at jnr.posix.POSIXFactory.loadNativePOSIX(POSIXFactory.java:69)
              at jnr.posix.POSIXFactory.loadPOSIX(POSIXFactory.java:38)
              at jnr.posix.LazyPOSIX.loadPOSIX(LazyPOSIX.java:33)
              at jnr.posix.LazyPOSIX.posix(LazyPOSIX.java:29)
              at jnr.posix.LazyPOSIX.chmod(LazyPOSIX.java:55)
              at hudson.FilePath._chmod(FilePath.java:1611)
              at hudson.FilePath.access$1500(FilePath.java:197)
              at hudson.FilePath$29.invoke(FilePath.java:1596)
              at hudson.FilePath$29.invoke(FilePath.java:1592)
              at hudson.FilePath.act(FilePath.java:998)
              at hudson.FilePath.act(FilePath.java:976)
              at hudson.FilePath.chmod(FilePath.java:1592)
              at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.createSshKeyFile(CliGitAPIImpl.java:1662)
              at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1578)
              at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1561)
              at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1552)                                          at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.getHeadRev(CliGitAPIImpl.java:2676)
              at hudson.plugins.git.GitSCM.compareRemoteRevisionWithImpl(GitSCM.java:640)                                                                     at hudson.plugins.git.GitSCM.compareRemoteRevisionWith(GitSCM.java:599)
              at hudson.scm.SCM.compareRemoteRevisionWith(SCM.java:391)                                                                                       at hudson.scm.SCM.poll(SCM.java:408)
              at hudson.model.AbstractProject._poll(AbstractProject.java:1458)                                                                                at hudson.model.AbstractProject.poll(AbstractProject.java:1361)
              at hudson.triggers.SCMTrigger$Runner.runPolling(SCMTrigger.java:594)                                                                            at hudson.triggers.SCMTrigger$Runner.run(SCMTrigger.java:640)
              at hudson.util.SequentialExecutionQueue$QueueEntry.run(SequentialExecutionQueue.java:119)                                                       at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514)
              at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)                                                                   

      Appears to be the FilePath call to LazyPOSIX.chmod().

          [JENKINS-46619] Illegal reflective access by JNR to FileDescriptor#fd

          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 jenkins.ClassLoaderReflectionToolkit (file:/var/jenkins_home/war/WEB-INF/lib/jenkins-core-2.60.3.jar) to method java.lang.ClassLoader.findClass(java.lang.String)
                  at jenkins.ClassLoaderReflectionToolkit.<clinit>(ClassLoaderReflectionToolkit.java:22)
                  at hudson.ClassicPluginStrategy$DependencyClassLoader.findClass(ClassicPluginStrategy.java:762)
                  at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:563)
                  at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
                  at jenkins.util.AntClassLoader.findBaseClass(AntClassLoader.java:1393)
                  at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1076)
                  at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
                  at hudson.ClassicPluginStrategy.load(ClassicPluginStrategy.java:506)
                  at hudson.PluginManager$2$1$1.run(PluginManager.java:517)
                  at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:169)
                  at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:282)
                  at jenkins.model.Jenkins$7.runTask(Jenkins.java:1090)
                  at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:210)
                  at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
                  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 partial stack trace shows:

          {noformat}
          WARNING: Illegal reflective access by jnr.posix.JavaLibCHelper (file:/var/jenkins_home/war/WEB-INF/lib/jnr-posix-3.0.1.jar) to field java.io.FileDescriptor.fd
                  at jnr.posix.JavaLibCHelper.<clinit>(JavaLibCHelper.java:118)
                  at jnr.posix.BaseNativePOSIX.<init>(BaseNativePOSIX.java:38)
                  at jnr.posix.LinuxPOSIX.<init>(LinuxPOSIX.java:20)
                  at jnr.posix.POSIXFactory.loadLinuxPOSIX(POSIXFactory.java:95)
                  at jnr.posix.POSIXFactory.loadNativePOSIX(POSIXFactory.java:69)
                  at jnr.posix.POSIXFactory.loadPOSIX(POSIXFactory.java:38)
                  at jnr.posix.LazyPOSIX.loadPOSIX(LazyPOSIX.java:33)
                  at jnr.posix.LazyPOSIX.posix(LazyPOSIX.java:29)
                  at jnr.posix.LazyPOSIX.chmod(LazyPOSIX.java:55)
                  at hudson.FilePath._chmod(FilePath.java:1611)
                  at hudson.FilePath.access$1500(FilePath.java:197)
                  at hudson.FilePath$29.invoke(FilePath.java:1596)
                  at hudson.FilePath$29.invoke(FilePath.java:1592)
                  at hudson.FilePath.act(FilePath.java:998)
                  at hudson.FilePath.act(FilePath.java:976)
                  at hudson.FilePath.chmod(FilePath.java:1592)
                  at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.createSshKeyFile(CliGitAPIImpl.java:1662)
                  at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1578)
                  at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1561)
                  at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1552) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.getHeadRev(CliGitAPIImpl.java:2676)
                  at hudson.plugins.git.GitSCM.compareRemoteRevisionWithImpl(GitSCM.java:640) at hudson.plugins.git.GitSCM.compareRemoteRevisionWith(GitSCM.java:599)
                  at hudson.scm.SCM.compareRemoteRevisionWith(SCM.java:391) at hudson.scm.SCM.poll(SCM.java:408)
                  at hudson.model.AbstractProject._poll(AbstractProject.java:1458) at hudson.model.AbstractProject.poll(AbstractProject.java:1361)
                  at hudson.triggers.SCMTrigger$Runner.runPolling(SCMTrigger.java:594) at hudson.triggers.SCMTrigger$Runner.run(SCMTrigger.java:640)
                  at hudson.util.SequentialExecutionQueue$QueueEntry.run(SequentialExecutionQueue.java:119) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514)
                  at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) {noformat}

          Appears to be the FilePath call to LazyPOSIX.chmod().
          Oleg Nenashev made changes -
          Labels New: java10_hackathon

          Nicolas De Loof added a comment - see https://github.com/jnr/jnr-posix/issues/110  
          Nicolas De Loof made changes -
          Link New: This issue depends on JENKINS-46725 [ JENKINS-46725 ]

          Devin Nusbaum added a comment -

          This call should no longer happen in a default installation after Jenkins 2.93 which contains https://github.com/jenkinsci/jenkins/pull/3135 (part of JENKINS-36088) unless the user has explicitly enabled the native mode via system property.

          Here is the code in question, which now defaults to the Java implementation. Even though it shouldn't affect users by default anymore, as I mentioned on JENKINS-46725 I don't think there is any obstacle to removing the native option for good.

          Devin Nusbaum added a comment - This call should no longer happen in a default installation after Jenkins 2.93 which contains https://github.com/jenkinsci/jenkins/pull/3135  (part of  JENKINS-36088 ) unless the user has explicitly enabled the native mode via system property. Here  is the code in question, which now defaults to the Java implementation. Even though it shouldn't affect users by default anymore, as I mentioned on JENKINS-46725 I don't think there is any obstacle to removing the native option for good.
          Oleg Nenashev made changes -
          Labels Original: java10_hackathon New: java10_hackathon java11
          Baptiste Mathus made changes -
          Labels Original: java10_hackathon java11 New: illegalReflectiveAccess java10_hackathon java11

          dnusbaum IIUC, you're saying this is actually fixed now?
          Can we close somehow this ticket? Given you've worked in some of these, I'd appreciate some proposal/guidance here for the next steps: like should we even care and close this JIRA, close this one and file something more specific to fix the remainder issue, etc?

          Thanks for your help!

          Baptiste Mathus added a comment - dnusbaum IIUC, you're saying this is actually fixed now? Can we close somehow this ticket? Given you've worked in some of these, I'd appreciate some proposal/guidance here for the next steps: like should we even care and close this JIRA, close this one and file something more specific to fix the remainder issue, etc? Thanks for your help!

            Unassigned Unassigned
            markewaite Mark Waite
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: