reassign 401645 wpasupplicant,sysvinit

Przemyslaw Bruski <[EMAIL PROTECTED]> writes:

> Kel Modderman wrote:
>> I though I was either crazy, or you were whispering sweet nothings in
>> my ear, because on my boxen sendsigs was still at sequence number
>> 20. Then I found this in
>> /usr/share/doc/initscripts/changelog.Debian.gz:
>>   
>
> <blushes> Sorry about that.
>
> Hmm. I think this is no longer wpasupplicant issue, but please do not
> close that bug, it it's OK
> with you. My suggestion would be to ask the sysvinit guys to replace
> sendsigs with the following script
> (not sure if the attachment will come through, if it does not, I will
> repost the script body).


With this rationale, I'm reassigning this bug to both packages, since
this is an interaction issue. 

Full quoting for convinience of the sysvinit maintainers:


> Basically, in this script killall5 is replaced by a shell function that
> does the same and takes command names
> as parameters. These command are never killed.
>
> It solves both the wpasupplicant issue and usplash issue (I did not test
> the latter, I admit).
>
> The following sequence would be needed:
> 1. new (well, let's call it my) sendsigs would have to be run before
> umountnfs
> 2. umountnfs
> 3. wpasupplicant
> 4. original sendsigs (or mine running without exceptions).
>
> What would also be needed is you backing this solution, of course ;-)
>
>
> bye,
>
> Przemek
> #! /bin/sh
> ### BEGIN INIT INFO
> # Provides:          sendsigs
> # Required-Start:    
> # Required-Stop:     umountnfs
> # Default-Start:
> # Default-Stop:      0 6
> # Short-Description: Kill all remaining processes except for crucial ones.
> # Description: 
> ### END INIT INFO
>
> PATH=/usr/sbin:/usr/bin:/sbin:/bin
>
> . /lib/lsb/init-functions
>
> #lists all ancestor pids, until pid number 0 is reached
> getAncestorPids() {
>       local pid=$1
>       local ppids=
>
>       while true; do
>               ppid=$(ps --no-headers --format ppid $pid)
>               if [ $ppid -eq 0 ]; then
>                       break;
>               fi
>               ppids=$ppid" "$ppids
>               pid=$ppid
>       done
>       echo $ppids
> }
>
>
> # Replacement for killall5 command. Just like killall5 does, it sends
> # a signal to all processes except for: ancestor processes, itself
> # and kernel threads.
> # Addtionally, it skips all processes that had been run using command
> # name passed as a parameter.
> #
> # arguments:
> # signalnumber
> # list of command names that should not be killed
> killall5_except() {
>       local signalNumber="$1"
>       shift 
>       local myPid=$$
>       local preciousPids=$(ps --no-headers --format pid -C "$*")
>       #initial precious pids are: my pid and pids of processes given as 
> parameters
>       preciousPids=$myPid" "$preciousPids
>       local ancestorPids=
>
>       for preciousPid in $preciousPids; do
>               local sessionLeaderPid=$(ps --no-headers --format session 
> $preciousPid)
>               ancestorPids=$ancestorPids" "$(getAncestorPids $preciousPid)
>       done
>
>       #kernel threads should not be killed too. Kernel threads have userspace 
> size of 0.
>       local kernelThreadPids=$(ps --format pid,size --no-headers -A | grep " 
> "0$| sed -e s/" [^ ]*$"//)
>
>       allPreciousPids="$preciousPids $ancestorPids $kernelThreadPids"
>
>       allPidsToTerminate=$(ps --deselect --no-headers --format pid --pid 
> $allPreciousPids)
>       
>       #a trick to eliminate ps pid from the list
>       allPidsToTerminate=$(ps --no-headers --format pid --pid 
> $allPidsToTerminate)
>       
>       if [ ! -z "$allPidsToTerminate" ]; then
>           kill $signalNumber $allPidsToTerminate
>       fi
> }
>
> do_stop () {
>       # Kill all processes.
>       log_action_begin_msg "Asking all remaining processes to terminate"
>       killall5_except -15 wpa_supplicant usplash
>       log_action_end_msg 0
>       sleep 5
>       log_action_begin_msg "Killing all remaining processes"
>       killall5_except -9 wpa_supplicant usplash
>       log_action_end_msg 0
> }
>
> case "$1" in
>   start)
>       # No-op
>       ;;
>   restart|reload|force-reload)
>       echo "Error: argument '$1' not supported" >&2
>       exit 3
>       ;;
>   stop)
>       do_stop
>       ;;
>   *)
>       echo "Usage: $0 start|stop" >&2
>       exit 3
>       ;;
> esac
>
> :
> _______________________________________________
> Pkg-wpa-devel mailing list
> [EMAIL PROTECTED]
> http://lists.alioth.debian.org/mailman/listinfo/pkg-wpa-devel

-- 
Gruesse/greetings,
Reinhard Tartler, KeyID 945348A4


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to