From: "U. Artie Eoff" <ullysses.a.e...@intel.com> Weston check client tests are fork-exec'd by the Weston process (via the weston-test.so module). If the Weston process dies, the client test might not quit in all cases. This happened in the subsurface-test described at https://bugs.freedesktop.org/show_bug.cgi?id=66132 where it went rogue, eating up 100% cpu.
This does not fix the Weston core-dump issue described in that bug report. However, it ensures that the fork-exec'd tests are killed when its parent process(es) die. Signed-off-by: U. Artie Eoff <ullysses.a.e...@intel.com> --- tests/weston-test-runner.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/weston-test-runner.c b/tests/weston-test-runner.c index 27ea9e4..15332a6 100644 --- a/tests/weston-test-runner.c +++ b/tests/weston-test-runner.c @@ -25,6 +25,7 @@ #include <stdlib.h> #include <sys/types.h> #include <sys/wait.h> +#include <sys/prctl.h> #include <string.h> #include <assert.h> #include <errno.h> @@ -59,6 +60,9 @@ int main(int argc, char *argv[]) int total, pass; siginfo_t info; + /* die if parent process dies */ + prctl(PR_SET_PDEATHSIG, SIGHUP); + if (argc == 2) { t = find_test(argv[1]); if (t == NULL) { @@ -77,8 +81,12 @@ int main(int argc, char *argv[]) pid = fork(); assert(pid >= 0); - if (pid == 0) + if (pid == 0) { + /* die if parent process dies */ + prctl(PR_SET_PDEATHSIG, SIGHUP); + run_test(t); /* never returns */ + } if (waitid(P_ALL, 0, &info, WEXITED)) { fprintf(stderr, "waitid failed: %m\n"); -- 1.7.11.7 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel