From: Thomas Huth <thuth@redhat.com>
To: Eric Blake <eblake@redhat.com>, qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, rth@twiddle.net,
alex.bennee@linaro.org, f4bug@amsat.org, mst@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2 for-3.0] tests/libqtest: Improve kill_qemu()
Date: Tue, 24 Jul 2018 08:44:33 +0200 [thread overview]
Message-ID: <a040b798-b864-c48a-2a8c-c19565f262ca@redhat.com> (raw)
In-Reply-To: <20180723193530.20891-1-eblake@redhat.com>
On 23.07.2018 21:35, Eric Blake wrote:
> In kill_qemu() we have an assert that checks that the QEMU process
> didn't dump core:
> assert(!WCOREDUMP(wstatus));
>
> Unfortunately the WCOREDUMP macro here means the resulting message
> is not very easy to comprehend on at least some systems:
>
> ahci-test: tests/libqtest.c:113: kill_qemu: Assertion `!(((__extension__ (((union { __typeof(wstatus) __in; int __i; }) { .__in = (wstatus) }).__i))) & 0x80)' failed.
>
> and it doesn't identify what signal the process took.
>
> Furthermore, we are NOT detecting EINTR (while EINTR shouldn't be
> happening if we didn't install signal handlers, it's still better
> to always be robust), and also want to log unexpected non-zero status
> that was not accompanied by a core dump.
>
> Instead of using a raw assert, print the information in an
> easier to understand way:
>
> /i386/ahci/sanity: tests/libqtest.c:119: kill_qemu() detected QEMU death with core dump from signal 11 (Segmentation fault)
> Aborted (core dumped)
>
> (Of course, the really useful information would be why the QEMU
> process dumped core in the first place, but we don't have that
> by the time the test program has picked up the exit status.)
>
> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
> Signed-off-by: Eric Blake <eblake@redhat.com>
> ---
>
> I've taken the ideas from Peter's patch:
> https://lists.gnu.org/archive/html/qemu-devel/2018-07/msg04430.html
> as well as fixing a related issue brought up last time this was touched:
> https://lists.gnu.org/archive/html/qemu-devel/2018-05/msg05710.html
>
> tests/libqtest.c | 39 +++++++++++++++++++++++++++++++++++++--
> 1 file changed, 37 insertions(+), 2 deletions(-)
>
> diff --git a/tests/libqtest.c b/tests/libqtest.c
> index 098af6aec44..f3dabfadd78 100644
> --- a/tests/libqtest.c
> +++ b/tests/libqtest.c
> @@ -105,12 +105,47 @@ static void kill_qemu(QTestState *s)
> if (s->qemu_pid != -1) {
> int wstatus = 0;
> pid_t pid;
> + bool die = false;
>
> kill(s->qemu_pid, SIGTERM);
> + retry:
> pid = waitpid(s->qemu_pid, &wstatus, 0);
> + if (pid == -1 && errno == EINTR) {
> + goto retry;
> + }
do {
pid = waitpid(s->qemu_pid, &wstatus, 0);
} while (pid == -1 && errno == EINTR);
?
Or use the TFR macro from include/qemu-common.h ?
Thomas
next prev parent reply other threads:[~2018-07-24 6:44 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-23 19:35 [Qemu-devel] [PATCH v2 for-3.0] tests/libqtest: Improve kill_qemu() Eric Blake
2018-07-23 20:20 ` Richard Henderson
2018-07-24 6:36 ` Markus Armbruster
2018-07-24 14:35 ` Eric Blake
2018-07-25 16:17 ` Markus Armbruster
2018-07-30 21:24 ` Eric Blake
2018-07-31 5:35 ` Markus Armbruster
2018-07-24 6:44 ` Thomas Huth [this message]
2018-07-30 21:26 ` Eric Blake
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a040b798-b864-c48a-2a8c-c19565f262ca@redhat.com \
--to=thuth@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=eblake@redhat.com \
--cc=f4bug@amsat.org \
--cc=mst@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).