Hide Forgot
Description of problem: Regression in the /CoreOS/initscripts/Sanity/bz843386-killproc-function-should-check-if-program-has-exited-several-times-during-delay Version-Release number of selected component (if applicable): initscripts-9.03.51-1.el6 How reproducible: Always Steps to Reproduce: 1. execute tc#268929 Actual results: fail Expected results: pass Additional info: original bug bz843386, works with initscripts-9.03.49-1.el6
Possible fix: diff --git a/rc.d/init.d/functions b/rc.d/init.d/functions index a72a8b8..3a134ca 100644 --- a/rc.d/init.d/functions +++ b/rc.d/init.d/functions @@ -115,6 +115,11 @@ __kill_pids_term_kill() { local stat=($(< /proc/self/stat)) local base_stime=${stat[21]} + if [ "$1" = "-d" ]; then + delay=$2 + shift 2 + fi + kill_list=$(__kill_pids_term_kill_checkpids $base_stime $kill_list) [ -z "$kill_list" ] && return 0 @@ -491,7 +496,7 @@ killproc() { if [ -n "$pid" ] ; then [ "$BOOTUP" = "verbose" -a -z "${LSB:-}" ] && echo -n "$base " if [ -z "$killlevel" ] ; then - __kill_pids_term_kill $pid + __kill_pids_term_kill -d $delay $pid RC=$? [ "$RC" -eq 0 ] && success $"$base shutdown" || failure $"$base shutdown" # use specified level only
https://git.fedorahosted.org/cgit/initscripts.git/commit/?h=rhel6-branch&id=7bcb9d6b7142ea121eb852f12eda62d7b0cb92cd
Lukas, I've found terrible bug in this patch. __kill_pids_term_kill() { local try=0 local delay=3; local pid= local kill_list=$* <==== in the kill_list can be also something like -d 60 local stat=($(< /proc/self/stat)) local base_stime=${stat[21]} if [ "$1" = "-d" ]; then delay=$2 shift 2 fi after this __kill_pids_term_kill_checkpids filter out from kill_list "-d", but if a process with pid 60 exists, it stays in the kill_list. Example: # ps -p60 PID TTY TIME CMD 60 ? 00:00:00 md/2 # sleep 100 & [1] 24658 # echo $! > /tmp/pid # killproc -p /tmp/pid -d 60 sleep kill_list 60 24658 <==== i've put echo "kill_list $kill_list" just before signaling TERM [1]+ Terminated sleep 100 It terms the sleep, but cannot terminate md/2 (thankfully) and waits for 60s because of delay.
https://git.fedorahosted.org/cgit/initscripts.git/commit/?h=rhel6-branch&id=0c9f0775a2a0e1f8157282a3b36c110e05422f47
Example from comment 5: initscripts-9.03.52-1.el6: fail initscripts-9.03.53-1.el6: pass
TestCase passes on all arch with initscripts-9.03.53-1.el6.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2016-0951.html