darcs

Issue 760 Test hashed_inventory fails on Linux

Title Test hashed_inventory fails on Linux
Priority not-our-bug Status wont-fix
Milestone 2.0.x Resolved in
Superseder Nosy List Serware, darcs-devel, dmitry.kurochkin, kowey, thorkilnaur, tommy, tux_rocker
Assigned To
Topics Darcs2, X_DeprecatedTopic_Testing

Created on 2008-03-24.18:06:11 by tux_rocker, last changed 2010-06-15.21:20:25 by admin.

Messages
msg3988 (view) Author: tux_rocker Date: 2008-03-24.18:06:07
Under Linux, on the very same MacBook that I do some OS X testing with, "make
check" fails in hashed_inventory.sh with hashed repos:

Running hashed_inventory.sh ...                  FAILED!
Output from failed hashed_inventory.sh:

# We'd just use `diff -x _darcs -r' if -x was portable.
diffx () {
    { find $1 -type f; find $2 -type f; } |
      sed  -e '/.*\/_darcs\//d' -e 's;^[^/]*;;' | sort | uniq |
      {
        while read part; do
            diff -c $1$part $2$part
        done
      }
}

makepristine () {
    rm -rf pristine
    mkdir pristine
    for i in `$DARCS show files --no-files --no-pending`; do
        echo mkdir -p pristine/$i;
        mkdir -p pristine/$i;
    done
    for i in `$DARCS show files --no-directories --no-pending`; do
        echo $DARCS show contents $i ">" pristine/$i;
        $DARCS show contents $i > pristine/$i;
        cat pristine/$i;
    done
}

test $DARCS || DARCS=$PWD/../darcs

rm -rf temp1 temp2 temp3 temp4 temp5
mkdir temp1
cd temp1
$DARCS init --hashed
touch foo
$DARCS add foo
$DARCS rec -m t1 -a -A tester
Finished recording patch 't1'
echo 1 >> foo
$DARCS what -s | grep -v No\ changes
M ./foo +1
$DARCS what -l | grep -v No\ changes
M ./foo +1
$DARCS what -sl | grep -v No\ changes
M ./foo +1
makepristine
$DARCS show files --no-files --no-pending
mkdir -p pristine/.
$DARCS show files --no-directories --no-pending
/mnt/osx/Users/reinier/Source/darcs-unstable/tests-shell-old-fashioned.dir/../darcs
show contents ./foo > pristine/./foo
cd ..

$DARCS get temp1 temp2
Copying patches, to get lazy repository hit ctrl-C...
Finished getting.
cd temp2
$DARCS changes
Mon Mar 24 18:55:29 CET 2008  tester
  * t1
makepristine
$DARCS show files --no-files --no-pending
mkdir -p pristine/.
$DARCS show files --no-directories --no-pending
/mnt/osx/Users/reinier/Source/darcs-unstable/tests-shell-old-fashioned.dir/../darcs
show contents ./foo > pristine/./foo
cd ..

$DARCS get --hashed temp1 temp3
Copying patches, to get lazy repository hit ctrl-C...
Finished getting.
cd temp3
$DARCS changes
Mon Mar 24 18:55:29 CET 2008  tester
  * t1
cp _darcs/hashed_inventory inv
$DARCS optimize
Done optimizing!
diff -c inv _darcs/hashed_inventory
rm inv
makepristine
$DARCS show files --no-files --no-pending
mkdir -p pristine/.
$DARCS show files --no-directories --no-pending
/mnt/osx/Users/reinier/Source/darcs-unstable/tests-shell-old-fashioned.dir/../darcs
show contents ./foo > pristine/./foo
cd ..
cat temp3/pristine/foo

diffx temp2 temp3
diff -rc temp1/pristine temp3/pristine
diff -rc temp2/pristine temp3/pristine

