coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: coreutils-8.31.90-cc4c.tar.xz on Solaris 11 OpenIndiana (1)


From: Pádraig Brady
Subject: Re: coreutils-8.31.90-cc4c.tar.xz on Solaris 11 OpenIndiana (1)
Date: Sun, 1 Mar 2020 21:55:25 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:73.0) Gecko/20100101 Thunderbird/73.0

On 01/03/2020 20:23, Bruno Haible wrote:
On Solaris 11 OpenIndiana, I observe a test error:


ERROR: tests/misc/env-signal-handler
====================================

--- exp-err1    Sat Feb 29 00:36:58 2020
+++ err1        Sat Feb 29 00:36:58 2020
@@ -1,1 +1,0 @@
-seq: write error:
env-signal-handler.sh: set-up failure:
ERROR tests/misc/env-signal-handler.sh (exit status: 99)


On this platform, the file 'err1t' created through the command

   (trap '' PIPE; $SHELL -c 'trap - PIPE; seq 999999 2>err1t | head -n1 > out1')

sometimes contains the expected message "seq: write error: Broken pipe",
sometimes it is empty. Most often it's as expected in the first 3 out of 20
runs:

$ for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19; do (trap '' PIPE; /bin/sh -c 
'trap - PIPE; seq 999999 2>err1t | head -n1 > out1') ; echo "Round $i:"; cat 
err1t; done
Round 0:
seq: write error: Broken pipe
Round 1:
seq: write error: Broken pipe
Round 2:
seq: write error: Broken pipe
Round 3:
Round 4:
Round 5:
Round 6:
Round 7:
Round 8:
Round 9:
Round 10:
Round 11:
Round 12:
Round 13:
Round 14:
Round 15:
Round 16:
Round 17:
Round 18:
Round 19:

Sometimes it's the first 5 out of 20 runs; sometimes the first 3 and the 9th 
run.
So, it looks like a timing issue, as if the 'trap - PIPE' command takes a couple
of milliseconds until it becomes effective.

If I add a delay, I get mostly the expected output:

$ for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19; do (trap '' PIPE; /bin/sh -c 
'trap - PIPE; sleep 1; seq 999999 2>err1t | head -n1 > out1') ; echo "Round 
$i:"; cat err1t; done
Round 0:
seq: write error: Broken pipe
Round 1:
seq: write error: Broken pipe
Round 2:
seq: write error: Broken pipe
Round 3:
seq: write error: Broken pipe
Round 4:
seq: write error: Broken pipe
Round 5:
Round 6:
seq: write error: Broken pipe
Round 7:
seq: write error: Broken pipe
Round 8:
seq: write error: Broken pipe
Round 9:
seq: write error: Broken pipe
Round 10:
seq: write error: Broken pipe
Round 11:
seq: write error: Broken pipe
Round 12:
seq: write error: Broken pipe
Round 13:
seq: write error: Broken pipe
Round 14:
seq: write error: Broken pipe
Round 15:
seq: write error: Broken pipe
Round 16:
seq: write error: Broken pipe
Round 17:
seq: write error: Broken pipe
Round 18:
seq: write error: Broken pipe
Round 19:
seq: write error: Broken pipe

If I use bash instead of /bin/sh, the output is all right:

$ for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19; do (trap '' PIPE; /usr/bin/bash 
-c 'trap - PIPE; seq 999999 2>err1t | head -n1 > out1') ; echo "Round $i:"; cat 
err1t; done
Round 0:
seq: write error: Broken pipe
Round 1:
seq: write error: Broken pipe
Round 2:
seq: write error: Broken pipe
Round 3:
seq: write error: Broken pipe
Round 4:
seq: write error: Broken pipe
Round 5:
seq: write error: Broken pipe
Round 6:
seq: write error: Broken pipe
Round 7:
seq: write error: Broken pipe
Round 8:
seq: write error: Broken pipe
Round 9:
seq: write error: Broken pipe
Round 10:
seq: write error: Broken pipe
Round 11:
seq: write error: Broken pipe
Round 12:
seq: write error: Broken pipe
Round 13:
seq: write error: Broken pipe
Round 14:
seq: write error: Broken pipe
Round 15:
seq: write error: Broken pipe
Round 16:
seq: write error: Broken pipe
Round 17:
seq: write error: Broken pipe
Round 18:
seq: write error: Broken pipe
Round 19:
seq: write error: Broken pipe

But the value of SHELL in config.status is /bin/sh. Apparently /bin/sh is
good enough for nearly everything, just not for this 'trap - PIPE' command.

I'm not sure what is the best way forward: Use bash here instead of $SHELL
whenever it is found in $PATH ?

Nice debugging.

It's a pity the failure is intermittent, as then one might
be able to add a check to gl_shell_test_script_ in gnulib/tests/init.sh,
to exclude the problematic shell. Though that might be a bit
draconian for only this particular issue.

I guess we should switch to bash for these cases.
bash is common enough to result in skips on few systems.
The attached should do that.

thanks!
Pádraig.

Attachment: indiana-require-bash.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]