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

Re: [Xen-devel] [OSSTEST PATCH] TestSupport: use timeout(1)



On Mon, 2014-12-08 at 14:08 +0000, Ian Jackson wrote:
> If a command we run times out, the machinery in tcmdex() will arrange
> for the ts-* script to spot the timeout, and stop waiting for it.
> 
> However it is also necessary for the command we ran to die.  It has a
> copy of the owner daemon fd, so if it doesn't, our resources won't get
> freed.  In sufficiently exciting bugs, our allocation might continue
> indefinitely, while a subprocess of ours hangs on after we are long
> gone.
> 
> timeout(1) does not print a message when the process times out (!)  So
> we can't do away with the logic in tcmdex().

I think you mean s/tcmdex/cmd/ in a few places here, since cmd() is
where all the existing timeout stuff is.

>   We set the timeout(1)
> timeout to 30s more than our own timeout, so that tcmdex() will time
> out first and print a message.
> 
> We could use alarm(1) as we do in Osstest/Serial/sympathy.pm but that
> program isn't packaged and its unsophisticated approach is not really
> appropriate for arbitrary nonconsenting programs.
> 
> Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>

Apart from that niggle:
Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>


> ---
>  Osstest/TestSupport.pm |    5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm
> index a3b6936..ca680c0 100644
> --- a/Osstest/TestSupport.pm
> +++ b/Osstest/TestSupport.pm
> @@ -388,7 +388,10 @@ sub sshopts () {
>  sub tcmdex {
>      my ($timeout,$stdout,$cmd,$optsref,@args) = @_;
>      logm("executing $cmd ... @args");
> -    my $r= cmd($timeout,$stdout, $cmd,@$optsref,@args);
> +    # We use timeout(1) as a backstop, in case $cmd doesn't die.  We
> +    # need $cmd to die because we won't release the resources we own
> +    # until all of our children are dead.
> +    my $r= cmd($timeout,$stdout, 'timeout',$timeout+30, 
> $cmd,@$optsref,@args);
>      $r and die "status $r";
>  }
>  



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.