emacs-bug-tracker
[Top][All Lists]
Advanced

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

[Emacs-bug-tracker] bug#8074: closed (Fix sparse-pipe test on 2.6.26 ker


From: GNU bug Tracking System
Subject: [Emacs-bug-tracker] bug#8074: closed (Fix sparse-pipe test on 2.6.26 kernel)
Date: Fri, 18 Feb 2011 12:55:02 +0000

Your message dated Fri, 18 Feb 2011 13:54:22 +0100
with message-id <address@hidden>
and subject line Re: bug#8074: Fix sparse-pipe test on 2.6.26 kernel
has caused the GNU bug report #8074,
regarding Fix sparse-pipe test on 2.6.26 kernel
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
8074: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8074
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: Fix sparse-pipe test on 2.6.26 kernel Date: Fri, 18 Feb 2011 09:48:52 +0100
I send 2 messages to address@hidden 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

Attachment: Fix-unreliable-sparse-to-pipe-test-on-cmp-on-debian-2.6.26.patch
Description: Binary data


--- End Message ---
--- Begin Message --- Subject: Re: bug#8074: Fix sparse-pipe test on 2.6.26 kernel Date: Fri, 18 Feb 2011 13:54:22 +0100
Gilles Espinasse wrote:

> ----- Original Message -----
> From: "Pádraig Brady" <address@hidden>
> To: "Gilles Espinasse" <address@hidden>
> Cc: "Jim Meyering" <address@hidden>; <address@hidden>
> 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 <address@hidden>
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


--- End Message ---

reply via email to

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