Hello community, here is the log from the commit of package aaa_base checked in at Wed Sep 12 16:45:16 CEST 2007. -------- --- aaa_base/aaa_base.changes 2007-09-11 16:05:33.000000000 +0200 +++ /mounts/work_src_done/STABLE/aaa_base/aaa_base.changes 2007-09-12 11:56:32.055647000 +0200 @@ -1,0 +2,5 @@ +Wed Sep 12 11:55:56 CEST 2007 - werner@suse.de + +- Some cleanups in /etc/init.d/halt which may help for #309123 + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ aaa_base.spec ++++++ --- /var/tmp/diff_new_pack.XQ2160/_old 2007-09-12 16:43:41.000000000 +0200 +++ /var/tmp/diff_new_pack.XQ2160/_new 2007-09-12 16:43:41.000000000 +0200 @@ -19,7 +19,7 @@ PreReq: /usr/bin/sed /usr/bin/grep /bin/mv /bin/cat /bin/ls /bin/date /usr/bin/cmp /bin/fillup /sbin/insserv net-tools Autoreqprov: on Version: 10.3 -Release: 82 +Release: 84 Summary: SUSE Linux Base Package BuildRoot: %{_tmppath}/%{name}-%{version}-build Source: aaa_base.tar.bz2 @@ -134,6 +134,8 @@ %defattr(-,root,root) %changelog +* Wed Sep 12 2007 - werner@suse.de +- Some cleanups in /etc/init.d/halt which may help for #309123 * Tue Sep 11 2007 - coolo@suse.de - always patch XDG_* (#300678 - with the help of werner) - fix typo in xdg-enviroment ++++++ aaa_base.tar.bz2 ++++++ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/aaa_base/etc/init.d/halt new/aaa_base/etc/init.d/halt --- old/aaa_base/etc/init.d/halt 2007-08-29 18:12:31.000000000 +0200 +++ new/aaa_base/etc/init.d/halt 2007-09-12 12:04:21.000000000 +0200 @@ -122,48 +122,46 @@ > /dev/$tty > /dev/null 2>&1 || continue hupon="${hupon:+$hupon }/dev/$tty" done -fuser -sk -HUP $hupon +test -z "$hupon" || fuser -sk -HUP $hupon echo "Sending all processes the TERM signal..." killall5 -15 echo -e "$rc_done_up" -etime=$(date +%s) -etime=$(($etime+6)) -parent_processes=" $$ " -p=$$ -while test $p -ne 0; do - set -- $(cat /proc/$p/stat 2>/dev/null) - parent_processes="$parent_processes$4 " - p=$4 +# Wait between last SIGTERM and the next SIGKILL +declare -i etime=$SECONDS +if test -f /fastboot ; then + etime=$((etime+2)) +else + etime=$((etime+6)) +fi + +ppid=$$ +parent_processes="$ppid" +while test $ppid -ne 0; do + read -t 1 pid comm state ppid rest < /proc/$ppid/stat + parent_processes="${parent_processes:+$parent_processes }${ppid}" done -cd /proc -oIFS=$IFS -while test $(date +%s) -lt $etime; do - left_processes= - for dir in [0-9]*; do - case $parent_processes in - *" $dir "*) continue;; - esac - test -n "$(cat $dir/cmdline 2>/dev/null)" || continue - IFS='()' - set -- $(cat $dir/stat 2>/dev/null) - IFS=$oIFS - name=$2 - test -n "$name" || continue - # special case some processes - case "$name" in - splash) continue;; - esac - left_processes="$left_processes $name/$dir" - done - if test -z "$left_processes"; then - break - fi - echo "Waiting for: $left_processes" - usleep 500000 +for comm in /sbin/splash /sbin/blogd; do + ppid="$(/sbin/pidofproc $comm)" || continue + parent_processes="${parent_processes:+$parent_processes }${ppid}" +done +unset comm state ppid rest + +while test $SECONDS -lt $etime; do + left_processes="" + for proc in /proc/[0-9]* ; do + pid=${proc##*/} + case "${parent_processes// /:}" in + *:${pid}:*) continue + esac + /bin/ls -L ${proc}/exe > /dev/null 2>&1 || continue + left_processes="${left_processes:+$left_processes }${pid}" + done + test -n "${left_processes}" || break + usleep 500000 done -cd $OLDPWD +unset pid proc etime parent_processes left_processes echo "Sending all processes the KILL signal..." killall5 -9 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@Hilbert.suse.de