| Message ID | 20260917144042.10045-1-pratik.farkase@est.tech |
|---|---|
| State | New |
| Headers | show |
| Series | [v1] util-linux: ptest: fix flock test timeout on slow targets | expand |
On Thu Sep 17, 2026 at 10:40 AM EDT, Pratik Farkase wrote: > The flock ptest starts flock in the background and waits only 1 second > (hardcoded "timeout 1s") for flock to spawn its child, polling with > "pgrep -P". That budget only covers process startup, so it depends on > host speed. Under emulation (qemuriscv64 under TCG) spawning bash and > flock can exceed 1s, so the child is not seen in time and the test > aborts with "timeout waiting for flock child", failing intermittently on > the autobuilder. > > Backport a test fix that raises the timeout to 30s. The poll loop exits > as soon as the child appears, so fast hosts are unaffected; it only adds > headroom on slow/emulated targets. > > [YOCTO #16425] Thanks for this. Hopefully, upstream takes the patch. Out of curiosity, why did you choose 30s? Did you test with shorter timeouts (e.g. 10s)? Trevor > > Signed-off-by: Pratik Farkase <pratik.farkase@est.tech> > --- > meta/recipes-core/util-linux/util-linux.inc | 1 + > ...ncrease-wait-for-flock-child-timeout.patch | 38 +++++++++++++++++++ > 2 files changed, 39 insertions(+) > create mode 100644 meta/recipes-core/util-linux/util-linux/0001-tests-flock-increase-wait-for-flock-child-timeout.patch > > diff --git a/meta/recipes-core/util-linux/util-linux.inc b/meta/recipes-core/util-linux/util-linux.inc > index b30fb04e05..249ae09545 100644 > --- a/meta/recipes-core/util-linux/util-linux.inc > +++ b/meta/recipes-core/util-linux/util-linux.inc > @@ -23,6 +23,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/util-linux/v${MAJOR_VERSION}/util-lin > file://0004-libmount-use-USE_LIBMOUNT_MOUNTFD_SUPPORT-for-idmap-h.patch \ > file://0005-tools-add-non-newmount.conf-config-gen-profile.patch \ > file://0006-tests-lsfd-accept-rw-mode-for-mmap-ed-packet-socket-.patch \ > + file://0001-tests-flock-increase-wait-for-flock-child-timeout.patch \ > " > > SRC_URI[sha256sum] = "66ac7c0e725278eb2b039e3104f2c91119341d941b41bac7a285c695f940bd57" > diff --git a/meta/recipes-core/util-linux/util-linux/0001-tests-flock-increase-wait-for-flock-child-timeout.patch b/meta/recipes-core/util-linux/util-linux/0001-tests-flock-increase-wait-for-flock-child-timeout.patch > new file mode 100644 > index 0000000000..60b6c86eeb > --- /dev/null > +++ b/meta/recipes-core/util-linux/util-linux/0001-tests-flock-increase-wait-for-flock-child-timeout.patch > @@ -0,0 +1,38 @@ > +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 > +From: Pratik Farkase <pratik.farkase@est.tech> > +Date: Wed, 17 Sep 2026 12:00:00 +0000 > +Subject: [PATCH] tests: flock: increase "wait for flock child" timeout > + > +The flock test launches "flock ... bash -c '... sleep 3 ...'" in the > +background and then waits for flock to spawn its child using a hardcoded > +"timeout 1s" around a pgrep poll loop. That 1 second only covers process > +startup, so it is purely a function of host speed. Under emulation (e.g. > +qemuriscv64 under TCG) spawning the shell and flock can exceed 1s, so > +pgrep does not see the child in time and the test aborts with "timeout > +waiting for flock child", failing intermittently. > + > +Increase the timeout to 30s. The loop exits as soon as the child > +appears, so this does not slow down fast hosts; it only adds headroom on > +slow/emulated targets. > + > +Upstream-Status: Submitted [https://github.com/util-linux/util-linux/pull/4639] > + > +Signed-off-by: Pratik Farkase <pratik.farkase@est.tech> > +--- > + tests/ts/flock/flock | 2 +- > + 1 file changed, 1 insertion(+), 1 deletion(-) > + > +diff --git a/tests/ts/flock/flock b/tests/ts/flock/flock > +--- a/tests/ts/flock/flock > ++++ b/tests/ts/flock/flock > +@@ -65,7 +65,7 @@ > + ts_die "unable to run flock" > + fi > + # the lock should be established when flock has a child > +- timeout 1s bash -c "while ! pgrep -P $pid >/dev/null; do sleep 0.1 ;done" \ > ++ timeout 30s bash -c "while ! pgrep -P $pid >/dev/null; do sleep 0.1 ;done" \ > + || ts_die "timeout waiting for flock child" > + > + ts_init_subtest "${subtest_prefix}non-block" > +-- > +2.43.0
diff --git a/meta/recipes-core/util-linux/util-linux.inc b/meta/recipes-core/util-linux/util-linux.inc index b30fb04e05..249ae09545 100644 --- a/meta/recipes-core/util-linux/util-linux.inc +++ b/meta/recipes-core/util-linux/util-linux.inc @@ -23,6 +23,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/util-linux/v${MAJOR_VERSION}/util-lin file://0004-libmount-use-USE_LIBMOUNT_MOUNTFD_SUPPORT-for-idmap-h.patch \ file://0005-tools-add-non-newmount.conf-config-gen-profile.patch \ file://0006-tests-lsfd-accept-rw-mode-for-mmap-ed-packet-socket-.patch \ + file://0001-tests-flock-increase-wait-for-flock-child-timeout.patch \ " SRC_URI[sha256sum] = "66ac7c0e725278eb2b039e3104f2c91119341d941b41bac7a285c695f940bd57" diff --git a/meta/recipes-core/util-linux/util-linux/0001-tests-flock-increase-wait-for-flock-child-timeout.patch b/meta/recipes-core/util-linux/util-linux/0001-tests-flock-increase-wait-for-flock-child-timeout.patch new file mode 100644 index 0000000000..60b6c86eeb --- /dev/null +++ b/meta/recipes-core/util-linux/util-linux/0001-tests-flock-increase-wait-for-flock-child-timeout.patch @@ -0,0 +1,38 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Pratik Farkase <pratik.farkase@est.tech> +Date: Wed, 17 Sep 2026 12:00:00 +0000 +Subject: [PATCH] tests: flock: increase "wait for flock child" timeout + +The flock test launches "flock ... bash -c '... sleep 3 ...'" in the +background and then waits for flock to spawn its child using a hardcoded +"timeout 1s" around a pgrep poll loop. That 1 second only covers process +startup, so it is purely a function of host speed. Under emulation (e.g. +qemuriscv64 under TCG) spawning the shell and flock can exceed 1s, so +pgrep does not see the child in time and the test aborts with "timeout +waiting for flock child", failing intermittently. + +Increase the timeout to 30s. The loop exits as soon as the child +appears, so this does not slow down fast hosts; it only adds headroom on +slow/emulated targets. + +Upstream-Status: Submitted [https://github.com/util-linux/util-linux/pull/4639] + +Signed-off-by: Pratik Farkase <pratik.farkase@est.tech> +--- + tests/ts/flock/flock | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/ts/flock/flock b/tests/ts/flock/flock +--- a/tests/ts/flock/flock ++++ b/tests/ts/flock/flock +@@ -65,7 +65,7 @@ + ts_die "unable to run flock" + fi + # the lock should be established when flock has a child +- timeout 1s bash -c "while ! pgrep -P $pid >/dev/null; do sleep 0.1 ;done" \ ++ timeout 30s bash -c "while ! pgrep -P $pid >/dev/null; do sleep 0.1 ;done" \ + || ts_die "timeout waiting for flock child" + + ts_init_subtest "${subtest_prefix}non-block" +-- +2.43.0
The flock ptest starts flock in the background and waits only 1 second (hardcoded "timeout 1s") for flock to spawn its child, polling with "pgrep -P". That budget only covers process startup, so it depends on host speed. Under emulation (qemuriscv64 under TCG) spawning bash and flock can exceed 1s, so the child is not seen in time and the test aborts with "timeout waiting for flock child", failing intermittently on the autobuilder. Backport a test fix that raises the timeout to 30s. The poll loop exits as soon as the child appears, so fast hosts are unaffected; it only adds headroom on slow/emulated targets. [YOCTO #16425] Signed-off-by: Pratik Farkase <pratik.farkase@est.tech> --- meta/recipes-core/util-linux/util-linux.inc | 1 + ...ncrease-wait-for-flock-child-timeout.patch | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 meta/recipes-core/util-linux/util-linux/0001-tests-flock-increase-wait-for-flock-child-timeout.patch