tests/qtest: Use exit-with-parent=on in qtest invocations
Previously libqtest.c set PR_SET_PDEATHSIG (or the equivalent on FreeBSD) after forking the qemu subprocess. However we can get the same behaviour now by using the new -run-with exit-with-parent=on flag, on platforms that support it. Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Richard W.M. Jones <rjones@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
committed by
Daniel P. Berrangé
parent
886898baad
commit
b433ca56e1
@@ -33,6 +33,7 @@
|
||||
#include "qemu/accel.h"
|
||||
#include "qemu/ctype.h"
|
||||
#include "qemu/cutils.h"
|
||||
#include "qemu/exit-with-parent.h"
|
||||
#include "qemu/sockets.h"
|
||||
#include "qobject/qdict.h"
|
||||
#include "qobject/qjson.h"
|
||||
@@ -433,24 +434,6 @@ static QTestState *qtest_spawn_qemu(const char *qemu_bin, const char *args,
|
||||
#ifndef _WIN32
|
||||
pid = fork();
|
||||
if (pid == 0) {
|
||||
#ifdef __linux__
|
||||
/*
|
||||
* Although we register a ABRT handler to kill off QEMU
|
||||
* when g_assert() triggers, we want an extra safety
|
||||
* net. The QEMU process might be non-functional and
|
||||
* thus not have responded to SIGTERM. The test script
|
||||
* might also have crashed with SEGV, in which case the
|
||||
* cleanup handlers won't ever run.
|
||||
*
|
||||
* This PR_SET_PDEATHSIG setup will ensure any remaining
|
||||
* QEMU will get terminated with SIGKILL in these cases.
|
||||
*/
|
||||
prctl(PR_SET_PDEATHSIG, SIGKILL, 0, 0, 0);
|
||||
#endif /* __linux__ */
|
||||
#ifdef __FreeBSD__
|
||||
int sig = SIGKILL;
|
||||
procctl(P_PID, getpid(), PROC_PDEATHSIG_CTL, &sig);
|
||||
#endif /* __FreeBSD__ */
|
||||
execlp("/bin/sh", "sh", "-c", command->str, NULL);
|
||||
exit(1);
|
||||
}
|
||||
@@ -482,12 +465,15 @@ gchar *qtest_qemu_args(const char *extra_args)
|
||||
"-display none "
|
||||
"-audio none "
|
||||
"%s"
|
||||
"%s"
|
||||
" -accel qtest",
|
||||
|
||||
tracearg,
|
||||
socket_path,
|
||||
getenv("QTEST_LOG") ? DEV_STDERR : DEV_NULL,
|
||||
qmp_socket_path,
|
||||
can_exit_with_parent() ?
|
||||
"-run-with exit-with-parent=on " : "",
|
||||
extra_args ?: "");
|
||||
|
||||
return args;
|
||||
|
||||
Reference in New Issue
Block a user