[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] tests/libqos: Utilize newer glib spawn check
From: |
Thomas Huth |
Subject: |
Re: [Qemu-devel] [PATCH] tests/libqos: Utilize newer glib spawn check |
Date: |
Wed, 22 Aug 2018 09:36:18 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 |
On 2018-08-21 21:05, Eric Blake wrote:
> During development, I got a 'make check' failure that claimed:
>
> qemu-img returned status code 32512
> **
> ERROR:tests/libqos/libqos.c:202:mkimg: assertion failed: (!rc)
>
> But 32512 is too big for a normal exit status value, which means we
> failed to use WEXITSTATUS() to shift the bits to the desired value
> for printing. However, instead of worrying about how to portably
> parse g_spawn()'s rc in the proper platform-dependent manner, it's
> better to just rely on the fact that we now require glib 2.40 (since
> commit e7b3af815) and can therefore use glib's portable checker
> instead, where the message under my same condition improves to:
>
> Child process exited with code 127
> **
> ERROR:tests/libqos/libqos.c:192:mkimg: assertion failed: (ret && !err)
>
> Signed-off-by: Eric Blake <address@hidden>
>
> ---
> This appears to be the only remaining vestige of a comment mentioning
> glib < 2.40.
> ---
> tests/libqos/libqos.c | 12 +-----------
> 1 file changed, 1 insertion(+), 11 deletions(-)
>
> diff --git a/tests/libqos/libqos.c b/tests/libqos/libqos.c
> index 013ca68581c..c5141873448 100644
> --- a/tests/libqos/libqos.c
> +++ b/tests/libqos/libqos.c
> @@ -185,22 +185,12 @@ void mkimg(const char *file, const char *fmt, unsigned
> size_mb)
> cli = g_strdup_printf("%s create -f %s %s %uM", qemu_img_abs_path,
> fmt, file, size_mb);
> ret = g_spawn_command_line_sync(cli, &out, &out2, &rc, &err);
> - if (err) {
> + if (err || !g_spawn_check_exit_status(rc, &err)) {
> fprintf(stderr, "%s\n", err->message);
> g_error_free(err);
> }
> g_assert(ret && !err);
>
> - /* In glib 2.34, we have g_spawn_check_exit_status. in 2.12, we don't.
> - * glib 2.43.91 implementation assumes that any non-zero is an error for
> - * windows, but uses extra precautions for Linux. However,
> - * 0 is only possible if the program exited normally, so that should be
> - * sufficient for our purposes on all platforms, here. */
> - if (rc) {
> - fprintf(stderr, "qemu-img returned status code %d\n", rc);
> - }
> - g_assert(!rc);
> -
> g_free(out);
> g_free(out2);
> g_free(cli);
>
Reviewed-by: Thomas Huth <address@hidden>