Hi,
In the net-next tree commit v6.8-rc7-2348-g75c2946db360, vannila except for this minor mod to selftest suite:
---------------------------------------------------------------------------------------- marvin@defiant:~/linux/kernel/net-next$ git diff diff --git a/tools/testing/selftests/breakpoints/Makefile b/tools/testing/selftests/breakpoints/Makefile index 9ec2c78de8ca..76a0e3837136 100644 --- a/tools/testing/selftests/breakpoints/Makefile +++ b/tools/testing/selftests/breakpoints/Makefile @@ -3,7 +3,7 @@ uname_M := $(shell uname -m 2>/dev/null || echo not) ARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/x86/ -e s/x86_64/x86/)
-TEST_GEN_PROGS := step_after_suspend_test +# TEST_GEN_PROGS := step_after_suspend_test
ifeq ($(ARCH),x86) TEST_GEN_PROGS += breakpoint_test marvin@defiant:~/linux/kernel/net-next$ ----------------------------------------------------------------------------------------
there seems to be a bug.
The symptom is a hang in forever loop in ./pidfd_setns_test :
pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 pidfd_send_signal(18, SIGKILL, NULL, 0) = 0 . . .
This could happen here:
FIXTURE_TEARDOWN(current_nsset) { int i;
→ ASSERT_EQ(sys_pidfd_send_signal(self->child_pidfd1, SIGKILL, NULL, 0), 0); → ASSERT_EQ(sys_pidfd_send_signal(self->child_pidfd2, SIGKILL, NULL, 0), 0);
for (i = 0; i < PIDFD_NS_MAX; i++) { if (self->nsfds[i] >= 0) close(self->nsfds[i]); if (self->child_nsfds1[i] >= 0) close(self->child_nsfds1[i]); if (self->child_nsfds2[i] >= 0) close(self->child_nsfds2[i]); }
if (self->child_pidfd1 >= 0) EXPECT_EQ(0, close(self->child_pidfd1)); if (self->child_pidfd2 >= 0) EXPECT_EQ(0, close(self->child_pidfd2)); ASSERT_EQ(sys_waitid(P_PID, self->child_pid_exited, WEXITED), 0); ASSERT_EQ(sys_waitid(P_PID, self->child_pid1, WEXITED), 0); ASSERT_EQ(sys_waitid(P_PID, self->child_pid2, WEXITED), 0); }
The testsuite output is this:
root@defiant:/home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd# ./pidfd_setns_test TAP version 13 1..7 # Starting 7 tests from 2 test cases. # RUN global.setns_einval ... # OK global.setns_einval ok 1 global.setns_einval # RUN current_nsset.invalid_flags ... # pidfd_setns_test.c:161:invalid_flags:Expected self->child_pid_exited (0) > 0 (0) # OK current_nsset.invalid_flags ok 2 current_nsset.invalid_flags # RUN current_nsset.pidfd_exited_child ... # pidfd_setns_test.c:161:pidfd_exited_child:Expected self->child_pid_exited (0) > 0 (0) # OK current_nsset.pidfd_exited_child ok 3 current_nsset.pidfd_exited_child # RUN current_nsset.pidfd_incremental_setns ... # pidfd_setns_test.c:161:pidfd_incremental_setns:Expected self->child_pid_exited (0) > 0 (0) # pidfd_setns_test.c:408:pidfd_incremental_setns:Managed to correctly setns to user namespace of 1005687 via pidfd 18 # pidfd_setns_test.c:408:pidfd_incremental_setns:Managed to correctly setns to mnt namespace of 1005687 via pidfd 18 # pidfd_setns_test.c:408:pidfd_incremental_setns:Managed to correctly setns to pid namespace of 1005687 via pidfd 18 # pidfd_setns_test.c:408:pidfd_incremental_setns:Managed to correctly setns to uts namespace of 1005687 via pidfd 18 # pidfd_setns_test.c:408:pidfd_incremental_setns:Managed to correctly setns to ipc namespace of 1005687 via pidfd 18 # pidfd_setns_test.c:408:pidfd_incremental_setns:Managed to correctly setns to net namespace of 1005687 via pidfd 18 # pidfd_setns_test.c:408:pidfd_incremental_setns:Managed to correctly setns to cgroup namespace of 1005687 via pidfd 18 # pidfd_setns_test.c:408:pidfd_incremental_setns:Managed to correctly setns to pid_for_children namespace of 1005687 via pidfd 18 # pidfd_setns_test.c:391:pidfd_incremental_setns:Expected setns(self->child_pidfd1, info->flag) (-1) == 0 (0) # pidfd_setns_test.c:392:pidfd_incremental_setns:Too many users - Failed to setns to time namespace of 1005687 via pidfd 18 # pidfd_incremental_setns: Test terminated by timeout # FAIL current_nsset.pidfd_incremental_setns not ok 4 current_nsset.pidfd_incremental_setns # RUN current_nsset.nsfd_incremental_setns ... # pidfd_setns_test.c:161:nsfd_incremental_setns:Expected self->child_pid_exited (0) > 0 (0) # pidfd_setns_test.c:444:nsfd_incremental_setns:Managed to correctly setns to user namespace of 1005695 via nsfd 17 # pidfd_setns_test.c:444:nsfd_incremental_setns:Managed to correctly setns to mnt namespace of 1005695 via nsfd 22 # pidfd_setns_test.c:444:nsfd_incremental_setns:Managed to correctly setns to pid namespace of 1005695 via nsfd 25 # pidfd_setns_test.c:444:nsfd_incremental_setns:Managed to correctly setns to uts namespace of 1005695 via nsfd 28 # pidfd_setns_test.c:444:nsfd_incremental_setns:Managed to correctly setns to ipc namespace of 1005695 via nsfd 31 # pidfd_setns_test.c:444:nsfd_incremental_setns:Managed to correctly setns to net namespace of 1005695 via nsfd 34 # pidfd_setns_test.c:444:nsfd_incremental_setns:Managed to correctly setns to cgroup namespace of 1005695 via nsfd 37 # pidfd_setns_test.c:444:nsfd_incremental_setns:Managed to correctly setns to pid_for_children namespace of 1005695 via nsfd 40 # pidfd_setns_test.c:427:nsfd_incremental_setns:Expected setns(self->child_nsfds1[i], info->flag) (-1) == 0 (0) # pidfd_setns_test.c:428:nsfd_incremental_setns:Too many users - Failed to setns to time namespace of 1005695 via nsfd 43 # nsfd_incremental_setns: Test terminated by timeout # FAIL current_nsset.nsfd_incremental_setns not ok 5 current_nsset.nsfd_incremental_setns # RUN current_nsset.pidfd_one_shot_setns ... # pidfd_setns_test.c:161:pidfd_one_shot_setns:Expected self->child_pid_exited (0) > 0 (0) # pidfd_setns_test.c:462:pidfd_one_shot_setns:Adding user namespace of 1005710 to list of namespaces to attach to # pidfd_setns_test.c:462:pidfd_one_shot_setns:Adding mnt namespace of 1005710 to list of namespaces to attach to # pidfd_setns_test.c:462:pidfd_one_shot_setns:Adding pid namespace of 1005710 to list of namespaces to attach to # pidfd_setns_test.c:462:pidfd_one_shot_setns:Adding uts namespace of 1005710 to list of namespaces to attach to # pidfd_setns_test.c:462:pidfd_one_shot_setns:Adding ipc namespace of 1005710 to list of namespaces to attach to # pidfd_setns_test.c:462:pidfd_one_shot_setns:Adding net namespace of 1005710 to list of namespaces to attach to # pidfd_setns_test.c:462:pidfd_one_shot_setns:Adding cgroup namespace of 1005710 to list of namespaces to attach to # pidfd_setns_test.c:462:pidfd_one_shot_setns:Adding pid_for_children namespace of 1005710 to list of namespaces to attach to # pidfd_setns_test.c:462:pidfd_one_shot_setns:Adding time namespace of 1005710 to list of namespaces to attach to # pidfd_setns_test.c:466:pidfd_one_shot_setns:Expected setns(self->child_pidfd1, flags) (-1) == 0 (0) # pidfd_setns_test.c:467:pidfd_one_shot_setns:Too many users - Failed to setns to namespaces of 1005710 # pidfd_one_shot_setns: Test terminated by timeout # FAIL current_nsset.pidfd_one_shot_setns not ok 6 current_nsset.pidfd_one_shot_setns # RUN current_nsset.no_foul_play ... # pidfd_setns_test.c:161:no_foul_play:Expected self->child_pid_exited (0) > 0 (0) # pidfd_setns_test.c:506:no_foul_play:Adding user namespace of 1005745 to list of namespaces to attach to # pidfd_setns_test.c:506:no_foul_play:Adding mnt namespace of 1005745 to list of namespaces to attach to # pidfd_setns_test.c:506:no_foul_play:Adding pid namespace of 1005745 to list of namespaces to attach to # pidfd_setns_test.c:506:no_foul_play:Adding uts namespace of 1005745 to list of namespaces to attach to # pidfd_setns_test.c:506:no_foul_play:Adding ipc namespace of 1005745 to list of namespaces to attach to # pidfd_setns_test.c:506:no_foul_play:Adding net namespace of 1005745 to list of namespaces to attach to # pidfd_setns_test.c:506:no_foul_play:Adding cgroup namespace of 1005745 to list of namespaces to attach to # pidfd_setns_test.c:506:no_foul_play:Adding time namespace of 1005745 to list of namespaces to attach to # pidfd_setns_test.c:510:no_foul_play:Expected setns(self->child_pidfd1, flags) (-1) == 0 (0) # pidfd_setns_test.c:511:no_foul_play:Too many users - Failed to setns to namespaces of 1005745 vid pidfd 18 # no_foul_play: Test terminated by timeout # FAIL current_nsset.no_foul_play not ok 7 current_nsset.no_foul_play # FAILED: 3 / 7 tests passed. # Totals: pass:3 fail:4 xfail:0 xpass:0 skip:0 error:0 root@defiant:/home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd#
The main selftest thread is still hanging with total output of:
make[3]: Entering directory '/home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd' TAP version 13 1..7 # timeout set to 45 # selftests: pidfd: pidfd_test # TAP version 13 # 1..8 # # Parent: pid: 958028 # # Parent: Waiting for Child (958029) to complete. # # Child (pidfd): starting. pid 958029 tid 958029 # # Child Thread: starting. pid 958029 tid 958030 ; and sleeping # # Child Thread: doing exec of sleep # # Time waited for child: 3 # ok 1 pidfd_poll check for premature notification on child thread exec test: Passed # # Parent: pid: 958028 # # Parent: Waiting for Child (958031) to complete. # # Child (pidfd): starting. pid 958031 tid 958031 # # Child Thread: starting. pid 958031 tid 958032 ; and sleeping # # Child Thread: doing exec of sleep # # Parent: Child process waited for. # # Time waited for child: 3 # ok 2 pidfd_poll check for premature notification on child thread exec test: Passed # # Parent: pid: 958028 # # Parent: Waiting for Child (958033) to complete. # # Child: starting. pid 958033 tid 958033 # # Child Thread: starting. pid 958033 tid 958034 ; and sleeping # # Child Thread: starting. pid 958033 tid 958035 ; and sleeping # # # Child Thread: DONE. pid 958033 tid 958034 # Child Thread: DONE. pid 958033 tid 958035 # # Time since child exit: 3 # ok 3 pidfd_poll check for premature notification on non-emptygroup leader exit test: Passed # # Parent: pid: 958028 # # Parent: Waiting for Child (958036) to complete. # # Child: starting. pid 958036 tid 958036 # # Child Thread: starting. pid 958036 tid 958037 ; and sleeping # # Child Thread: starting. pid 958036 tid 958038 ; and sleeping # # Child Thread: DONE. pid 958036 tid 958037 # # Child Thread: DONE. pid 958036 tid 958038 # # Parent: Child process waited for. # # Time since child exit: 3 # ok 4 pidfd_poll check for premature notification on non-emptygroup leader exit test: Passed # ok 5 pidfd_send_signal check for support test: pidfd_send_signal() syscall is supported. Tests can be executed # ok 6 pidfd_send_signal send SIGUSR1 test: Sent signal # # waitpid WEXITSTATUS=0 # ok 7 pidfd_send_signal signal exited process test: Failed to send signal as expected # # pid to recycle is 1000 # ok 8 # SKIP pidfd_send_signal signal recycled pid test: Skipping test # # Totals: pass:7 fail:0 xfail:0 xpass:0 skip:1 error:0 ok 1 selftests: pidfd: pidfd_test # timeout set to 45 # selftests: pidfd: pidfd_fdinfo_test # TAP version 13 # 1..2 # # New child: 990827, fd: 5 # # New child: 990828, fd: 6 # # waitpid WEXITSTATUS=0 # # waitpid WEXITSTATUS=0 # ok 1 pidfd check for NSpid in fdinfo test: Passed # # New child: 990830, fd: 5 # # waitpid WEXITSTATUS=0 # ok 2 pidfd check fdinfo for dead process test: Passed # # Totals: pass:2 fail:0 xfail:0 xpass:0 skip:0 error:0 ok 2 selftests: pidfd: pidfd_fdinfo_test # timeout set to 45 # selftests: pidfd: pidfd_open_test # 1..3 # ok 1 do not allow invalid pid test: passed # ok 2 do not allow invalid flag test: passed # ok 3 open a new pidfd test: passed # # pidfd 5 refers to process with pid 990848 # # Totals: pass:3 fail:0 xfail:0 xpass:0 skip:0 error:0 ok 3 selftests: pidfd: pidfd_open_test # timeout set to 45 # selftests: pidfd: pidfd_poll_test # # running pidfd poll test for 10000 iterations # ok 1 pidfd poll test: pass # # Planned tests != run tests (0 != 1) # # Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0 ok 4 selftests: pidfd: pidfd_poll_test # timeout set to 45 # selftests: pidfd: pidfd_wait # TAP version 13 # 1..3 # # Starting 3 tests from 1 test cases. # # RUN global.wait_simple ... # # OK global.wait_simple # ok 1 global.wait_simple # # RUN global.wait_states ... # # OK global.wait_states # ok 2 global.wait_states # # RUN global.wait_nonblock ... # # OK global.wait_nonblock # ok 3 global.wait_nonblock # # PASSED: 3 / 3 tests passed. # # Totals: pass:3 fail:0 xfail:0 xpass:0 skip:0 error:0 ok 5 selftests: pidfd: pidfd_wait # timeout set to 45 # selftests: pidfd: pidfd_getfd_test # TAP version 13 # 1..4 # # Starting 4 tests from 2 test cases. # # RUN global.flags_set ... # # OK global.flags_set # ok 1 global.flags_set # # RUN child.disable_ptrace ... # # OK child.disable_ptrace # ok 2 child.disable_ptrace # # RUN child.fetch_fd ... # # OK child.fetch_fd # ok 3 child.fetch_fd # # RUN child.test_unknown_fd ... # # OK child.test_unknown_fd # ok 4 child.test_unknown_fd # # PASSED: 4 / 4 tests passed. # # Totals: pass:4 fail:0 xfail:0 xpass:0 skip:0 error:0 ok 6 selftests: pidfd: pidfd_getfd_test # timeout set to 45 # selftests: pidfd: pidfd_setns_test # TAP version 13 # 1..7 # # Starting 7 tests from 2 test cases. # # RUN global.setns_einval ... # # OK global.setns_einval # ok 1 global.setns_einval # # RUN current_nsset.invalid_flags ... # # pidfd_setns_test.c:161:invalid_flags:Expected self->child_pid_exited (0) > 0 (0) # # OK current_nsset.invalid_flags # ok 2 current_nsset.invalid_flags # # RUN current_nsset.pidfd_exited_child ... # # pidfd_setns_test.c:161:pidfd_exited_child:Expected self->child_pid_exited (0) > 0 (0) # # OK current_nsset.pidfd_exited_child # ok 3 current_nsset.pidfd_exited_child # # RUN current_nsset.pidfd_incremental_setns ... # # pidfd_setns_test.c:161:pidfd_incremental_setns:Expected self->child_pid_exited (0) > 0 (0) # # pidfd_setns_test.c:408:pidfd_incremental_setns:Managed to correctly setns to user namespace of 1000951 via pidfd 20 # # pidfd_setns_test.c:408:pidfd_incremental_setns:Managed to correctly setns to mnt namespace of 1000951 via pidfd 20 # # pidfd_setns_test.c:408:pidfd_incremental_setns:Managed to correctly setns to pid namespace of 1000951 via pidfd 20 # # pidfd_setns_test.c:408:pidfd_incremental_setns:Managed to correctly setns to uts namespace of 1000951 via pidfd 20 # # pidfd_setns_test.c:408:pidfd_incremental_setns:Managed to correctly setns to ipc namespace of 1000951 via pidfd 20 # # pidfd_setns_test.c:408:pidfd_incremental_setns:Managed to correctly setns to net namespace of 1000951 via pidfd 20 # # pidfd_setns_test.c:408:pidfd_incremental_setns:Managed to correctly setns to cgroup namespace of 1000951 via pidfd 20 # # pidfd_setns_test.c:408:pidfd_incremental_setns:Managed to correctly setns to pid_for_children namespace of 1000951 via pidfd 20 # # pidfd_setns_test.c:391:pidfd_incremental_setns:Expected setns(self->child_pidfd1, info->flag) (-1) == 0 (0) # # pidfd_setns_test.c:392:pidfd_incremental_setns:Too many users - Failed to setns to time namespace of 1000951 via pidfd 20 # # pidfd_incremental_setns: Test terminated by timeout # # FAIL current_nsset.pidfd_incremental_setns # not ok 4 current_nsset.pidfd_incremental_setns # # RUN current_nsset.nsfd_incremental_setns ... # # pidfd_setns_test.c:161:nsfd_incremental_setns:Expected self->child_pid_exited (0) > 0 (0) # # pidfd_setns_test.c:444:nsfd_incremental_setns:Managed to correctly setns to user namespace of 1000958 via nsfd 19 # # pidfd_setns_test.c:444:nsfd_incremental_setns:Managed to correctly setns to mnt namespace of 1000958 via nsfd 24 # # pidfd_setns_test.c:444:nsfd_incremental_setns:Managed to correctly setns to pid namespace of 1000958 via nsfd 27 # # pidfd_setns_test.c:444:nsfd_incremental_setns:Managed to correctly setns to uts namespace of 1000958 via nsfd 30 # # pidfd_setns_test.c:444:nsfd_incremental_setns:Managed to correctly setns to ipc namespace of 1000958 via nsfd 33 # # pidfd_setns_test.c:444:nsfd_incremental_setns:Managed to correctly setns to net namespace of 1000958 via nsfd 36 # # pidfd_setns_test.c:444:nsfd_incremental_setns:Managed to correctly setns to cgroup namespace of 1000958 via nsfd 39 # # pidfd_setns_test.c:444:nsfd_incremental_setns:Managed to correctly setns to pid_for_children namespace of 1000958 via nsfd 42 # # pidfd_setns_test.c:427:nsfd_incremental_setns:Expected setns(self->child_nsfds1[i], info->flag) (-1) == 0 (0) # # pidfd_setns_test.c:428:nsfd_incremental_setns:Too many users - Failed to setns to time namespace of 1000958 via nsfd 45 [HANG] # ps -efwww root 958005 66430 0 01:04 pts/2 00:00:00 make OUTPUT=/home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd -C pidfd run_tests SRC_PATH=/home/marvin/linux/kernel/net-next/tools/testing/selftests OBJ_PATH=/home/marvin/linux/kernel/net-next/tools/testing/selftests O=/home/marvin/linux/kernel/net-next root 958006 958005 0 01:04 pts/2 00:00:00 /bin/sh -c BASE_DIR="/home/marvin/linux/kernel/net-next/tools/testing/selftests"; . /home/marvin/linux/kernel/net-next/tools/testing/selftests/kselftest/runner.sh; if [ "X" != "X" ]; then per_test_logging=1; fi; run_many /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_fdinfo_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_open_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_poll_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_wait /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_getfd_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_setns_test root 1000927 958006 0 01:05 pts/2 00:00:00 /bin/sh -c BASE_DIR="/home/marvin/linux/kernel/net-next/tools/testing/selftests"; . /home/marvin/linux/kernel/net-next/tools/testing/selftests/kselftest/runner.sh; if [ "X" != "X" ]; then per_test_logging=1; fi; run_many /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_fdinfo_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_open_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_poll_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_wait /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_getfd_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_setns_test root 1000928 1000927 0 01:05 pts/2 00:00:00 /bin/sh -c BASE_DIR="/home/marvin/linux/kernel/net-next/tools/testing/selftests"; . /home/marvin/linux/kernel/net-next/tools/testing/selftests/kselftest/runner.sh; if [ "X" != "X" ]; then per_test_logging=1; fi; run_many /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_fdinfo_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_open_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_poll_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_wait /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_getfd_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_setns_test root 1000929 1000928 0 01:05 pts/2 00:00:00 /bin/sh -c BASE_DIR="/home/marvin/linux/kernel/net-next/tools/testing/selftests"; . /home/marvin/linux/kernel/net-next/tools/testing/selftests/kselftest/runner.sh; if [ "X" != "X" ]; then per_test_logging=1; fi; run_many /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_fdinfo_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_open_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_poll_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_wait /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_getfd_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_setns_test root 1000932 1000929 0 01:05 pts/2 00:00:00 /bin/sh -c BASE_DIR="/home/marvin/linux/kernel/net-next/tools/testing/selftests"; . /home/marvin/linux/kernel/net-next/tools/testing/selftests/kselftest/runner.sh; if [ "X" != "X" ]; then per_test_logging=1; fi; run_many /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_fdinfo_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_open_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_poll_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_wait /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_getfd_test /home/marvin/linux/kernel/net-next/tools/testing/selftests/pidfd/pidfd_setns_test root 1000934 1000932 0 01:05 pts/2 00:00:00 perl /home/marvin/linux/kernel/net-next/tools/testing/selftests/kselftest/prefix.pl root 1000955 2931 0 01:05 pts/2 00:00:00 ./pidfd_setns_test root 1000956 1000955 99 01:05 pts/2 13:20:17 ./pidfd_setns_test root 1000957 1000956 0 01:05 pts/2 00:00:00 [pidfd_setns_tes] <defunct> root 1000958 1000956 0 01:05 pts/2 00:00:00 [pidfd_setns_tes] <defunct> root 1000959 1000956 0 01:05 pts/2 00:00:00 ./pidfd_setns_test
in a 99%CPU forever loop:
pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0 pidfd_send_signal(20, SIGKILL, NULL, 0) = 0
That's about all there is. Nothing interesting in /var/log/syslog or dmesg.
Hope this helps.
Best regards, Mirsad Todorovac
Hi,
There seems to be some additional insight.
Trying to kill the processes so the testsuite might hopefully continue, this was the result: unkillable (-SIGKILL) processes, which can also not be traced with strace, and neither the selftest suite continued.
root 1000955 2931 0 01:05 pts/2 00:00:00 ./pidfd_setns_test root 1000956 1000955 99 01:05 pts/2 14:09:03 [pidfd_setns_tes] <defunct> root 1037946 1005609 0 15:19 pts/3 00:00:00 grep --color=auto pidfd_setns_tes root@defiant:/home/marvin/linux/kernel/net-next# strace -p 1000955 strace: Could not attach to process. If your uid matches the uid of the target process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf: Operation not permitted strace: attach: ptrace(PTRACE_SEIZE, 1000955): Operation not permitted root@defiant:/home/marvin/linux/kernel/net-next# strace -p 1000956 strace: Could not attach to process. If your uid matches the uid of the target process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf: Operation not permitted strace: attach: ptrace(PTRACE_SEIZE, 1000956): Operation not permitted root@defiant:/home/marvin/linux/kernel/net-next#
Hope this helps.
It would be very interesting to see now what exactly eats 99% of a CPU core, but I am not enough technologically savvy for this task ATM.
Best regards, Mirsad Todorovac
P.S.
Please consider this additional dmesg diagnostics possibly coinciding with the kill -KILL <stale pids>:
[Sat Mar 9 15:18:05 2024] proc-empty-vm[1007004] vsyscall read attempt denied -- look up the vsyscall kernel parameter if you need a workaround ip:5a0754238702 cs:33 sp:7ffed57b6ec0 ax:0 si:0 di:0 [Sat Mar 9 15:18:06 2024] proc-pid-vm[1007025] vsyscall read attempt denied -- look up the vsyscall kernel parameter if you need a workaround ip:5cf038710e22 cs:33 sp:7ffc3cc4ee60 ax:0 si:0 di:0 [Sat Mar 9 15:18:08 2024] ICMPv6: process `read' is using deprecated sysctl (syscall) net.ipv6.neigh.default.base_reachable_time - use net.ipv6.neigh.default.base_reachable_time_ms instead [Sat Mar 9 15:18:09 2024] sysrq: HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(v) show-blocked-tasks(w) dump-ftrace-buffer(z) [Sat Mar 9 15:18:55 2024] signal: openat2_test[1025119] overflowed sigaltstack [Sat Mar 9 15:18:55 2024] signal: resolve_test[1025139] overflowed sigaltstack
Best regards, Mirsad Todorovac
linux-kselftest-mirror@lists.linaro.org