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

Parameters: NPE in canTake() procedures may kill all executors

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Blocker Blocker
    • core
    • Jenkins ver. 1.466.1
      Linux buildserver 2.6.18-164.11.1.el5PAE #1 SMP Wed Jan 6 13:43:57 EST 2010 i686 i686 i386 GNU/Linux

      Jenkins executors are not robust against nulls returned by createValue() and createDefaultValue(). Such return value is valid according to Javadoc.

      NPE in canTake() procedure kills the executor thread. Unfortunately, Jenkins tries other executors after that => any NPE in canTake() terminates ALL active Jenkins executors.

      The initial description from Rotem:

      when using jenkins-multijob-plugin and parameter from type “File Parameter” the Jenkins crashes.
      When i start to run a Multijob with a multijob phase with values in "Advanced: "parameters", if the next job has a parameter from type “File Parameter” Jenkins is eating up all the executers with - ALL available Build executors are turning into zombies with the status 'Dead ' with the exception:

      java.lang.NullPointerException
      at hudson.model.ParametersAction.getAssignedLabel(ParametersAction.java:126)
      at hudson.model.Queue$Item.getAssignedLabel(Queue.java:1265)
      at hudson.model.Node.canTake(Node.java:308)
      at hudson.model.Queue$JobOffer.canTake(Queue.java:210)
      at hudson.model.Queue.maintain(Queue.java:952)
      at hudson.model.Queue.pop(Queue.java:783)
      at hudson.model.Executor.grabJob(Executor.java:287)
      at hudson.model.Executor.run(Executor.java:208)

      Even if at this stage I go to the settings and enlarge the number of Executors, they immediately turn into zombies as well.
      When I remove the specific “File Parameter” parameter all works fine.
      Please advice.

          [JENKINS-15094] Parameters: NPE in canTake() procedures may kill all executors

          Rotem G created issue -
          Rotem G made changes -
          Link New: This issue is related to JENKINS-15036 [ JENKINS-15036 ]

          hagzag added a comment -

          Rotem thanks
          Our team is checking this issue.

          hagzag added a comment - Rotem thanks Our team is checking this issue.

          hagzag added a comment -

          Could you please assign this to someone ASAP - looks like a huge show stopper ...

          hagzag added a comment - Could you please assign this to someone ASAP - looks like a huge show stopper ...
          hagzag made changes -
          Assignee New: itai Or [ itaior ]

          Doron Shai added a comment -

          This issue is a real pain since when using the MultiJob Plugin there is no real way to use the Parametrized Build Plugin and therefore passing parameters from MultiJob Phase to another MultiJob Phase is not possible.

          Doron Shai added a comment - This issue is a real pain since when using the MultiJob Plugin there is no real way to use the Parametrized Build Plugin and therefore passing parameters from MultiJob Phase to another MultiJob Phase is not possible.
          itai Or made changes -
          Fix Version/s New: current [ 10162 ]
          Resolution New: Cannot Reproduce [ 5 ]
          Status Original: Open [ 1 ] New: Resolved [ 5 ]

          Oleg Nenashev added a comment -

          I see the issue after the failed logrotate procedure

          Oleg Nenashev added a comment - I see the issue after the failed logrotate procedure
          Oleg Nenashev made changes -
          Assignee Original: itai Or [ itaior ] New: Oleg Nenashev [ oleg_nenashev ]
          Resolution Original: Cannot Reproduce [ 5 ]
          Status Original: Resolved [ 5 ] New: Reopened [ 4 ]

          Oleg Nenashev added a comment - - edited

          The issue is inside the core

          • ParameterDefinition:createValue() can return null value according to Javadoc.
          • BuildCommand::run() creates a list of parameter values without null checks
          • hudson.model.ParametersAction.getAssignedLabel() iterates parameter values, but there is no null checks

          Any null parameter value in the task (e.g. in CLI call) may lead to the complete DoS of the service. Marked the issue as a blocker

          Oleg Nenashev added a comment - - edited The issue is inside the core ParameterDefinition:createValue() can return null value according to Javadoc. BuildCommand::run() creates a list of parameter values without null checks hudson.model.ParametersAction.getAssignedLabel() iterates parameter values, but there is no null checks Any null parameter value in the task (e.g. in CLI call) may lead to the complete DoS of the service. Marked the issue as a blocker
          Oleg Nenashev made changes -
          Component/s New: core [ 15593 ]
          Component/s Original: jenkins-multijob-plugin [ 16545 ]
          Priority Original: Major [ 3 ] New: Blocker [ 1 ]
          Summary Original:  Multijob with use of parameter from type “File Parameter” all Executors are becoming Dead (!) New:  Massive jobs with “File Parameters” may kill all executors by NPE in canTake() procedures

            oleg_nenashev Oleg Nenashev
            rotem Rotem G
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: