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

cannot abort shell scripts on 64-bit Solaris

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • core
    • None

      I cannot get pipeline jobs to abort properly on Solaris machines. Whenever I tried to abort a pipeline job that was running a shell script on a solaris machine the console would say "Sending interrupt signal to process", but debugging on the actual system did not show the slave processes getting any signals.

      Adding some debugging info to the Jenkins code I noticed that the mechanism to identify and kill spawned processes via an environment variable Relies on very OS-specific logic in ProcessTree.java to list the environment variables of processes. On Solaris this logic assumes the data it gets out of /proc/

      {pid}/psinfo contains 32-bit pointers. This is only true as long as the process reading the data out of /proc/{pid}

      /psinfo is a 32-bit process (i.e. the Java process running slave.jar). If the Java process is 64-bit it will get a 64-bit psinfo_t struct out of /proc/

      {pid}

      /psinfo. This results in all of the pointer arithmetic in ProcessTree.java being wrong for 64-bit JVM processes.

      Pull request: https://github.com/jenkinsci/jenkins/pull/2507

            csiden Christopher Siden
            csiden Christopher Siden
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: