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

ProcessTreeKiller broken for Windows when node went offline/online

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Critical
    • Resolution: Duplicate
    • Component/s: core
    • Labels:
    • Environment:
      Jenkins 1.625.1 LTS
      Window7,Window8,Window10 node
      JDK 1.7
    • Similar Issues:

      Description

      1) Choose a Windows7/8/10 node and mark it offline in its configuration page
      2) then mark it online
      3) Create a job attached to this node with the Windows command: notepad.exe
      4) Start your job, check that Notepad is started (dont close).
      5) Cancel the build of the job and see that Notepad is still open.

      On the windows node, if you manually restart the agent, this fixes the "kill behavior".

      the problem also happens for an accidental deconnection/reconnection (that how we notificed that, because randomly it seems that the ProcessTreeKiller did not work anymore and it seemed that it happened after networks issues between the server and the node)

        Attachments

          Issue Links

            Activity

            Hide
            pcazes Pierre-Henri Cazes added a comment -

            Error reproduced :

            Slave agent is launch by a script containing such command : javaws http://localhost:8080/jenkins/computer/NODE/slave-agent.jnlp
            Job consists in a Windows Batch command : notepad.exe.

            Analysis :
            When disconnecting node using the jenkins UI, the slave-agent is set disconnected and then it restarts.
            The submitting a new job and cancelling it with the UI causes an Error in Class hudson.util.ProcessTree method "public static ProcessTree get()" @line:355
            java.lang.UnsatisfiedLinkError: Native Library C:\Users\<user_name>\.jenkins\cache\jars\4A\winp.x64.22D9AB310A3FA2D96B6E03A836A47724.dll already loaded in another classloader
            When this Error is catched, ProcessTreeKiller enable static attribute is set to false, then DEFAULT ProcessTree imlementation is used, where killAll is no-op. So only ProcessRuntime running the cmd command is destroyed and only cmd process is killed (which doesn't kill the subprocesses)

            Show
            pcazes Pierre-Henri Cazes added a comment - Error reproduced : Slave agent is launch by a script containing such command : javaws http://localhost:8080/jenkins/computer/NODE/slave-agent.jnlp Job consists in a Windows Batch command : notepad.exe. Analysis : When disconnecting node using the jenkins UI, the slave-agent is set disconnected and then it restarts. The submitting a new job and cancelling it with the UI causes an Error in Class hudson.util.ProcessTree method "public static ProcessTree get()" @line:355 java.lang.UnsatisfiedLinkError: Native Library C:\Users\<user_name>\.jenkins\cache\jars\4A\winp.x64.22D9AB310A3FA2D96B6E03A836A47724.dll already loaded in another classloader When this Error is catched, ProcessTreeKiller enable static attribute is set to false, then DEFAULT ProcessTree imlementation is used, where killAll is no-op. So only ProcessRuntime running the cmd command is destroyed and only cmd process is killed (which doesn't kill the subprocesses)
            Hide
            oleg_nenashev Oleg Nenashev added a comment -

            Merging the issue into JENKINS-24319

            Show
            oleg_nenashev Oleg Nenashev added a comment - Merging the issue into JENKINS-24319

              People

              Assignee:
              Unassigned Unassigned
              Reporter:
              sgalles Stephane Gall├Ęs
              Votes:
              2 Vote for this issue
              Watchers:
              4 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: