OSDN Git Service

selftests/powerpc: Kill child processes on SIGINT
authorBreno Leitao <leitao@debian.org>
Tue, 7 Aug 2018 14:15:39 +0000 (11:15 -0300)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 8 Aug 2018 08:52:24 +0000 (18:52 +1000)
commit7c27a26e1ed5a7dd709aa19685d2c98f64e1cf0c
treeda8efad721692b6ceaa83a3ffbf1f7341ec88331
parent77b5f703dcc859915f0f20d92bc538e4a99ef149
selftests/powerpc: Kill child processes on SIGINT

There are some powerpc selftests, as tm/tm-unavailable, that run for a long
period (>120 seconds), and if it is interrupted, as pressing CRTL-C
(SIGINT), the foreground process (harness) dies but the child process and
threads continue to execute (with PPID = 1 now) in background.

In this case, you'd think the whole test exited, but there are remaining
threads and processes being executed in background. Sometimes these
zombies processes are doing annoying things, as consuming the whole CPU or
dumping things to STDOUT.

This patch fixes this problem by attaching an empty signal handler to
SIGINT in the harness process. This handler will interrupt (EINTR) the
parent process waitpid() call, letting the code to follow through the
normal flow, which will kill all the processes in the child process group.

This patch also fixes a typo.

Signed-off-by: Breno Leitao <leitao@debian.org>
Signed-off-by: Gustavo Romero <gromero@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
tools/testing/selftests/powerpc/harness.c