cd temp1
$DARCS record -a -A tester -m t2
Finished recording patch 't2'
$DARCS push ../temp2 -a
Finished applying...
Push successful.
$DARCS push ../temp3 -a
Hash failure in
/mnt/osx/Users/reinier/Source/darcs-unstable/tests-shell-old-fashioned.dir/temp3
of hash 0000000086-b5100d9e939afaf4693896ca15f6307e2f1f22ed2ec256fac1ab3e0e90429d85

darcs failed:  Couldn't fetch
`0000000086-b5100d9e939afaf4693896ca15f6307e2f1f22ed2ec256fac1ab3e0e90429d85'
in subdir pristine.hashed from sources:

thisrepo:/mnt/osx/Users/reinier/Source/darcs-unstable/tests-shell-old-fashioned.dir/temp3
repo:/mnt/osx/Users/reinier/Source/darcs-unstable/tests-shell-old-fashioned.dir/temp1

Apply failed!
msg3989 (view) Author: tux_rocker Date: 2008-03-24.20:12:58
My filesystem is behaving a bit weird. Probably that's the cause.
msg3997 (view) Author: droundy Date: 2008-03-25.14:01:58
On Mon, Mar 24, 2008 at 06:06:12PM -0000, Reinier Lamers wrote:
> Under Linux, on the very same MacBook that I do some OS X testing with, "make
> check" fails in hashed_inventory.sh with hashed repos:

What type of processor is this, and is it running in 64-bit or 32-bit mode?
Is there anything else unusual about its setup that might give a hint as to
what is going wrong? It's mostly surprising because all our linux buildbots
(plus my machine) pass the tests, so I suspect there's something unusual
about yor machine (and if it's running in 32-bit mode, that could be it,
although I'm not sure).

[cut]
> $DARCS push ../temp3 -a
> Hash failure in
> /mnt/osx/Users/reinier/Source/darcs-unstable/tests-shell-old-fashioned.dir/temp3
> of hash 0000000086-b5100d9e939afaf4693896ca15f6307e2f1f22ed2ec256fac1ab3e0e90429d85
> 
> darcs failed:  Couldn't fetch
> `0000000086-b5100d9e939afaf4693896ca15f6307e2f1f22ed2ec256fac1ab3e0e90429d85'
> in subdir pristine.hashed from sources:
> 
> thisrepo:/mnt/osx/Users/reinier/Source/darcs-unstable/tests-shell-old-fashioned.dir/temp3
> repo:/mnt/osx/Users/reinier/Source/darcs-unstable/tests-shell-old-fashioned.dir/temp1
> 
> Apply failed!

Could you look at the file

/mnt/osx/Users/reinier/Source/darcs-unstable/tests-shell-old-fashioned.dir/temp3/_darcs/pristine.hashed/0000000086-b5100d9e939afaf4693896ca15f6307e2f1f22ed2ec256fac1ab3e0e90429d85

and verify that its sha256sum is
b5100d9e939afaf4693896ca15f6307e2f1f22ed2ec256fac1ab3e0e90429d85 and that
its size is 86 bytes?

And that reminds me:  maybe the trouble is the filesystem, as this looks to
be an osx mount, from the path.  What's the filesystem type, and might it
have a pathname-length restriction? I recently increased the size of the
hash by quite a bit, going from sha128 to sha256, and at the same time
adding ten bytes of file-length (this used as a very fast check if a file
might be the right one, also to improve the timestamp checking by also
checking if the file length has changed).  Anyhow, it's possible that we're
now generating filenames that are too long for the FS.  I'm not sure what
we'll do if that's the case.  I could decrease the number of digits for the
file length.  Or we could use something other than hex for the hash, but
that'd make it hard to check manually.

Thanks for the bug report, and I look forward to hearing more about what
went wrong!

Oh, and I presume this is reproducible?

David
msg3999 (view) Author: droundy Date: 2008-03-25.14:03:54
Sorry, I didn't read your second message until after applying.  Are you sure
this is a disk-error-related issue?

