mirror of
https://git.yoctoproject.org/poky
synced 2026-04-23 18:32:12 +02:00
oeqa/ssh: Further improve process exit handling
It looks like there were further cases where orphaned processes may be left behind since the .kill() calls may be unsuccessful if the process terminated due to the terminate or through normal exit. In that situation .wait() wouldn't have been called. Further tweak the exit code paths to ensure .wait() is called to update the returncode value before returning in all cases. (From OE-Core rev: e1e038ab01a599fcdd4aa6211b6d15cd01a5e2e3) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit 0a0a1731e38edfa72a141e8fd8f2de52be562e94) Signed-off-by: Steve Sakoman <steve@sakoman.com>
This commit is contained in:
committed by
Steve Sakoman
parent
1efc676afc
commit
464b034745
@@ -262,7 +262,6 @@ def SSHCall(command, logger, timeout=None, **opts):
|
||||
time.sleep(5)
|
||||
try:
|
||||
process.kill()
|
||||
process.wait()
|
||||
except OSError:
|
||||
logger.debug('OSError when killing process')
|
||||
pass
|
||||
@@ -271,6 +270,7 @@ def SSHCall(command, logger, timeout=None, **opts):
|
||||
" running time: %d seconds." % (timeout, endtime))
|
||||
logger.debug('Received data from SSH call:\n%s ' % lastline)
|
||||
output += lastline
|
||||
process.wait()
|
||||
|
||||
else:
|
||||
output_raw = process.communicate()[0]
|
||||
@@ -285,10 +285,10 @@ def SSHCall(command, logger, timeout=None, **opts):
|
||||
except TimeoutExpired:
|
||||
try:
|
||||
process.kill()
|
||||
process.wait()
|
||||
except OSError:
|
||||
logger.debug('OSError')
|
||||
pass
|
||||
process.wait()
|
||||
|
||||
options = {
|
||||
"stdout": subprocess.PIPE,
|
||||
@@ -315,6 +315,7 @@ def SSHCall(command, logger, timeout=None, **opts):
|
||||
# whilst running and ensure we don't leave a process behind.
|
||||
if process.poll() is None:
|
||||
process.kill()
|
||||
if process.returncode == None:
|
||||
process.wait()
|
||||
logger.debug('Something went wrong, killing SSH process')
|
||||
raise
|
||||
|
||||
Reference in New Issue
Block a user