* [Qemu-devel] [PATCH v4 0/3] libqtest: verify QEMU exit status @ 2018-05-24 18:25 Michael S. Tsirkin 2018-05-24 18:25 ` [Qemu-devel] [PATCH v4 1/3] osdep: add wait.h compat macros Michael S. Tsirkin ` (2 more replies) 0 siblings, 3 replies; 11+ messages in thread From: Michael S. Tsirkin @ 2018-05-24 18:25 UTC (permalink / raw) To: qemu-devel Cc: Eric Blake, Thomas Huth, Philippe Mathieu-Daudé, Markus Armbruster Whenever QEMU coredumps, the test would previously succeed. With this patchset applied, one sees: assertion failed: !WCOREDUMP(wstatus) Changes from v3: - add osdep stubs for non-linux platforms, suggested by Thomas Changes from v2: - bugfix - assert returned pid - rework complex asserts for clarity Changes from v1: - drop SIGTERM as suggested by Eric Michael S. Tsirkin (3): osdep: add wait.h compat macros libqtest: fail if child coredumps libqtest: add more exit status checks include/qemu/osdep.h | 10 ++++++++++ tests/libqtest.c | 19 ++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) -- MST ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH v4 1/3] osdep: add wait.h compat macros 2018-05-24 18:25 [Qemu-devel] [PATCH v4 0/3] libqtest: verify QEMU exit status Michael S. Tsirkin @ 2018-05-24 18:25 ` Michael S. Tsirkin 2018-06-14 12:56 ` Markus Armbruster 2018-05-24 18:25 ` [Qemu-devel] [PATCH v4 2/3] libqtest: fail if child coredumps Michael S. Tsirkin 2018-05-24 18:25 ` [Qemu-devel] [PATCH v4 3/3] libqtest: add more exit status checks Michael S. Tsirkin 2 siblings, 1 reply; 11+ messages in thread From: Michael S. Tsirkin @ 2018-05-24 18:25 UTC (permalink / raw) To: qemu-devel Cc: Eric Blake, Thomas Huth, Philippe Mathieu-Daudé, Markus Armbruster, Richard Henderson, Emilio G. Cota, Eduardo Habkost, Max Reitz Man page for WCOREDUMP says: WCOREDUMP(wstatus) returns true if the child produced a core dump. This macro should be employed only if WIFSIGNALED returned true. This macro is not specified in POSIX.1-2001 and is not available on some UNIX implementations (e.g., AIX, SunOS). Therefore, enclose its use inside #ifdef WCOREDUMP ... #endif. Let's do exactly this. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- include/qemu/osdep.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index 4165806..afc28e5 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -108,6 +108,16 @@ extern int daemon(int, int); #include "qemu/typedefs.h" /* + * According to waitpid man page: + * WCOREDUMP + * This macro is not specified in POSIX.1-2001 and is not + * available on some UNIX implementations (e.g., AIX, SunOS). + * Therefore, enclose its use inside #ifdef WCOREDUMP ... #endif. + */ +#ifndef WCOREDUMP +#define WCOREDUMP(status) 0 +#endif +/* * We have a lot of unaudited code that may fail in strange ways, or * even be a security risk during migration, if you disable assertions * at compile-time. You may comment out these safety checks if you -- MST ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH v4 1/3] osdep: add wait.h compat macros 2018-05-24 18:25 ` [Qemu-devel] [PATCH v4 1/3] osdep: add wait.h compat macros Michael S. Tsirkin @ 2018-06-14 12:56 ` Markus Armbruster 2018-06-14 13:02 ` Peter Maydell 0 siblings, 1 reply; 11+ messages in thread From: Markus Armbruster @ 2018-06-14 12:56 UTC (permalink / raw) To: Michael S. Tsirkin Cc: qemu-devel, Thomas Huth, Eduardo Habkost, Richard Henderson, Philippe Mathieu-Daudé, Markus Armbruster, Emilio G. Cota, Max Reitz "Michael S. Tsirkin" <mst@redhat.com> writes: > Man page for WCOREDUMP says: > > WCOREDUMP(wstatus) returns true if the child produced a core dump. > This macro should be employed only if WIFSIGNALED returned true. > > This macro is not specified in POSIX.1-2001 and is not > available on some UNIX implementations (e.g., AIX, SunOS). Therefore, > enclose its use inside #ifdef WCOREDUMP ... #endif. > > Let's do exactly this. Sorry to nitpick, but you're not doing "exactly this", you're providing a stub: > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > --- > include/qemu/osdep.h | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h > index 4165806..afc28e5 100644 > --- a/include/qemu/osdep.h > +++ b/include/qemu/osdep.h > @@ -108,6 +108,16 @@ extern int daemon(int, int); > #include "qemu/typedefs.h" > > /* > + * According to waitpid man page: > + * WCOREDUMP > + * This macro is not specified in POSIX.1-2001 and is not > + * available on some UNIX implementations (e.g., AIX, SunOS). > + * Therefore, enclose its use inside #ifdef WCOREDUMP ... #endif. > + */ > +#ifndef WCOREDUMP > +#define WCOREDUMP(status) 0 > +#endif > +/* > * We have a lot of unaudited code that may fail in strange ways, or > * even be a security risk during migration, if you disable assertions > * at compile-time. You may comment out these safety checks if you Suggest to drop the last sentence from the comment, and have the commit message state you're providing a stub. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH v4 1/3] osdep: add wait.h compat macros 2018-06-14 12:56 ` Markus Armbruster @ 2018-06-14 13:02 ` Peter Maydell 0 siblings, 0 replies; 11+ messages in thread From: Peter Maydell @ 2018-06-14 13:02 UTC (permalink / raw) To: Markus Armbruster Cc: Michael S. Tsirkin, Thomas Huth, Eduardo Habkost, QEMU Developers, Richard Henderson, Philippe Mathieu-Daudé, Emilio G. Cota, Max Reitz On 14 June 2018 at 13:56, Markus Armbruster <armbru@redhat.com> wrote: > Suggest to drop the last sentence from the comment, and have the commit > message state you're providing a stub. This patch is already in upstream, commit 28012e190e68... thanks -- PMM ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH v4 2/3] libqtest: fail if child coredumps 2018-05-24 18:25 [Qemu-devel] [PATCH v4 0/3] libqtest: verify QEMU exit status Michael S. Tsirkin 2018-05-24 18:25 ` [Qemu-devel] [PATCH v4 1/3] osdep: add wait.h compat macros Michael S. Tsirkin @ 2018-05-24 18:25 ` Michael S. Tsirkin 2018-05-25 6:10 ` Thomas Huth 2018-05-24 18:25 ` [Qemu-devel] [PATCH v4 3/3] libqtest: add more exit status checks Michael S. Tsirkin 2 siblings, 1 reply; 11+ messages in thread From: Michael S. Tsirkin @ 2018-05-24 18:25 UTC (permalink / raw) To: qemu-devel Cc: Eric Blake, Thomas Huth, Philippe Mathieu-Daudé, Markus Armbruster Right now tests report OK status if QEMU crashes during cleanup. Let's catch that case and fail the test. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- tests/libqtest.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/libqtest.c b/tests/libqtest.c index 43fb97e..f869854 100644 --- a/tests/libqtest.c +++ b/tests/libqtest.c @@ -103,8 +103,15 @@ static int socket_accept(int sock) static void kill_qemu(QTestState *s) { if (s->qemu_pid != -1) { + int wstatus = 0; + pid_t pid; + kill(s->qemu_pid, SIGTERM); - waitpid(s->qemu_pid, NULL, 0); + pid = waitpid(s->qemu_pid, &wstatus, 0); + + if (pid == s->qemu_pid && WIFSIGNALED(wstatus)) { + assert(!WCOREDUMP(wstatus)); + } } } -- MST ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH v4 2/3] libqtest: fail if child coredumps 2018-05-24 18:25 ` [Qemu-devel] [PATCH v4 2/3] libqtest: fail if child coredumps Michael S. Tsirkin @ 2018-05-25 6:10 ` Thomas Huth 2018-05-25 11:22 ` Thomas Huth 2018-05-25 12:15 ` Michael S. Tsirkin 0 siblings, 2 replies; 11+ messages in thread From: Thomas Huth @ 2018-05-25 6:10 UTC (permalink / raw) To: Michael S. Tsirkin, qemu-devel Cc: Philippe Mathieu-Daudé, Markus Armbruster, Eric Blake On 24.05.2018 20:25, Michael S. Tsirkin wrote: > Right now tests report OK status if QEMU crashes during cleanup. > Let's catch that case and fail the test. > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > --- > tests/libqtest.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/tests/libqtest.c b/tests/libqtest.c > index 43fb97e..f869854 100644 > --- a/tests/libqtest.c > +++ b/tests/libqtest.c > @@ -103,8 +103,15 @@ static int socket_accept(int sock) > static void kill_qemu(QTestState *s) > { > if (s->qemu_pid != -1) { > + int wstatus = 0; > + pid_t pid; > + > kill(s->qemu_pid, SIGTERM); > - waitpid(s->qemu_pid, NULL, 0); > + pid = waitpid(s->qemu_pid, &wstatus, 0); > + > + if (pid == s->qemu_pid && WIFSIGNALED(wstatus)) { > + assert(!WCOREDUMP(wstatus)); Another ugliness that I just discovered: kill_qemu is also called from the SIGABRT handler. So if a qtest assert() triggers an abort(), the abort handler runs kill_qemu which now could trigger another assert() and thus abort(). It's likely not a real problem since the abort handler has been installed with SA_RESETHAND, but it's still quite confusing code. Please let's clean up this ugliness properly: I think kill_qemu should *only* be used by the abort handler, and then kill QEMU with SIGKILL for good, to make sure that there are no stuck QEMU processes hanging around anymore. qtest_quit() should simply try to quit QEMU via QMP instead, and then check for WIFEXITED(wstatus) && !WEXITSTATUS(wstatus) instead of using the kill_qemu() function. Thomas ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH v4 2/3] libqtest: fail if child coredumps 2018-05-25 6:10 ` Thomas Huth @ 2018-05-25 11:22 ` Thomas Huth 2018-05-25 12:15 ` Michael S. Tsirkin 1 sibling, 0 replies; 11+ messages in thread From: Thomas Huth @ 2018-05-25 11:22 UTC (permalink / raw) To: Michael S. Tsirkin, qemu-devel Cc: Philippe Mathieu-Daudé, Markus Armbruster On 25.05.2018 08:10, Thomas Huth wrote: > On 24.05.2018 20:25, Michael S. Tsirkin wrote: >> Right now tests report OK status if QEMU crashes during cleanup. >> Let's catch that case and fail the test. >> >> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> >> --- >> tests/libqtest.c | 9 ++++++++- >> 1 file changed, 8 insertions(+), 1 deletion(-) >> >> diff --git a/tests/libqtest.c b/tests/libqtest.c >> index 43fb97e..f869854 100644 >> --- a/tests/libqtest.c >> +++ b/tests/libqtest.c >> @@ -103,8 +103,15 @@ static int socket_accept(int sock) >> static void kill_qemu(QTestState *s) >> { >> if (s->qemu_pid != -1) { >> + int wstatus = 0; >> + pid_t pid; >> + >> kill(s->qemu_pid, SIGTERM); >> - waitpid(s->qemu_pid, NULL, 0); >> + pid = waitpid(s->qemu_pid, &wstatus, 0); >> + >> + if (pid == s->qemu_pid && WIFSIGNALED(wstatus)) { >> + assert(!WCOREDUMP(wstatus)); > > Another ugliness that I just discovered: kill_qemu is also called from > the SIGABRT handler. So if a qtest assert() triggers an abort(), the > abort handler runs kill_qemu which now could trigger another assert() > and thus abort(). It's likely not a real problem since the abort handler > has been installed with SA_RESETHAND, but it's still quite confusing code. > > Please let's clean up this ugliness properly: I think kill_qemu should > *only* be used by the abort handler, and then kill QEMU with SIGKILL for > good, to make sure that there are no stuck QEMU processes hanging around > anymore. > > qtest_quit() should simply try to quit QEMU via QMP instead, and then > check for WIFEXITED(wstatus) && !WEXITSTATUS(wstatus) instead of using > the kill_qemu() function. I just did some experiments with that, and using QMP 'quit' to exit QEMU is also not working very reliable - some tests apparently mess up QMP quite badly, so the 'quit' does not work during qtest_quit anymore. Looks like we have to continue to send SIGTERM during qtest_quit(). But I still think we should separate the logic from the abort handler (which should use SIGKILL in case SIGTERM does not work as expected). Thomas ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH v4 2/3] libqtest: fail if child coredumps 2018-05-25 6:10 ` Thomas Huth 2018-05-25 11:22 ` Thomas Huth @ 2018-05-25 12:15 ` Michael S. Tsirkin 2018-05-25 14:05 ` Thomas Huth 1 sibling, 1 reply; 11+ messages in thread From: Michael S. Tsirkin @ 2018-05-25 12:15 UTC (permalink / raw) To: Thomas Huth Cc: qemu-devel, Philippe Mathieu-Daudé, Markus Armbruster, Eric Blake On Fri, May 25, 2018 at 08:10:48AM +0200, Thomas Huth wrote: > On 24.05.2018 20:25, Michael S. Tsirkin wrote: > > Right now tests report OK status if QEMU crashes during cleanup. > > Let's catch that case and fail the test. > > > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > > --- > > tests/libqtest.c | 9 ++++++++- > > 1 file changed, 8 insertions(+), 1 deletion(-) > > > > diff --git a/tests/libqtest.c b/tests/libqtest.c > > index 43fb97e..f869854 100644 > > --- a/tests/libqtest.c > > +++ b/tests/libqtest.c > > @@ -103,8 +103,15 @@ static int socket_accept(int sock) > > static void kill_qemu(QTestState *s) > > { > > if (s->qemu_pid != -1) { > > + int wstatus = 0; > > + pid_t pid; > > + > > kill(s->qemu_pid, SIGTERM); > > - waitpid(s->qemu_pid, NULL, 0); > > + pid = waitpid(s->qemu_pid, &wstatus, 0); > > + > > + if (pid == s->qemu_pid && WIFSIGNALED(wstatus)) { > > + assert(!WCOREDUMP(wstatus)); > > Another ugliness that I just discovered: kill_qemu is also called from > the SIGABRT handler. So if a qtest assert() triggers an abort(), the > abort handler runs kill_qemu which now could trigger another assert() > and thus abort(). But only the first one will cause a coredump. > It's likely not a real problem since the abort handler > has been installed with SA_RESETHAND, but it's still quite confusing code. > > Please let's clean up this ugliness properly: I think kill_qemu should > *only* be used by the abort handler, and then kill QEMU with SIGKILL for > good, to make sure that there are no stuck QEMU processes hanging around > anymore. > > qtest_quit() should simply try to quit QEMU via QMP instead, and then > check for WIFEXITED(wstatus) && !WEXITSTATUS(wstatus) instead of using > the kill_qemu() function. > > Thomas I think I'll drop the second patch for now. failing test on coredump is clearly correct. The rest can wait until someone has the energy to look into all the intricacies of signal handling. -- MST ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH v4 2/3] libqtest: fail if child coredumps 2018-05-25 12:15 ` Michael S. Tsirkin @ 2018-05-25 14:05 ` Thomas Huth 0 siblings, 0 replies; 11+ messages in thread From: Thomas Huth @ 2018-05-25 14:05 UTC (permalink / raw) To: Michael S. Tsirkin Cc: Markus Armbruster, qemu-devel, Philippe Mathieu-Daudé On 25.05.2018 14:15, Michael S. Tsirkin wrote: > On Fri, May 25, 2018 at 08:10:48AM +0200, Thomas Huth wrote: >> On 24.05.2018 20:25, Michael S. Tsirkin wrote: >>> Right now tests report OK status if QEMU crashes during cleanup. >>> Let's catch that case and fail the test. >>> >>> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> >>> --- >>> tests/libqtest.c | 9 ++++++++- >>> 1 file changed, 8 insertions(+), 1 deletion(-) >>> >>> diff --git a/tests/libqtest.c b/tests/libqtest.c >>> index 43fb97e..f869854 100644 >>> --- a/tests/libqtest.c >>> +++ b/tests/libqtest.c >>> @@ -103,8 +103,15 @@ static int socket_accept(int sock) >>> static void kill_qemu(QTestState *s) >>> { >>> if (s->qemu_pid != -1) { >>> + int wstatus = 0; >>> + pid_t pid; >>> + >>> kill(s->qemu_pid, SIGTERM); >>> - waitpid(s->qemu_pid, NULL, 0); >>> + pid = waitpid(s->qemu_pid, &wstatus, 0); >>> + >>> + if (pid == s->qemu_pid && WIFSIGNALED(wstatus)) { >>> + assert(!WCOREDUMP(wstatus)); >> >> Another ugliness that I just discovered: kill_qemu is also called from >> the SIGABRT handler. So if a qtest assert() triggers an abort(), the >> abort handler runs kill_qemu which now could trigger another assert() >> and thus abort(). > > But only the first one will cause a coredump. > >> It's likely not a real problem since the abort handler >> has been installed with SA_RESETHAND, but it's still quite confusing code. >> >> Please let's clean up this ugliness properly: I think kill_qemu should >> *only* be used by the abort handler, and then kill QEMU with SIGKILL for >> good, to make sure that there are no stuck QEMU processes hanging around >> anymore. >> >> qtest_quit() should simply try to quit QEMU via QMP instead, and then >> check for WIFEXITED(wstatus) && !WEXITSTATUS(wstatus) instead of using >> the kill_qemu() function. >> >> Thomas > > I think I'll drop the second patch for now. failing test on coredump > is clearly correct. The rest can wait until someone has the energy > to look into all the intricacies of signal handling. Ok, sounds like a plan. Acked-by: Thomas Huth <thuth@redhat.com> ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH v4 3/3] libqtest: add more exit status checks 2018-05-24 18:25 [Qemu-devel] [PATCH v4 0/3] libqtest: verify QEMU exit status Michael S. Tsirkin 2018-05-24 18:25 ` [Qemu-devel] [PATCH v4 1/3] osdep: add wait.h compat macros Michael S. Tsirkin 2018-05-24 18:25 ` [Qemu-devel] [PATCH v4 2/3] libqtest: fail if child coredumps Michael S. Tsirkin @ 2018-05-24 18:25 ` Michael S. Tsirkin 2018-05-25 14:07 ` Michael S. Tsirkin 2 siblings, 1 reply; 11+ messages in thread From: Michael S. Tsirkin @ 2018-05-24 18:25 UTC (permalink / raw) To: qemu-devel Cc: Eric Blake, Thomas Huth, Philippe Mathieu-Daudé, Markus Armbruster Add more checks on how did QEMU exit. Legal ways to exit right now: - exit(0) or return from main - kill(SIGTERM) - sent by testing infrastructure Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- tests/libqtest.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/libqtest.c b/tests/libqtest.c index f869854..36ca859 100644 --- a/tests/libqtest.c +++ b/tests/libqtest.c @@ -109,9 +109,19 @@ static void kill_qemu(QTestState *s) kill(s->qemu_pid, SIGTERM); pid = waitpid(s->qemu_pid, &wstatus, 0); - if (pid == s->qemu_pid && WIFSIGNALED(wstatus)) { + /* waitpid returns child PID on success */ + assert(pid == s->qemu_pid); + + /* If exited on signal - check the reason: core dump is never OK */ + if (WIFSIGNALED(wstatus)) { assert(!WCOREDUMP(wstatus)); } + /* If exited normally - check exit status */ + if (WIFEXITED(wstatus)) { + assert(!WEXITSTATUS(wstatus)); + } + /* Valid ways to exit: right now only return from main or exit */ + assert(WIFEXITED(wstatus)); } } -- MST ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH v4 3/3] libqtest: add more exit status checks 2018-05-24 18:25 ` [Qemu-devel] [PATCH v4 3/3] libqtest: add more exit status checks Michael S. Tsirkin @ 2018-05-25 14:07 ` Michael S. Tsirkin 0 siblings, 0 replies; 11+ messages in thread From: Michael S. Tsirkin @ 2018-05-25 14:07 UTC (permalink / raw) To: qemu-devel Cc: Eric Blake, Thomas Huth, Philippe Mathieu-Daudé, Markus Armbruster On Thu, May 24, 2018 at 09:25:28PM +0300, Michael S. Tsirkin wrote: > Add more checks on how did QEMU exit. > > Legal ways to exit right now: > - exit(0) or return from main > - kill(SIGTERM) - sent by testing infrastructure > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > --- This turned out to be messy since - abort itself might trigger a signal - waitpid might in theory get interrupted I'll drop this patch for now, and merge just patches 1 and 2 in my tree. > tests/libqtest.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/tests/libqtest.c b/tests/libqtest.c > index f869854..36ca859 100644 > --- a/tests/libqtest.c > +++ b/tests/libqtest.c > @@ -109,9 +109,19 @@ static void kill_qemu(QTestState *s) > kill(s->qemu_pid, SIGTERM); > pid = waitpid(s->qemu_pid, &wstatus, 0); > > - if (pid == s->qemu_pid && WIFSIGNALED(wstatus)) { > + /* waitpid returns child PID on success */ > + assert(pid == s->qemu_pid); > + > + /* If exited on signal - check the reason: core dump is never OK */ > + if (WIFSIGNALED(wstatus)) { > assert(!WCOREDUMP(wstatus)); > } > + /* If exited normally - check exit status */ > + if (WIFEXITED(wstatus)) { > + assert(!WEXITSTATUS(wstatus)); > + } > + /* Valid ways to exit: right now only return from main or exit */ > + assert(WIFEXITED(wstatus)); > } > } > > -- > MST > ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2018-06-14 13:03 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-05-24 18:25 [Qemu-devel] [PATCH v4 0/3] libqtest: verify QEMU exit status Michael S. Tsirkin 2018-05-24 18:25 ` [Qemu-devel] [PATCH v4 1/3] osdep: add wait.h compat macros Michael S. Tsirkin 2018-06-14 12:56 ` Markus Armbruster 2018-06-14 13:02 ` Peter Maydell 2018-05-24 18:25 ` [Qemu-devel] [PATCH v4 2/3] libqtest: fail if child coredumps Michael S. Tsirkin 2018-05-25 6:10 ` Thomas Huth 2018-05-25 11:22 ` Thomas Huth 2018-05-25 12:15 ` Michael S. Tsirkin 2018-05-25 14:05 ` Thomas Huth 2018-05-24 18:25 ` [Qemu-devel] [PATCH v4 3/3] libqtest: add more exit status checks Michael S. Tsirkin 2018-05-25 14:07 ` Michael S. Tsirkin
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).