Re: [ptest-runner] Run ptests via stdbuf configured to line-buffering

Mikko Rapeli

On Fri, Apr 05, 2019 at 07:59:41AM +0100, wrote:
On Fri, 2019-04-05 at 06:54 +0000, wrote:
On Fri, Apr 05, 2019 at 07:46:00AM +0100, wrote:
On Fri, 2019-04-05 at 06:16 +0000, wrote:
On Thu, Apr 04, 2019 at 10:48:17PM +0100, Richard Purdie wrote:
On Thu, 2019-04-04 at 18:00 +0200, Alexander Kanavin wrote:
As ptest-runner communicates with child processes via
the corresponding channels are not attached to a pty. In that
situation stdio facilities like printf() or fwrite() are
buffered. If a ptest would use them, without bothering
to fflush() the output, ptest-runner will only receive what
was written by the child ptest process after a buffer gets
If the unit tests are proceeding slowly, this may mean that
ptest-runner will erroneously timeout due to an apparent lack
'signs of life' from the child process.

stdbuf utility from coreutils adjusts the buffering to a
one, and so ptest-runner will get the lines as soon as they

Signed-off-by: Alexander Kanavin <>
utils.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
I'm a little torn on this. I noticed some of the run-ptest
"| sed -u" whilst the one you were seeing problems with uses "|
without -u.

We may want to consider strongly recommending -u. I'm testing a
with some tweaks like that in it...
Please no. I'm running images without sed and using busybox sed
instead, and that
doesn't support -u. I'd rather be compatible with sed from
busybox to
keep changes
to images minimal (e.g. install of additional packages) before
executing ptests.
The other alternative option being proposed is for ptest-runner to
depend on coreutils which is worse?
GNU sed does not come from coreutils but from sed recipe.

Your call in the end. I just provided my point of view.
The original patch in this thread from Alex needs stdbuf which would
add a coreutils depends to ptest-runner for everything as I understand
Ok, that too then. Then all hope is lost so lets include sed there as well :)

I did test the -u option to sed in the openssh ptest runner and it
fix the problems we've been seeing.

I'm open to other alternatives but the -u option to sed is looking
the best one we have right now. These bugs are making our testing
ptests effectively useless and unpredictable so this is a serious
Understood. I hope you could also add 'set -eux' to all ptest shell
scripts. Many of them seem to be missing shell script error handling
and failures like providing -u to busybox sed may go unnoticed.
Patches would be welcome to help clean up some of these scripts. I feel
like I'm fighting a lonely battle trying to get any of this to work at
times :(
We're ramping up with ptests and will provide fixes back to upstream.

The good news is the automated monitoring of the ptest results should
catch problems like that as if a chunk of ptests "disappear", the new
testing should quickly highlight that.

(We should improve the scripts, we just also have another way to spot
All this work is very much appreciated here in downstream! Thanks you very much!


Join to automatically receive all group messages.