Re: wait and SIGSTOP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Nov 14, 2018 at 01:34:10AM +0100, Hadrien Lacour wrote:
> On Mon, Nov 12, 2018 at 05:08:15PM +0100, Hadrien Lacour wrote:
> > Hello,
> >
> > after reading https://www.mail-archive.com/dash@xxxxxxxxxxxxxxx/msg00683.html,
> > I still wonder what the correct behaviour is supposed to be. The last message
> > lets me think that untrapped signals shouldn't interrupt wait. With the script
> >
> >     #!/bin/dash
> >
> >     sleep 100 &
> >     echo $!
> >     wait $!
> >     echo status: $?
> >
> > wait still exits immediatly with status 128 when I kill -STOP the output pid
> > . The other shells I tested still wait for the job and give me:
> > * bash: 143
> > * zsh: 147
> > * busybox ash: 143
> >
> > (this was using dash 0.5.10.2)
> >
> >
> > Sincerly,
> > Hadrien Lacour
>
> After some more testing, I'm even more confused, here's what I get when
> 1) running kill -STOP then kill -CONT on sleep
> 2) running kill on sleep
>
> +-------------+-------------------------------+------+
> | shell       | kill -STOP; kill -CONT        | kill |
> +-------------+-------------------------------+------+
> | zsh         | 147                           | 143  |
> +-------------+-------------------------------+------+
> | bash        | 0                             | 143  |
> +-------------+-------------------------------+------+
> | busybox ash | 0                             | 143  |
> +-------------+-------------------------------+------+
> | dash        | 128 (SIGSTOP interrupts wait) | 143  |
> +-------------+-------------------------------+------+
>
> After reading `man 1p wait` more carefully, I think that bash and busybox ash
> have the correct behviour.

Here's a way to test it without touching anything:

> for sh in zsh bash dash "busybox ash"
do
$sh test.sh &; sleep 0.5; pid=$(cat sleep.pid); kill -STOP $pid; sleep 0.5; kill -CONT $pid; wait $!
$sh test.sh &; sleep 0.5; pid=$(cat sleep.pid); kill $pid
done 2>/dev/null| grep '^status'



[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux