[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.
indiana-require-bash.patch
Description: Text Data