[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 02/17] iotests: iotests.py: prevent deadlock in subp
From: |
Roman Kagan |
Subject: |
[Qemu-devel] [PATCH 02/17] iotests: iotests.py: prevent deadlock in subprocess |
Date: |
Thu, 26 Apr 2018 19:19:43 +0300 |
A subprocess whose std{out,err} is subprocess.PIPE may block writing its
output, so .wait() should not be called on it until the pipes are read
completely on the caller's side.
Subprocess.communicate takes care of this.
Signed-off-by: Roman Kagan <address@hidden>
---
tests/qemu-iotests/iotests.py | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index b25d48a91b..e2abf0cb53 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -104,20 +104,20 @@ def qemu_img_pipe(*args):
subp = subprocess.Popen(qemu_img_args + list(args),
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
- exitcode = subp.wait()
- if exitcode < 0:
- sys.stderr.write('qemu-img received signal %i: %s\n' % (-exitcode, '
'.join(qemu_img_args + list(args))))
- return subp.communicate()[0]
+ output = subp.communicate()[0]
+ if subp.returncode < 0:
+ sys.stderr.write('qemu-img received signal %i: %s\n' %
(-subp.returncode, ' '.join(qemu_img_args + list(args))))
+ return output
def qemu_io(*args):
'''Run qemu-io and return the stdout data'''
args = qemu_io_args + list(args)
subp = subprocess.Popen(args, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
- exitcode = subp.wait()
- if exitcode < 0:
- sys.stderr.write('qemu-io received signal %i: %s\n' % (-exitcode, '
'.join(args)))
- return subp.communicate()[0]
+ output = subp.communicate()[0]
+ if subp.returncode < 0:
+ sys.stderr.write('qemu-io received signal %i: %s\n' %
(-subp.returncode, ' '.join(args)))
+ return output
class QemuIoInteractive:
--
2.14.3
- [Qemu-devel] [PATCH 00/17] iotests: don't choke on disabled drivers, Roman Kagan, 2018/04/26
- [Qemu-devel] [PATCH 04/17] iotest 030: skip quorum test setup/teardown too, Roman Kagan, 2018/04/26
- [Qemu-devel] [PATCH 01/17] block: iterate_format with account of whitelisting, Roman Kagan, 2018/04/26
- [Qemu-devel] [PATCH 12/17] iotest 093: notrun if null-co or null-aio is disabled, Roman Kagan, 2018/04/26
- [Qemu-devel] [PATCH 08/17] iotest 056: skip testcases using blkdebug if disabled, Roman Kagan, 2018/04/26
- [Qemu-devel] [PATCH 07/17] iotest 055: require blkdebug, Roman Kagan, 2018/04/26
- [Qemu-devel] [PATCH 17/17] iotest 184: notrun if null-co or throttle is disabled, Roman Kagan, 2018/04/26
- [Qemu-devel] [PATCH 16/17] iotest 147: notrun if nbd is disabled, Roman Kagan, 2018/04/26
- [Qemu-devel] [PATCH 02/17] iotests: iotests.py: prevent deadlock in subprocess,
Roman Kagan <=
- [Qemu-devel] [PATCH 10/17] iotest 081: notrun if quorum is disabled, Roman Kagan, 2018/04/26
- [Qemu-devel] [PATCH 15/17] iotest 139: skip testcases using disabled drivers, Roman Kagan, 2018/04/26
- [Qemu-devel] [PATCH 03/17] iotests: ask qemu for supported formats, Roman Kagan, 2018/04/26
- [Qemu-devel] [PATCH 09/17] iotest 071: notrun if blkdebug or blkverify is disabled, Roman Kagan, 2018/04/26
- [Qemu-devel] [PATCH 05/17] iotest 030: require blkdebug, Roman Kagan, 2018/04/26
- [Qemu-devel] [PATCH 11/17] iotest 087: notrun if null-co is disabled, Roman Kagan, 2018/04/26
- [Qemu-devel] [PATCH 14/17] iotest 124: skip testcases using blkdebug if disabled, Roman Kagan, 2018/04/26
- [Qemu-devel] [PATCH 06/17] iotest 055: skip unsupported backup target formats, Roman Kagan, 2018/04/26
- [Qemu-devel] [PATCH 13/17] iotest 099: notrun if blkdebug or blkverify is disabled, Roman Kagan, 2018/04/26
- Re: [Qemu-devel] [PATCH 00/17] iotests: don't choke on disabled drivers, no-reply, 2018/04/26