On Fri, Mar 27, 2020 at 12:28:05PM -0700, Kees Cook wrote: > On Fri, Mar 27, 2020 at 10:36:20AM +0100, Andrea Righi wrote: > > Avoid using /usr/bin/timeout unnecessarily if timeout is set to 0 > > (disabled) in the "settings" file for a specific test. > > That seems to be a reasonable optimization, sure. > > > NOTE: without this change (and adding timeout=0 in the corresponding > > settings file - tools/testing/selftests/seccomp/settings) the > > seccomp_bpf selftest is always failing with a timeout event during the > > syscall_restart step. > > This, however, is worrisome. I think there is something else wrong here. > I will investigate why the output of seccomp_bpf is weird when running > under the runner scripts. Hmmm. The output looks corrupted... > > -Kees Hi Kees, a quick update on this. After further investigation Cascardo (added in cc) found that the culprit of this issue was the usage of nanosleep() vs clock_nanosleep() in glibc. He already sent a fix for this: https://lkml.org/lkml/2020/4/8/968 Without this we are getting the following error: seccomp_bpf.c:2839:global.syscall_restart:Expected true (1) == WIFSTOPPED(status) (0) # global.syscall_restart: Test terminated by assertion I still think my timeout optimization patch can be useful, but for this particular problem we should definitely apply Cascardo's fix. Thanks, -Andrea > > > Signed-off-by: Andrea Righi <andrea.righi@xxxxxxxxxxxxx> > > --- > > tools/testing/selftests/kselftest/runner.sh | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/tools/testing/selftests/kselftest/runner.sh b/tools/testing/selftests/kselftest/runner.sh > > index e84d901f8567..2cd3c8def0f6 100644 > > --- a/tools/testing/selftests/kselftest/runner.sh > > +++ b/tools/testing/selftests/kselftest/runner.sh > > @@ -32,7 +32,7 @@ tap_prefix() > > tap_timeout() > > { > > # Make sure tests will time out if utility is available. > > - if [ -x /usr/bin/timeout ] ; then > > + if [ -x /usr/bin/timeout ] && [ $kselftest_timeout -gt 0 ] ; then > > /usr/bin/timeout "$kselftest_timeout" "$1" > > else > > "$1" > > -- > > 2.25.1 > > > > -- > Kees Cook