All of lore.kernel.org
 help / color / mirror / Atom feed
* [OSSTEST PATCH] TestSupport: use timeout(1)
@ 2014-12-08 14:08 Ian Jackson
  2014-12-08 14:16 ` Ian Campbell
  0 siblings, 1 reply; 2+ messages in thread
From: Ian Jackson @ 2014-12-08 14:08 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Jackson, Ian Campbell

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().  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@eu.citrix.com>
---
 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";
 }
 
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-12-08 14:16 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-08 14:08 [OSSTEST PATCH] TestSupport: use timeout(1) Ian Jackson
2014-12-08 14:16 ` Ian Campbell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.