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

Investigate impact of self-attach flag requirement on plugins

      According to the information from evernat in JENKINS-52092, Monitoring Plugin 1.73.0 requires "-Djdk.attach.allowAttachSelf=true" to be set on master and agent side in order to have the memory histogram in JDK 9. (Edit: with an enhancement in the monitoring plugin 1.73.1, it does not attach itself to the VM in order to get heap histogram in JDK 9. So this plugin does not require to add "-Djdk.attach.allowAttachSelf=true".)

      We still have some plugins attaching to JDK (e.g. File Leak detector plugin), so maybe we need a generic solution for Jenkins packaging (or some documentation about "-Djdk.attach.allowAttachSelf=true").

          [JENKINS-52178] Investigate impact of self-attach flag requirement on plugins

          evernat added a comment -

          By reading code, yes the File leak detector plugin is calling the attach method on a com.sun.tools.attach.VirtualMachine instance which may throw something like
          java.io.IOException: Can not attach to current VM
          at jdk.attach/sun.tools.attach.HotSpotVirtualMachine.(HotSpotVirtualMachine.java:75)
          at jdk.attach/sun.tools.attach.VirtualMachineImpl.(VirtualMachineImpl.java:56)
          at jdk.attach/sun.tools.attach.AttachProviderImpl.attachVirtualMachine(AttachProviderImpl.java:73)
          at jdk.attach/com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:249)

          The workaround for this exception is to add "-Djdk.attach.allowAttachSelf=true" in the java command line.

          Except that the file leak detector plugin does not attach from the same process. It creates another java process and attaches to the Jenkins VM from there.

          So I don't think that the file leak detector plugin will fail on JDK 9. The plugin may not be aware of new methods in JDK 9 to leak files but otherwise, I think it will work.

          evernat added a comment - By reading code, yes the File leak detector plugin is calling the attach method on a com.sun.tools.attach.VirtualMachine instance which may throw something like java.io.IOException: Can not attach to current VM at jdk.attach/sun.tools.attach.HotSpotVirtualMachine.(HotSpotVirtualMachine.java:75) at jdk.attach/sun.tools.attach.VirtualMachineImpl.(VirtualMachineImpl.java:56) at jdk.attach/sun.tools.attach.AttachProviderImpl.attachVirtualMachine(AttachProviderImpl.java:73) at jdk.attach/com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:249) The workaround for this exception is to add "-Djdk.attach.allowAttachSelf=true" in the java command line. Except that the file leak detector plugin does not attach from the same process. It creates another java process and attaches to the Jenkins VM from there. So I don't think that the file leak detector plugin will fail on JDK 9. The plugin may not be aware of new methods in JDK 9 to leak files but otherwise, I think it will work.

          evernat added a comment - - edited

          Searching in jenkinsci, there is only one plugin which contains the words "com.sun.tools.attach.VirtualMachine":

          https://github.com/search?q=org%3Ajenkinsci+com.sun.tools.attach.VirtualMachine&type=Code

          This plugin does not seem to be released and it does not attach to the self process.

          Perhaps there are other plugins calling VirtualMachine by using a dependency like the file leak detector plugin, but then I don't know how to find such plugins.

          evernat added a comment - - edited Searching in jenkinsci, there is only one plugin which contains the words "com.sun.tools.attach.VirtualMachine": https://github.com/search?q=org%3Ajenkinsci+com.sun.tools.attach.VirtualMachine&type=Code This plugin does not seem to be released and it does not attach to the self process. Perhaps there are other plugins calling VirtualMachine by using a dependency like the file leak detector plugin, but then I don't know how to find such plugins.

          Oleg Nenashev added a comment -

          Yeah, I do not see this plugin in update centers. Not sure what it the purpose of this Proc plugin, so I would not worry
          Thanks for the analysis evernat!

          Oleg Nenashev added a comment - Yeah, I do not see this plugin in update centers. Not sure what it the purpose of this Proc plugin, so I would not worry Thanks for the analysis evernat !

          Basil Crow added a comment -

          I tested File Leak Detector 1.8 with Java 11 and found that it did not need any special flags in order for the agent to attach successfully. Closing this issue. If any new problems are discovered relating to self-attach, please open a new Jira ticket.

          Basil Crow added a comment - I tested File Leak Detector 1.8 with Java 11 and found that it did not need any special flags in order for the agent to attach successfully. Closing this issue. If any new problems are discovered relating to self-attach, please open a new Jira ticket.

            Unassigned Unassigned
            oleg_nenashev Oleg Nenashev
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: