Skip to content

Commit

Permalink
perf test: Don't signal all processes on system when interrupting tests
Browse files Browse the repository at this point in the history
This signal handler loops over all tests on ctrl-C, but it's active
while the test list is being constructed. process.pid is 0, then -1,
then finally set to the child pid on fork. If the Ctrl-C is received
during this point a kill(-1, SIGINT) can be sent which affects all
processes.

Make sure the child has forked first before forwarding the signal. This
can be reproduced with ctrl-C immediately after launching perf test
which terminates the ssh connection.

Fixes: 553d5ef ("perf test: Add a signal handler to kill forked child processes")
Signed-off-by: James Clark <[email protected]>
Reviewed-by: Ian Rogers <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Namhyung Kim <[email protected]>
  • Loading branch information
james-c-linaro authored and namhyung committed Dec 2, 2024
1 parent 23c44f6 commit f54cd8f
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion tools/perf/tests/builtin-test.c
Original file line number Diff line number Diff line change
Expand Up @@ -508,7 +508,7 @@ static int __cmd_test(struct test_suite **suites, int argc, const char *argv[],
for (size_t x = 0; x < num_tests; x++) {
struct child_test *child_test = child_tests[x];

if (!child_test)
if (!child_test || child_test->process.pid <= 0)
continue;

pr_debug3("Killing %d pid %d\n",
Expand Down

0 comments on commit f54cd8f

Please sign in to comment.