Hi Geert! Op zo 15 dec. 2019 om 17:48 schreef Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>:
Unfortunately some tests failed: atari:~# chroot /tmp /tmp/clone3 # clone3() syscall supported TAP version 13 1..17 # [825] Trying clone3() with flags 0 (size 0) # I am the parent (825). My child's pid is 826 # I am the child, my PID is 826 # [825] clone3() with flags says: 0 expected 0 ok 1 [825] Result (0) matches expectation (0) # [825] Trying clone3() with flags 0x20000000 (size 0) # Invalid argument - Failed to create new process # [825] clone3() with flags says: -22 expected 0 not ok 2 [825] Result (-22) is different than expected (0) # [825] Trying clone3() with flags 0 (size 64) # I am the parent (825). My child's pid is 827 # I am the child, my PID is 827 # [825] clone3() with flags says: 0 expected 0 ok 3 [825] Result (0) matches expectation (0) # [825] Trying clone3() with flags 0 (size 56) # Invalid argument - Failed to create new process # [825] clone3() with flags says: -22 expected -22 ok 4 [825] Result (-22) matches expectation (-22) # [825] Trying clone3() with flags 0 (size 88) # I am the parent (825). My child's pid is 828 # I am the child, my PID is 828 # [825] clone3() with flags says: 0 expected 0 ok 5 [825] Result (0) matches expectation (0) # [825] Trying clone3() with flags 0 (size 0) # Invalid argument - Failed to create new process # [825] clone3() with flags says: -22 expected -22 ok 6 [825] Result (-22) matches expectation (-22) # [825] Trying clone3() with flags 0 (size 0) # Invalid argument - Failed to create new process # [825] clone3() with flags says: -22 expected -22 ok 7 [825] Result (-22) matches expectation (-22) # [825] Trying clone3() with flags 0 (size 0) # Invalid argument - Failed to create new process # [825] clone3() with flags says: -22 expected -22 ok 8 [825] Result (-22) matches expectation (-22) # [825] Trying clone3() with flags 0 (size 0) # Invalid argument - Failed to create new process # [825] clone3() with flags says: -22 expected -22 ok 9 [825] Result (-22) matches expectation (-22) # [825] Trying clone3() with flags 0 (size 88) # I am the parent (825). My child's pid is 829 # I am the child, my PID is 829 # [825] clone3() with flags says: 0 expected 0 ok 10 [825] Result (0) matches expectation (0) # [825] Trying clone3() with flags 0 (size 96) # Argument list too long - Failed to create new process # [825] clone3() with flags says: -7 expected -7 ok 11 [825] Result (-7) matches expectation (-7) # [825] Trying clone3() with flags 0 (size 160) # Argument list too long - Failed to create new process # [825] clone3() with flags says: -7 expected -7 ok 12 [825] Result (-7) matches expectation (-7) # [825] Trying clone3() with flags 0 (size 4104) # Argument list too long - Failed to create new process # [825] clone3() with flags says: -7 expected -7 ok 13 [825] Result (-7) matches expectation (-7) # [825] Trying clone3() with flags 0x20000000 (size 64) # Invalid argument - Failed to create new process # [825] clone3() with flags says: -22 expected 0 not ok 14 [825] Result (-22) is different than expected (0) # [825] Trying clone3() with flags 0x20000000 (size 56) # Invalid argument - Failed to create new process # [825] clone3() with flags says: -22 expected -22 ok 15 [825] Result (-22) matches expectation (-22) # [825] Trying clone3() with flags 0x20000000 (size 88) # Invalid argument - Failed to create new process # [825] clone3() with flags says: -22 expected 0 not ok 16 [825] Result (-22) is different than expected (0) # [825] Trying clone3() with flags 0x20000000 (size 4104) # Argument list too long - Failed to create new process # [825] clone3() with flags says: -7 expected -7 ok 17 [825] Result (-7) matches expectation (-7) Bail out! # Pass 14 Fail 3 Xfail 0 Xpass 0 Skip 0 Error 0
I created a new environment as described by Adrian (thanks!), built a 5.5.0-rc2 kernel based on Debian config-5.3.0-3-m68k, and ran these tests too: kars@q800:/$ sudo ./clone3 # clone3() syscall supported TAP version 13 1..17 # [406] Trying clone3() with flags 0 (size 0) # I am the parent (406). My child's pid is 407 # [406] clone3() with flags says: 0 expected 0 ok 1 [406] Result (0) matches expectation (0) # [406] Trying clone3() with flags 0x20000000 (size 0) # I am the parent (406). My child's pid is 408 # [406] clone3() with flags says: 0 expected 0 ok 2 [406] Result (0) matches expectation (0) # [406] Trying clone3() with flags 0 (size 64) # I am the parent (406). My child's pid is 409 # [406] clone3() with flags says: 0 expected 0 ok 3 [406] Result (0) matches expectation (0) # [406] Trying clone3() with flags 0 (size 56) # Invalid argument - Failed to create new process # [406] clone3() with flags says: -22 expected -22 ok 4 [406] Result (-22) matches expectation (-22) # [406] Trying clone3() with flags 0 (size 88) # I am the parent (406). My child's pid is 410 # [406] clone3() with flags says: 0 expected 0 ok 5 [406] Result (0) matches expectation (0) # [406] Trying clone3() with flags 0 (size 0) # Invalid argument - Failed to create new process # [406] clone3() with flags says: -22 expected -22 ok 6 [406] Result (-22) matches expectation (-22) # [406] Trying clone3() with flags 0 (size 0) # Invalid argument - Failed to create new process # [406] clone3() with flags says: -22 expected -22 ok 7 [406] Result (-22) matches expectation (-22) # [406] Trying clone3() with flags 0 (size 0) # Invalid argument - Failed to create new process # [406] clone3() with flags says: -22 expected -22 ok 8 [406] Result (-22) matches expectation (-22) # [406] Trying clone3() with flags 0 (size 0) # Invalid argument - Failed to create new process # [406] clone3() with flags says: -22 expected -22 ok 9 [406] Result (-22) matches expectation (-22) # [406] Trying clone3() with flags 0 (size 88) # I am the parent (406). My child's pid is 411 # [406] clone3() with flags says: 0 expected 0 ok 10 [406] Result (0) matches expectation (0) # [406] Trying clone3() with flags 0 (size 96) # Argument list too long - Failed to create new process # [406] clone3() with flags says: -7 expected -7 ok 11 [406] Result (-7) matches expectation (-7) # [406] Trying clone3() with flags 0 (size 160) # Argument list too long - Failed to create new process # [406] clone3() with flags says: -7 expected -7 ok 12 [406] Result (-7) matches expectation (-7) # [406] Trying clone3() with flags 0 (size 4104) # Argument list too long - Failed to create new process # [406] clone3() with flags says: -7 expected -7 ok 13 [406] Result (-7) matches expectation (-7) # [406] Trying clone3() with flags 0x20000000 (size 64) # I am the parent (406). My child's pid is 412 # [406] clone3() with flags says: 0 expected 0 ok 14 [406] Result (0) matches expectation (0) # [406] Trying clone3() with flags 0x20000000 (size 56) # Invalid argument - Failed to create new process # [406] clone3() with flags says: -22 expected -22 ok 15 [406] Result (-22) matches expectation (-22) # [406] Trying clone3() with flags 0x20000000 (size 88) # I am the parent (406). My child's pid is 413 # [406] clone3() with flags says: 0 expected 0 ok 16 [406] Result (0) matches expectation (0) # [406] Trying clone3() with flags 0x20000000 (size 4104) # Argument list too long - Failed to create new process # [406] clone3() with flags says: -7 expected -7 ok 17 [406] Result (-7) matches expectation (-7) # Pass 17 Fail 0 Xfail 0 Xpass 0 Skip 0 Error 0 So that works OK.
atari:~# chroot /tmp /tmp/clone3_set_tid TAP version 13 # clone3() syscall supported 1..29 # /proc/sys/kernel/pid_max 32768 # [830] Trying clone3() with CLONE_SET_TID to 0 and 0x0 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID 0 says :-22 - expected -22 ok 1 [830] Result (-22) matches expectation (-22) # [830] Trying clone3() with CLONE_SET_TID to 0 and 0x0 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID 0 says :-22 - expected -22 ok 2 [830] Result (-22) matches expectation (-22) # [830] Trying clone3() with CLONE_SET_TID to 0 and 0x0 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID 0 says :-22 - expected -22 ok 3 [830] Result (-22) matches expectation (-22) # [830] Trying clone3() with CLONE_SET_TID to 0 and 0x0 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID 0 says :-22 - expected -22 ok 4 [830] Result (-22) matches expectation (-22) # [830] Trying clone3() with CLONE_SET_TID to 0 and 0x0 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID 0 says :-22 - expected -22 ok 5 [830] Result (-22) matches expectation (-22) # [830] Trying clone3() with CLONE_SET_TID to -1 and 0x0 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID -1 says :-22 - expected -22 ok 6 [830] Result (-22) matches expectation (-22) # [830] Trying clone3() with CLONE_SET_TID to -1 and 0x0 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID -1 says :-22 - expected -22 ok 7 [830] Result (-22) matches expectation (-22) # [830] Trying clone3() with CLONE_SET_TID to -1 and 0x0 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID -1 says :-22 - expected -22 ok 8 [830] Result (-22) matches expectation (-22) # [830] Trying clone3() with CLONE_SET_TID to -1 and 0x0 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID -1 says :-22 - expected -22 ok 9 [830] Result (-22) matches expectation (-22) # [830] Trying clone3() with CLONE_SET_TID to -1 and 0x0 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID -1 says :-22 - expected -22 ok 10 [830] Result (-22) matches expectation (-22) # [830] Trying clone3() with CLONE_SET_TID to 0 and 0x0 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID 0 says :-22 - expected -22 ok 11 [830] Result (-22) matches expectation (-22) # [830] Trying clone3() with CLONE_SET_TID to -1 and 0x0 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID -1 says :-22 - expected -22 ok 12 [830] Result (-22) matches expectation (-22) # [830] Trying clone3() with CLONE_SET_TID to -1 and 0x0 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID -1 says :-22 - expected -22 ok 13 [830] Result (-22) matches expectation (-22) # [830] Trying clone3() with CLONE_SET_TID to -1 and 0x20000000 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID -1 says :-22 - expected -22 ok 14 [830] Result (-22) matches expectation (-22) # [830] Trying clone3() with CLONE_SET_TID to 1 and 0x0 # File exists - Failed to create new process # [830] clone3() with CLONE_SET_TID 1 says :-17 - expected -17 ok 15 [830] Result (-17) matches expectation (-17) # [830] Trying clone3() with CLONE_SET_TID to 1 and 0x20000000 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID 1 says :-22 - expected 0 not ok 16 [830] Result (-22) is different than expected (0) # [830] Trying clone3() with CLONE_SET_TID to 32768 and 0x0 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID 32768 says :-22 - expected -22 ok 17 [830] Result (-22) matches expectation (-22) # [830] Trying clone3() with CLONE_SET_TID to 32768 and 0x20000000 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID 32768 says :-22 - expected -22 ok 18 [830] Result (-22) matches expectation (-22) # Child has PID 831 # [830] Trying clone3() with CLONE_SET_TID to 831 and 0x0 # I am the parent (830). My child's pid is 831 # I am the child, my PID is 831 (expected 831) # [830] clone3() with CLONE_SET_TID 831 says :0 - expected 0 ok 19 [830] Result (0) matches expectation (0) # [830] Trying clone3() with CLONE_SET_TID to 831 and 0x20000000 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID 831 says :-22 - expected -22 ok 20 [830] Result (-22) matches expectation (-22) # [830] Trying clone3() with CLONE_SET_TID to 1 and 0x20000000 # Invalid argument - Failed to create new process # [830] clone3() with CLONE_SET_TID 1 says :-22 - expected 0 not ok 21 [830] Result (-22) is different than expected (0) # unshare PID namespace Bail out! unshare(CLONE_NEWPID) failed: Invalid argument # Planned tests != run tests (29 != 21) # Pass 19 Fail 2 Xfail 0 Xpass 0 Skip 0 Error 0
kars@q800:/$ sudo ./clone3_set_tid TAP version 13 # clone3() syscall supported 1..29 # /proc/sys/kernel/pid_max 32768 # [435] Trying clone3() with CLONE_SET_TID to 0 and 0x0 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID 0 says :-22 - expected -22 ok 1 [435] Result (-22) matches expectation (-22) # [435] Trying clone3() with CLONE_SET_TID to 0 and 0x0 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID 0 says :-22 - expected -22 ok 2 [435] Result (-22) matches expectation (-22) # [435] Trying clone3() with CLONE_SET_TID to 0 and 0x0 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID 0 says :-22 - expected -22 ok 3 [435] Result (-22) matches expectation (-22) # [435] Trying clone3() with CLONE_SET_TID to 0 and 0x0 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID 0 says :-22 - expected -22 ok 4 [435] Result (-22) matches expectation (-22) # [435] Trying clone3() with CLONE_SET_TID to 0 and 0x0 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID 0 says :-22 - expected -22 ok 5 [435] Result (-22) matches expectation (-22) # [435] Trying clone3() with CLONE_SET_TID to -1 and 0x0 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID -1 says :-22 - expected -22 ok 6 [435] Result (-22) matches expectation (-22) # [435] Trying clone3() with CLONE_SET_TID to -1 and 0x0 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID -1 says :-22 - expected -22 ok 7 [435] Result (-22) matches expectation (-22) # [435] Trying clone3() with CLONE_SET_TID to -1 and 0x0 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID -1 says :-22 - expected -22 ok 8 [435] Result (-22) matches expectation (-22) # [435] Trying clone3() with CLONE_SET_TID to -1 and 0x0 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID -1 says :-22 - expected -22 ok 9 [435] Result (-22) matches expectation (-22) # [435] Trying clone3() with CLONE_SET_TID to -1 and 0x0 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID -1 says :-22 - expected -22 ok 10 [435] Result (-22) matches expectation (-22) # [435] Trying clone3() with CLONE_SET_TID to 0 and 0x0 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID 0 says :-22 - expected -22 ok 11 [435] Result (-22) matches expectation (-22) # [435] Trying clone3() with CLONE_SET_TID to -1 and 0x0 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID -1 says :-22 - expected -22 ok 12 [435] Result (-22) matches expectation (-22) # [435] Trying clone3() with CLONE_SET_TID to -1 and 0x0 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID -1 says :-22 - expected -22 ok 13 [435] Result (-22) matches expectation (-22) # [435] Trying clone3() with CLONE_SET_TID to -1 and 0x20000000 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID -1 says :-22 - expected -22 ok 14 [435] Result (-22) matches expectation (-22) # [435] Trying clone3() with CLONE_SET_TID to 1 and 0x0 # File exists - Failed to create new process # [435] clone3() with CLONE_SET_TID 1 says :-17 - expected -17 ok 15 [435] Result (-17) matches expectation (-17) # [435] Trying clone3() with CLONE_SET_TID to 1 and 0x20000000 # I am the child, my PID is 1 (expected 1) # I am the parent (435). My child's pid is 436 # [435] clone3() with CLONE_SET_TID 1 says :0 - expected 0 ok 16 [435] Result (0) matches expectation (0) # [435] Trying clone3() with CLONE_SET_TID to 32768 and 0x0 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID 32768 says :-22 - expected -22 ok 17 [435] Result (-22) matches expectation (-22) # [435] Trying clone3() with CLONE_SET_TID to 32768 and 0x20000000 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID 32768 says :-22 - expected -22 ok 18 [435] Result (-22) matches expectation (-22) # Child has PID 437 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID 32768 says :-22 - expected -22 ok 18 [435] Result (-22) matches expectation (-22) # [435] Trying clone3() with CLONE_SET_TID to 437 and 0x0 # I am the child, my PID is 437 (expected 437) # I am the parent (435). My child's pid is 437 # [435] clone3() with CLONE_SET_TID 437 says :0 - expected 0 ok 19 [435] Result (0) matches expectation (0) # [435] Trying clone3() with CLONE_SET_TID to 437 and 0x20000000 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID 437 says :-22 - expected -22 ok 20 [435] Result (-22) matches expectation (-22) # [435] Trying clone3() with CLONE_SET_TID to 1 and 0x20000000 # I am the child, my PID is 1 (expected 1) # I am the parent (435). My child's pid is 437 # [435] clone3() with CLONE_SET_TID 1 says :0 - expected 0 ok 21 [435] Result (0) matches expectation (0) # unshare PID namespace # [435] Trying clone3() with CLONE_SET_TID to 437 and 0x0 # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID 437 says :-22 - expected -22 ok 22 [435] Result (-22) matches expectation (-22) # [1] Trying clone3() with CLONE_SET_TID to 43 and 0x0 # Invalid argument - Failed to create new process # [1] clone3() with CLONE_SET_TID 43 says :-22 - expected -22 ok 23 [1] Result (-22) matches expectation (-22) # [1] Trying clone3() with CLONE_SET_TID to 43 and 0x0 # I am the child, my PID is 43 (expected 43) # I am the parent (1). My child's pid is 43 # [1] clone3() with CLONE_SET_TID 43 says :0 - expected 0 ok 24 [1] Result (0) matches expectation (0) # Child in PID namespace has PID 1 # [1] Trying clone3() with CLONE_SET_TID to 2 and 0x0 # I am the child, my PID is 2 (expected 2) # I am the parent (1). My child's pid is 2 # [1] clone3() with CLONE_SET_TID 2 says :0 - expected 0 ok 25 [1] Result (0) matches expectation (0) # [1] Trying clone3() with CLONE_SET_TID to 1 and 0x20000000 # Invalid argument - Failed to create new process # [1] clone3() with CLONE_SET_TID 1 says :-22 - expected -22 ok 26 [1] Result (-22) matches expectation (-22) # [1] Trying clone3() with CLONE_SET_TID to 1 and 0x20000000 # Invalid argument - Failed to create new process # [1] clone3() with CLONE_SET_TID 1 says :-22 - expected -22 ok 27 [1] Result (-22) matches expectation (-22) # [1] Trying clone3() with CLONE_SET_TID to 1 and 0x20000000 # I am the child, my PID is 1 (expected 1) # [1] Child is ready and waiting # I am the parent (1). My child's pid is 42 # [1] clone3() with CLONE_SET_TID 1 says :0 - expected 0 ok 28 [1] Result (0) matches expectation (0) # Invalid argument - Failed to create new process # [435] clone3() with CLONE_SET_TID 437 says :-22 - expected -22 ok 22 [435] Result (-22) matches expectation (-22) # [435] Child is ready and waiting ok 29 PIDs in all namespaces as expected (437,42,1) # Pass 29 Fail 0 Xfail 0 Xpass 0 Skip 0 Error 0 So those all pass too. Maybe your kernel configuration is not suited for these tests (in which case I would expect them to fail at compile time by the way, the test should assert that).
atari:~# chroot /tmp /tmp/clone3_clear_sighand TAP version 13 # clone3() syscall supported 1..1 Bail out! Failed to clear signal handler for child process # Planned tests != run tests (1 != 0) # Pass 0 Fail 0 Xfail 0 Xpass 0 Skip 0 Error 0 atari:~#
That one fails the same way for me, but I don't think this is actually a problem with the wiring up of the system call. I tried debugging it, the child process exits at line 99 (the check whether the SIGUSR1 signal handler is indeed cleared in the child): 94 ret = sigaction(SIGUSR1, NULL, &act); 95 if (ret < 0) 96 exit(EXIT_FAILURE); 97 98 if (act.sa_handler != SIG_DFL) 99 exit(EXIT_FAILURE); <--- failure point Oh, I did have problems with gdb and the 'next' and 'nexti' commands, they did not quite stop where I expected them too, they stopped somewhere in libc assembly instead. But that's probably unrelated. Kind regards, Kars.