GNU bug report logs -
#8074
Fix sparse-pipe test on 2.6.26 kernel
Previous Next
Reported by: "Gilles Espinasse" <g.esp <at> free.fr>
Date: Fri, 18 Feb 2011 08:57:01 UTC
Severity: normal
Done: Jim Meyering <jim <at> meyering.net>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your bug report
#8074: Fix sparse-pipe test on 2.6.26 kernel
which was filed against the coreutils package, has been closed.
The explanation is attached below, along with your original report.
If you require more details, please reply to 8074 <at> debbugs.gnu.org.
--
8074: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8074
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
Gilles Espinasse wrote:
> ----- Original Message -----
> From: "Pádraig Brady" <P <at> draigBrady.com>
> To: "Gilles Espinasse" <g.esp <at> free.fr>
> Cc: "Jim Meyering" <jim <at> meyering.net>; <8074 <at> debbugs.gnu.org>
> Sent: Friday, February 18, 2011 11:54 AM
> Subject: bug#8074: Fix sparse-pipe test on 2.6.26 kernel
>
>
> ...
>> >
>> > If I add a dd if=/dev/null of=pipe conv=notrunc,fdatasync, test
> reliabily
>> > work too.
>> > So I added that in attached patch.
>>
>> Good testing!
>> Interesting to see that fdatasync flushes the pipe to disk.
>> However it might be more portable/robust to use `wait`
>> rather than that dd command?
>>
>> cheers,
>> Pádraig.
>>
> wait work fine
> Find v2 attached
Thanks to both of you.
That was just a buggy (racy) test, independent of kernel
or distro, so I've adjusted comments accordingly:
From e6067bcb040f110238bd7cbf9f3781f2e149e0c0 Mon Sep 17 00:00:00 2001
From: Gilles Espinasse <g.esp <at> free.fr>
Date: Fri, 18 Feb 2011 13:52:21 +0100
Subject: [PATCH] tests: correct racy sparse-to-pipe test
* tests/cp/sparse-to-pipe: Wait for backgrounded "cat" to complete
before comparing the results.
---
tests/cp/sparse-to-pipe | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/tests/cp/sparse-to-pipe b/tests/cp/sparse-to-pipe
index 4d39458..9bbaafa 100755
--- a/tests/cp/sparse-to-pipe
+++ b/tests/cp/sparse-to-pipe
@@ -25,7 +25,11 @@ mkfifo_or_skip_ pipe
timeout 10 cat pipe > copy &
truncate -s1M sparse || framework_failure_
cp sparse pipe || fail=1
+
+# Ensure that the cat has completed before comparing.
+wait
+
cmp sparse copy || fail=1
Exit $fail
--
1.7.4.1.16.g759e8
[Message part 3 (message/rfc822, inline)]
[Message part 4 (text/plain, inline)]
I send 2 messages to bug-coreutils <at> gnu.org in last 2 weeks but that never
reach the list.
I don't know why as this had work in the past and I receive message from
that same address and was able to reply. Isn't the antispam too good? So I
am a bit forced to try with a direct coreutils message.
Anyway, here is the issue. I compile the same code on different machines and
that's made in a chroot a la LFS. With sparse-fiemap-test.patch, all tests
are ok on three machines but randomly fail on the fourth (all x86 32-bits).
The only difference at this stage between the different machines should be
the running kernel (same glibc-2.11.3 is compiled before coreutils).
This work on ubuntu 2.6.32-26-generic, 2.6.27.57 vanilia kernel, Centos-5.5
2.6.18-194.32.1.el5 but fail in debian v5 2.6.26-2-686
Tested as root with
for i in {1..20}; do make -s check -C tests TESTS=cp/sparse-to-pipe
2>/dev/null;done | grep '1 test'
show this result on the debian machine
1 of 1 test failed
1 of 1 test failed
1 test passed
1 test passed
1 of 1 test failed
1 of 1 test failed
1 of 1 test failed
1 of 1 test failed
1 test passed
1 test passed
1 of 1 test failed
1 test passed
1 test passed
1 of 1 test failed
1 of 1 test failed
1 of 1 test failed
1 test passed
1 test passed
1 of 1 test failed
1 of 1 test failed
FS is ext3
failure is
+ require_sparse_support_
+ test 0 = 0
+ t=sparse.17085
+ dd bs=1 seek=128K of=sparse.17085
++ du -sk sparse.17085
+ set x 0 sparse.17085
+ kb_size=0
+ rm -f sparse.17085
+ test 0 -ge 128
+ mkfifo_or_skip_ pipe
+ test 1 = 1
+ mkfifo pipe
+ timeout 10 cat pipe
+ truncate -s1M sparse
+ cp sparse pipe
+ cmp sparse copy
cmp: EOF on copy
+ fail=1
+ Exit 1
The fun is that if I try to strace the cmp, this change the cmp test to
reliabily work
If I add a dd if=/dev/null of=pipe conv=notrunc,fdatasync, test reliabily
work too.
So I added that in attached patch.
Gilles
[Fix-unreliable-sparse-to-pipe-test-on-cmp-on-debian-2.6.26.patch (application/octet-stream, attachment)]
This bug report was last modified 14 years and 98 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.