[PATCH v1] pipe13: Scale child reap window with LTP_TIMEOUT_MUL
Stephen Bertram via ltp <[email protected]>
| Newsgroups | gmane.linux.ltp |
|---|---|
| Message-ID | <[email protected]> |
The post-close wait used a fixed 1000000 us cap on exponential backoff (~524 ms total). Scale that cap with tst_multiply_timeout() so debug kernels and LTP_TIMEOUT_MUL apply, fixing failures under parallel Kirk workers without changing default behavior on non-debug systems. Before (only with case 100): pipe13.c:50: TINFO: Creating 100 child processes pipe13.c:81: TINFO: pid 435007 still sleeps ... pipe13.c:81: TINFO: pid 435300 still sleeps pipe13.c:89: TFAIL: Closed pipe didn't wake up everyone The list varied but sometimes up to 20 would remained asleep. After using tst_multiply_timeout(), test passes. The failure before would happen, when using 4 paralell workers on a debug kernel, about 1 to 2 times when iterated 5 times. With the addition of the function, under the same conditions, it has not failed in 100 iterations. Signed-off-by: Stephen Bertram <[email protected]> --- testcases/kernel/syscalls/pipe/pipe13.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/testcases/kernel/syscalls/pipe/pipe13.c b/testcases/kernel/syscalls/pipe/pipe13.c index 5d76e1f00..cf1ccbcbc 100644 --- a/testcases/kernel/syscalls/pipe/pipe13.c +++ b/testcases/kernel/syscalls/pipe/pipe13.c @@ -44,6 +44,7 @@ static void verify_pipe(unsigned int n) int ret; unsigned int i, cnt = 0, sleep_us = 1, fail = 0; unsigned int child_num = tcases[n]; + unsigned int sleep_us_cap = tst_multiply_timeout(1000) * 1000U; int pid[child_num]; SAFE_PIPE(fds); @@ -60,7 +61,7 @@ static void verify_pipe(unsigned int n) SAFE_CLOSE(fds[0]); SAFE_CLOSE(fds[1]); - while (cnt < child_num && sleep_us < 1000000) { + while (cnt < child_num && sleep_us < sleep_us_cap) { ret = waitpid(-1, NULL, WNOHANG); if (ret < 0) tst_brk(TBROK | TERRNO, "waitpid()"); -- 2.54.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp