Messages in this thread | | | Subject | Re: [PATCH] selftests/harness: Flush stdout before forking | From | Shuah Khan <> | Date | Fri, 18 Sep 2020 08:32:13 -0600 |
| |
On 9/17/20 9:37 PM, Michael Ellerman wrote: > Shuah Khan <skhan@linuxfoundation.org> writes: >> On 9/16/20 10:53 PM, Max Filippov wrote: >>> On Wed, Sep 16, 2020 at 9:16 PM Michael Ellerman <mpe@ellerman.id.au> wrote: >>>> >>>> The test harness forks() a child to run each test. Both the parent and >>>> the child print to stdout using libc functions. That can lead to >>>> duplicated (or more) output if the libc buffers are not flushed before >>>> forking. >>>> >>>> It's generally not seen when running programs directly, because stdout >>>> will usually be line buffered when it's pointing to a terminal. >>>> >>>> This was noticed when running the seccomp_bpf test, eg: >>>> >>>> $ ./seccomp_bpf | tee test.log >>>> $ grep -c "TAP version 13" test.log >>>> 2 >>>> >>>> But we only expect the TAP header to appear once. >>>> >>>> It can be exacerbated using stdbuf to increase the buffer size: >>>> >>>> $ stdbuf -o 1MB ./seccomp_bpf > test.log >>>> $ grep -c "TAP version 13" test.log >>>> 13 >>>> >>>> The fix is simple, we just flush stdout & stderr before fork. Usually >>>> stderr is unbuffered, but that can be changed, so flush it as well >>>> just to be safe. >>>> >>>> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> >>>> --- >>>> tools/testing/selftests/kselftest_harness.h | 5 +++++ >>>> 1 file changed, 5 insertions(+) >>> >>> Tested-by: Max Filippov <jcmvbkbc@gmail.com> >> >> Thank you both. Applying to linux-kselftest fixes for 5.9-rc7 > > It can wait for v5.10 IMHO, but up to you. >
Good to know. I will send this for 5.10-rc1 then.
thanks, -- Shuah
| |