David
msg4002 (view) Author: tux_rocker Date: 2008-03-25.15:01:48
Well, certainty doesn't exist, but there were some files in the  
created test repo (which was on the OS X partition) that I couldn't  
remove from Linux. I fsck'ed the partition (it found and fixed some  
errors) and tried again, but the problem persisted. Even when I  
attempted to 'ls' those files as root, I got an error something like  
"cannot access file foo". I rebooted into OS X and from there I could  
delete the files just fine.

I will reboot to Linux and try from its native partition tonight  
(tonight CET = in about 5 hours).

Reinier
msg4004 (view) Author: droundy Date: 2008-03-25.15:44:12
On Tue, Mar 25, 2008 at 03:01:50PM -0000, Reinier Lamers wrote:
> Well, certainty doesn't exist, but there were some files in the  
> created test repo (which was on the OS X partition) that I couldn't  
> remove from Linux. I fsck'ed the partition (it found and fixed some  
> errors) and tried again, but the problem persisted. Even when I  
> attempted to 'ls' those files as root, I got an error something like  
> "cannot access file foo". I rebooted into OS X and from there I could  
> delete the files just fine.

Yuck.  :(

> I will reboot to Linux and try from its native partition tonight  
> (tonight CET = in about 5 hours).

Thanks!

And could you check whether the explanation of filepath length might be the
issue? It'd be nice to know, so we could help other users who might run
into this.
-- 
David Roundy
Department of Physics
Oregon State University
msg4014 (view) Author: tux_rocker Date: 2008-03-25.23:42:18
The test passes on the same Linux installation, when I run it on the ReiserFS
partition that the Linux system itself is installed on. Even when I use a long
path name
(/home/reinier/Desktop/this/is/a/rather/long/path/name/to/trick/darcs/unstable).
So I'm changing this to wont-fix again.
History
Date User Action Args
2008-03-24 18:06:11tux_rockercreate
2008-03-24 20:12:59tux_rockersetstatus: unread -> wont-fix
nosy: tommy, beschmi, kowey, tux_rocker, Serware
messages: + msg3989
2008-03-25 14:02:00droundysetnosy: + droundy
messages: + msg3997
2008-03-25 14:03:58droundysetstatus: wont-fix -> unknown
topic: + Target-2.0
messages: + msg3999
nosy: droundy, tommy, beschmi, kowey, tux_rocker, Serware
2008-03-25 15:01:50tux_rockersetnosy: droundy, tommy, beschmi, kowey, tux_rocker, Serware
messages: + msg4002
2008-03-25 15:44:14droundysetnosy: droundy, tommy, beschmi, kowey, tux_rocker, Serware
messages: + msg4004
2008-03-25 23:42:19tux_rockersetstatus: unknown -> wont-fix
nosy: droundy, tommy, beschmi, kowey, tux_rocker, Serware
messages: + msg4014
2008-03-26 13:55:57droundysetpriority: bug -> not-our-bug
nosy: droundy, tommy, beschmi, kowey, tux_rocker, Serware
2009-08-06 17:57:23adminsetnosy: + markstos, jast, dmitry.kurochkin, darcs-devel, zooko, dagit, mornfall, simon, thorkilnaur, - droundy, tux_rocker
2009-08-06 21:01:01adminsetnosy: - beschmi
2009-08-10 22:18:41adminsetnosy: + tux_rocker, - markstos, darcs-devel, zooko, jast, dagit, mornfall
2009-08-25 18:08:02adminsetnosy: + darcs-devel, - simon
2009-08-27 13:57:02adminsetnosy: tommy, kowey, darcs-devel, thorkilnaur, tux_rocker, dmitry.kurochkin, Serware
2009-10-23 22:42:34adminsetnosy: + serware, - Serware
2009-10-23 23:28:30adminsetnosy: + Serware, - serware
2010-06-15 21:20:23adminsetmilestone: 2.0.x
2010-06-15 21:20:25adminsettopic: - Target-2.0