Hi Pádraig,

On my 6th run of "make check", the cat-buf test failed.
It's an inherently racy test.

If the dd process is starved until "2" is printed,
it will end up printing both lines to "out".

Here's the code:

    # Use a fifo rather than a pipe in the tests below
    # so that the producer (cat) will wait until the
    # consumer (dd) opens the fifo therefore increasing
    # the chance that dd will read the data from each
    # write separately.
    mkfifo fifo || framework_failure

    echo '1' > exp

    dd count=1 if=fifo > out &
    (echo '1'; sleep .2; echo '2') | cat -v > fifo
    wait #for dd to complete

    compare out exp || fail=1

    Exit $fail

We could allow either one line or both,
but then how can the test fail?

Alternatives: print a warning (a la skip_test_)
and pass the test, or just skip it when we lose the race.

No big deal.


Reply via email to