From 61760eabc5b48d82e4da10903f8c5433dc2db79f Mon Sep 17 00:00:00 2001 From: Bob Lantz <rlantz@cs.stanford.edu> Date: Wed, 24 Sep 2014 11:57:46 -0700 Subject: [PATCH] Make sure we 'sudo kill' our sudo pexpect process in close(). This should more reliably shut down pexpect subprocesses when build.py exits before completion. --- util/vm/build.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/util/vm/build.py b/util/vm/build.py index eb0206cc..eca4096c 100755 --- a/util/vm/build.py +++ b/util/vm/build.py @@ -441,7 +441,12 @@ def boot( cow, kernel, initrd, logfile, memory=1024 ): returns: pexpect object to qemu process""" # pexpect might not be installed until after depend() is called global pexpect - import pexpect + if not pexpect: + import pexpect + class Spawn( pexpect.spawn ): + "Subprocess is sudo, so we have to sudo kill it" + def close( self, force=False ): + srun( 'kill %d' % self.pid ) arch = archFor( kernel ) log( '* Detected kernel architecture', arch ) if NoKVM: @@ -462,7 +467,7 @@ def boot( cow, kernel, initrd, logfile, memory=1024 ): cmd = ' '.join( cmd ) log( '* BOOTING VM FROM', cow ) log( cmd ) - vm = pexpect.spawn( cmd, timeout=TIMEOUT, logfile=logfile ) + vm = Spawn( cmd, timeout=TIMEOUT, logfile=logfile ) return vm -- GitLab