• Björn Töpel's avatar
    kselftest/runner.sh: Propagate SIGTERM to runner child · 9616cb34
    Björn Töpel authored
    Timeouts in kselftest are done using the "timeout" command with the
    "--foreground" option. Without the "foreground" option, it is not
    possible for a user to cancel the runner using SIGINT, because the
    signal is not propagated to timeout which is running in a different
    process group. The "forground" options places the timeout in the same
    process group as its parent, but only sends the SIGTERM (on timeout)
    signal to the forked process. Unfortunately, this does not play nice
    with all kselftests, e.g. "net:fcnal-test.sh", where the child
    processes will linger because timeout does not send SIGTERM to the
    group.
    
    Some users have noted these hangs [1].
    
    Fix this by nesting the timeout with an additional timeout without the
    foreground option.
    
    Link: https://lore.kernel.org/all/7650b2eb-0aee-a2b0-2e64-c9bc63210f67@alu.unizg.hr/ # [1]
    Fixes: 651e0d88 ("kselftest/runner: allow to properly deliver signals to tests")
    Signed-off-by: default avatarBjörn Töpel <bjorn@rivosinc.com>
    Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
    9616cb34
runner.sh 4.01 KB