-
Bug
-
Resolution: Fixed
-
Minor
-
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
- is related to
-
JENKINS-40470 Jobs didn't finish on Solaris 11 Intel node
-
- Resolved
-
Code changed in jenkins
User: csiden
Path:
core/src/main/java/hudson/util/ProcessTree.java
core/src/main/java/hudson/util/jna/GNUCLibrary.java
http://jenkins-ci.org/commit/jenkins/0f364e3a554a1bc6cddbfe7740993b835cae010e
Log:
JENKINS-37559cannot abort shell scripts on 64-bit Solaris (#2507)