]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests: coredump: Fix test failure for slow machines
authorNam Cao <namcao@linutronix.de>
Fri, 11 Apr 2025 15:09:42 +0000 (17:09 +0200)
committerChristian Brauner <brauner@kernel.org>
Fri, 2 May 2025 12:28:18 +0000 (14:28 +0200)
The test waits for coredump to finish by busy-waiting for the stack_values
file to be created. The maximum wait time is 10 seconds.

This doesn't work for slow machine (qemu-system-riscv64), because coredump
takes longer.

Fix it by waiting for the crashing child process to finish first.

Fixes: 15858da53542 ("selftests: coredump: Add stackdump test")
Signed-off-by: Nam Cao <namcao@linutronix.de>
Link: https://lore.kernel.org/ee657f3fc8e19657cf7aaa366552d6347728f371.1744383419.git.namcao@linutronix.de
Signed-off-by: Christian Brauner <brauner@kernel.org>
tools/testing/selftests/coredump/stackdump_test.c

index c23cf95c3f6df06279b223ddc3c02160fa445488..9da10fb5e597c36d336bec063d7b56c503b2b737 100644 (file)
@@ -96,7 +96,7 @@ TEST_F(coredump, stackdump)
        char *test_dir, *line;
        size_t line_length;
        char buf[PATH_MAX];
-       int ret, i;
+       int ret, i, status;
        FILE *file;
        pid_t pid;
 
@@ -129,6 +129,10 @@ TEST_F(coredump, stackdump)
        /*
         * Step 3: Wait for the stackdump script to write the stack pointers to the stackdump file
         */
+       waitpid(pid, &status, 0);
+       ASSERT_TRUE(WIFSIGNALED(status));
+       ASSERT_TRUE(WCOREDUMP(status));
+
        for (i = 0; i < 10; ++i) {
                file = fopen(STACKDUMP_FILE, "r");
                if (file)