On 28/06/15 23:13, Pádraig Brady wrote:
> On 28/06/15 21:20, Assaf Gordon wrote:
>> Hello Pádraig,
>>
>> On 06/28/2015 01:04 AM, Pádraig Brady wrote:
>>> We plan to release coreutils-8.24 in about a week, so any testing
>>> you can do on various different systems between now and then
>>> would be most welcome.
>>>
>>> You can download the coreutils snapshot in xz format (5.4 MB) from:
>>> http://pixelbeat.org/cu/coreutils-ss.tar.xz
>>
>> Few failures on OpenSolaris, attached logs from 5.10 and 5.11, i386 and
>> sparc.
>>
>> On 5.11 (both i386 and sparc) many failures seem related shell usage (e.g.
>> "local: not found", hinting and bash-ism and "expr: synyax error").
>>
>> On the sparc machine, the interactive shell is bash but "/bin/sh" is ksh:
Note in tests/init.sh we make an attempt to find a usable shell.
The order is '/bin/sh bash dash zsh pdksh'
Though I see no explicit test for "local" in that code.
I wonder should we add this to the top of gl_shell_test_script_:
f() { local v=1; }; f || exit 1
which should at least stop early, indicating no appropriate shell?
The "expr: syntax error" is only a symptom of the "local" issue.
On a solaris 10 system with bash here I have no shell issues.
>> > ls -l /bin/sh
>> lrwxrwxrwx 1 root root 13 Jan 22 14:36 /bin/sh ->
>> sparcv7/ksh93
>>
>> Also,
>>
>> Sadly numfmt fails on all of them, with something like this:
>> $ ./src/numfmt --to=si 4000
>> 0K
>>
>> Using debug gives:
>> $ ./src/numfmt ---debug --to=si 2000
>> setting Auto-Padding to 0 characters
>> simple_strtod_human:
>> input string: ‘2000’
>> locale decimal-point: ‘.’
>> MAX_UNSCALED_DIGITS: 18
>> parsed numeric value: 2000.000000
>> input precision = 0
>> suffix power=1000^0 = 1.000000
>> returning value: 2000.000000 (2000)
>> double_to_human:
>> scaled value to 2.000000 * 1000 ^ 1
>> after rounding, value=2.000000 * 1000 ^ 1
>> returning value: ‘NaNK’
>> formatting output:
>> value: 2000.000000
>> humanized: ‘NaNK’
>> NaNK
>>
>> Which hints the problem is in numfmt.c:797, perhaps the system's "snprintf"
>> can't handle the format "%.*Lf" correctly with "long double" ?
>
> Ugh right, I noted that issue and possible solutions at:
> http://lists.gnu.org/archive/html/coreutils/2014-11/msg00052.html
FWIW numfmt tests are passing on:
SunOS login 5.10 Generic_150400-17 sun4v sparc SUNW,SPARC-Enterprise-T5220
BTW I noticed a test race on this slower system
which is fixed by the attached.
thanks,
Pádraig.
From fbe0802085e239a324834ca11ad0a4062d48489b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <[email protected]>
Date: Tue, 30 Jun 2015 03:51:28 +0100
Subject: [PATCH] tests: fix false failure on slower systems
* tests/dd/stats.sh: Wait 20s for dd to write 250MB through a fifo,
rather than 10s for 500MB. The failure was seen often on
a lightly loaded SPARC-Enterprise-T5220 running Solaris 10.
---
tests/dd/stats.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tests/dd/stats.sh b/tests/dd/stats.sh
index e906c74..a82c66d 100755
--- a/tests/dd/stats.sh
+++ b/tests/dd/stats.sh
@@ -39,7 +39,7 @@ cleanup_()
for open in '' '1'; do
# Run dd with the fullblock iflag to avoid short reads
# which can be triggered by reception of signals
- dd iflag=fullblock if=/dev/zero of=fifo count=100 bs=5000000 2>err & pid=$!
+ dd iflag=fullblock if=/dev/zero of=fifo count=50 bs=5000000 2>err & pid=$!
# Note if we sleep here we give dd a chance to exec and block on open.
# Otherwise we're probably testing SIG_IGN in the forked shell or early dd.
@@ -47,7 +47,7 @@ for open in '' '1'; do
# dd will block on open until fifo is opened for reading.
# Timeout in case dd goes away erroneously which we check for below.
- timeout 10 sh -c 'wc -c < fifo > nwritten' & pid2=$!
+ timeout 20 sh -c 'wc -c < fifo > nwritten' & pid2=$!
# Send lots of signals immediately to ensure dd not killed due
# to race setting handler, or blocking on open of fifo.
@@ -59,7 +59,7 @@ for open in '' '1'; do
wait
# Ensure all data processed and at least last status written
- grep '500000000 bytes .* copied' err || { cat err; fail=1; }
+ grep '250000000 bytes .* copied' err || { cat err; fail=1; }
done
progress_output()
--
2.4.1