Discussion:
[unison-users] can't fingerprint after update [1 Attachment]
Potuz potuz@potuz.net [unison-users]
2017-06-18 19:54:28 UTC
Permalink
Hello, I recently updated ocaml and unison and now a previously working setup fails to sync.

Running as server is whiskey, a Raspberry-Pi running Gentoo:

***@whiskey ~ $ uname -a
Linux whiskey 4.1.12-v7+ #824 SMP PREEMPT Wed Oct 28 16:46:35 GMT 2015 armv7l ARMv7 Processor rev 5 (v7l) BCM2709 GNU/Linux
***@whiskey ~ $unison -version
unison version 2.48.4
***@whiskey ~ $ocaml -version
The OCaml toplevel, version 4.04.1

The client (rye) is an x86_64 running Gentoo
***@rye ~ $ uname -a
Linux rye 4.9.20-gentoo #13 SMP Sat May 6 08:55:58 CDT 2017 x86_64 Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz GenuineIntel GNU/Linux
***@rye ~ $ unison -version
unison version 2.48.4
***@rye ~ $ ocaml -version
The OCaml toplevel, version 4.04.1

The client connects to the server via ssh. Attached is the full log of
***@rye ~ $ unison -auto -debug all -ignorearchives whiskey 2>/tmp/unison.log

Which in short says for every single file:
skipped: .offlineimaprc (Failed to fingerprint file "/media2/home/potuz/.offlineimaprc": the file keeps on changing)

This is using a config two sync two small roots, when trying to use my original config file (essentially all of $HOME) then unison fingerprints quickly on rye but takes forever on whiskey. It got to the point that I had to add

ServerAliveInterval 120

to my /etc/ssh/ssh_config to prevent broken pipes errors when trying to sync. Even though it is taking forever, I can check with lsof on the server that unison is going through each file (I suppose attempting to fingerprint), but it opens a fingerprint file for writing and does not write anything to it:

***@whiskey ~ $ cat .unison/fpd80e74874889a3d9c560bf1a036872a2
Unison fingerprint cache format 2

I do not know how to debug this so I would appreciate any help.

Best,

P.
Potuz potuz@potuz.net [unison-users]
2017-06-18 22:45:52 UTC
Permalink
Adding to my report, this might be an issue with ocaml on arm, trying to sync two local directories on the RPI I hit a weird out of bounds error, on unison.log:

***@whiskey ~ $ cat unison.log
Invalid argument: index out of bounds
Raised by primitive operation at file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/uitext.ml", line 690, characters 12-74
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/update.ml", line 1223, characters 10-53
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/update.ml", line 1526, characters 6-31
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/update.ml", line 1595, characters 18-45
Called from file "list.ml", line 77, characters 12-15
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/update.ml", line 1593, characters 2-136
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/update.ml", line 1658, characters 10-89
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/update.ml", line 1787, characters 16-59
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/update.ml", line 1802, characters 8-65
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/update.ml", line 2028, characters 15-77
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/ubase/safelist.ml", line 92, characters 18-28
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/update.ml", line 2023, characters 4-480
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/update.ml", line 2048, characters 18-66
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/globals.ml", line 127, characters 36-39
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/lwt/lwt_util.ml", line 26, characters 9-12
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/lwt/lwt_util.ml", line 27, characters 10-16
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/globals.ml", line 126, characters 2-156
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/update.ml", line 2071, characters 5-404
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/update.ml", line 2052, characters 4-1023
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/update.ml" (inlined), line 2096, characters 2-69
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/uitext.ml", line 700, characters 16-56
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/uitext.ml", line 788, characters 6-90
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/uitext.ml", line 810, characters 19-66
Called from file "/var/tmp/portage/net-misc/unison-2.48.4/work/src/uitext.ml", line 870, characters 21-43


It's strange to see those temporary directories used by portage to compile unison.

with debug -all I see the same error as before about the "file keeps changing" so this rules out a network problem over ssh since these are two local replicas.

P.
Potuz potuz@potuz.net [unison-users]
2017-06-20 00:08:01 UTC
Permalink
It turns out that compiling with Native=false solved this problem on my RPi. I do not know why 2.48.3 worked but 2.48.4 wouldn't. Compiling without ocamlopt did the trick.

P.
Post by Potuz ***@potuz.net [unison-users]
Hello, I recently updated ocaml and unison and now a previously working setup fails to sync.
Linux whiskey 4.1.12-v7+ #824 SMP PREEMPT Wed Oct 28 16:46:35 GMT 2015 armv7l ARMv7 Processor rev 5 (v7l) BCM2709 GNU/Linux
unison version 2.48.4
The OCaml toplevel, version 4.04.1
The client (rye) is an x86_64 running Gentoo
unison version 2.48.4
The OCaml toplevel, version 4.04.1
The client connects to the server via ssh. Attached is the full log of
skipped: .offlineimaprc (Failed to fingerprint file "/media2/home/potuz/.offlineimaprc": the file keeps on changing)
This is using a config two sync two small roots, when trying to use my original config file (essentially all of $HOME) then unison fingerprints quickly on rye but takes forever on whiskey. It got to the point that I had to add
ServerAliveInterval 120
Unison fingerprint cache format 2
I do not know how to debug this so I would appreciate any help.
Best,
P.
ui = graphic
host =
server = false
prefsdocs = false
doc =
version = false
silent = false
dumbtty = false
testserver = false
rest = whiskey
showprev = false
selftest = false
confirmmerge = false
retry = 0
repeat =
contactquietly = false
key =
label =
expert = false
height = 15
auto = true
maxthreads = 0
maxsizethreshold = -1
prefer =
force =
sortnewfirst = false
sortbysize = false
keeptempfilesaftermerge = false
diff = diff -u CURRENT2 CURRENT1
copyonconflict = false
backupdir =
maxbackups = 2
backups = false
backupsuffix =
backupprefix = .bak.$VERSION.
backuploc = central
copymax = 1
copyquoterem = default
copythreshold = -1
copyprogrest = rsync --partial --append-verify --compress
copyprog = rsync --partial --inplace --compress
rsync = true
fastcheck = default
ignorelocks = false
dumparchives = false
showarchive = false
rootsName =
ignorearchives = true
fastercheckUNSAFE = false
fat = false
allHostsAreRunningWindows = false
someHostIsRunningWindows = false
ignore = Name Documents/configuration/gnupg/random_seed
ignore = Path Documents/code/GoldenCheetah
ignore = Path .mutt/cache
ignore = Path .mail/.notmuch
confirmbigdel = true
batch = false
path = .offlineimaprc
path = .config/i3
root = ssh://whiskey.potuz.net//media2/home/potuz
root = /home/potuz
killserver = false
halfduplex = false
stream = true
addversionno = false
servercmd =
sshargs =
rshargs =
rshcmd = rsh
sshcmd = ssh
xferbycopying = true
sshversion =
clientHostName = rye
ignoreinodenumbers = false
links-aux = true
links = default
times = false
group = false
owner = false
numericids = false
dontchmod = false
perms = 1023
watch = true
rsrc-aux = false
rsrc = default
maxerrors = 1
unicodeCS = false
unicodeEnc = false
unicode = default
someHostIsInsensitive = false
ignorecase = default
timers = false
terse = false
logfile = /tmp/unison.log
log = true
debugtimes = false
debug = all
addprefsto =
Contacting server...
[remote] Shell connection: ssh (ssh, whiskey.potuz.net, -e, none, unison, -server)
[globals] Checking path '.offlineimaprc' for expansions
[globals] Checking path '.config / i3' for expansions
Connected [//rye//home/potuz -> //whiskey//media2/home/potuz]
/home/potuz
ssh://whiskey.potuz.net//media2/home/potuz
i.e.
/home/potuz
ssh://whiskey.potuz.net//media2/home/potuz
i.e. (in canonical order)
/home/potuz
//whiskey//media2/home/potuz
[props] Setting permission mask to 1777 (1777 and 7777)
[stasher] initBackupsLocal
[stasher] d = /
[stasher] Prefix and suffix regexps for backup filenames have been updated
[server: stasher] initBackupsLocal
[server: stasher] d = /
[server: stasher] Prefix and suffix regexps for backup filenames have been updated
Looking for changes
[ui] temp: Globals.paths = .offlineimaprc .config/i3
[update] Setting archive for //rye//home/potuz
[server: update] Setting archive for //whiskey//media2/home/potuz
[update] findOnRoot //whiskey//media2/home/potuz
[update] findOnRoot /home/potuz
[update] findLocal /home/potuz (.offlineimaprc .config/i3)
[pred] ignore '.config/i3' = false
[update] buildUpdateRec: /home/potuz/.config/i3
[update] buildUpdate -> New directory
[pred] immutable '.config/i3' = false
[pred] ignore '.config/i3/config' = false
[update] buildUpdateRec: /home/potuz/.config/i3/config
[update] buildUpdate -> New file
[fpcache] cache miss for path .config / i3 / config
[xferhint] insertEntry: fspath=/home/potuz, path=.config/i3/config, fp=(6dc10b06b06d95d67136e8192dc4ef18,)
[pred] ignore '.config/i3/start-after-online.sh' = false
[update] buildUpdateRec: /home/potuz/.config/i3/start-after-online.sh
[update] buildUpdate -> New file
[fpcache] cache miss for path .config / i3 / start-after-online.sh
[xferhint] insertEntry: fspath=/home/potuz, path=.config/i3/start-after-online.sh, fp=(03781d003a1c25da47e812c176fde331,)
[pred] ignore '.offlineimaprc' = false
.offlineimaprc
[update] buildUpdateRec: /home/potuz/.offlineimaprc
[update] buildUpdate -> New file
[fpcache] cache miss for path .offlineimaprc
[xferhint] insertEntry: fspath=/home/potuz, path=.offlineimaprc, fp=(39b35c308dfe7394f110f81c001c34bb,)
[update] Setting archive for //rye//home/potuz
Waiting for changes from server
[server: update] findLocal /media2/home/potuz (.offlineimaprc .config/i3)
[server: pred] ignore '.config/i3' = false
[server: update] buildUpdateRec: /media2/home/potuz/.config/i3
[server: update] buildUpdate -> New directory
[server: pred] immutable '.config/i3' = false
[server: pred] ignore '.config/i3/config' = false
[server: update] buildUpdateRec: /media2/home/potuz/.config/i3/config
[server: update] buildUpdate -> New file
[server: fpcache] cache miss for path .config / i3 / config
[server: pred] ignore '.config/i3/start-after-online.sh' = false
[server: update] buildUpdateRec: /media2/home/potuz/.config/i3/start-after-online.sh
[server: update] buildUpdate -> New file
[server: fpcache] cache miss for path .config / i3 / start-after-online.sh
[server: pred] ignore '.offlineimaprc' = false
[server: update] buildUpdateRec: /media2/home/potuz/.offlineimaprc
[server: update] buildUpdate -> New file
[server: fpcache] cache miss for path .offlineimaprc
[server: update] Setting archive for //whiskey//media2/home/potuz
Reconciling changes
[recon] reconcileAll
[recon] reconcile: 3 results
[update] Marking 1 paths equal
[update] markEqualLocal /home/potuz .config/i3
[pred] backupcurr '.config/i3' = false
[update] Setting archive for //rye//home/potuz
[server: update] markEqualLocal /media2/home/potuz .config/i3
[server: pred] backupcurr '.config/i3' = false
[server: update] Setting archive for //whiskey//media2/home/potuz
[update] Updating archives
[update] Saving archive in /home/potuz/.unison/sc08c495c13a627e67c64335405ed4da72
[server: update] Saving archive in /home/potuz/.unison/scd80e74874889a3d9c560bf1a036872a2
[update] Copying archive /home/potuz/.unison/tm08c495c13a627e67c64335405ed4da72 to /home/potuz/.unison/ar08c495c13a627e67c64335405ed4da72
[server: update] Copying archive /home/potuz/.unison/tmd80e74874889a3d9c560bf1a036872a2 to /home/potuz/.unison/ard80e74874889a3d9c560bf1a036872a2
[update] Removing archive /home/potuz/.unison/tm08c495c13a627e67c64335405ed4da72
[server: update] Removing archive /home/potuz/.unison/tmd80e74874889a3d9c560bf1a036872a2
[pred] sortlast '.offlineimaprc' = false
[pred] sortlast '.config/i3/config' = false
[pred] sortfirst '.offlineimaprc' = false
[pred] sortfirst '.config/i3/config' = false
[sort] .offlineimaprc <= .config/i3/config --> 1
[pred] sortlast '.offlineimaprc' = false
[pred] sortlast '.config/i3/start-after-online.sh' = false
[pred] sortfirst '.offlineimaprc' = false
[pred] sortfirst '.config/i3/start-after-online.sh' = false
[sort] .offlineimaprc <= .config/i3/start-after-online.sh --> 1
[pred] sortlast '.config/i3/config' = false
[pred] sortlast '.config/i3/start-after-online.sh' = false
[pred] sortfirst '.config/i3/config' = false
[pred] sortfirst '.config/i3/start-after-online.sh' = false
[sort] .config/i3/config <= .config/i3/start-after-online.sh --> -1
[pred] forcepartial '.config/i3/config' = false
[pred] preferpartial '.config/i3/config' = false
[pred] forcepartial '.config/i3/start-after-online.sh' = false
[pred] preferpartial '.config/i3/start-after-online.sh' = false
[pred] forcepartial '.offlineimaprc' = false
[pred] preferpartial '.offlineimaprc' = false
[update] Updating archives
[update] Saving archive in /home/potuz/.unison/sc08c495c13a627e67c64335405ed4da72
[server: update] Saving archive in /home/potuz/.unison/scd80e74874889a3d9c560bf1a036872a2
[update] Copying archive /home/potuz/.unison/tm08c495c13a627e67c64335405ed4da72 to /home/potuz/.unison/ar08c495c13a627e67c64335405ed4da72
[server: update] Copying archive /home/potuz/.unison/tmd80e74874889a3d9c560bf1a036872a2 to /home/potuz/.unison/ard80e74874889a3d9c560bf1a036872a2
[update] Removing archive /home/potuz/.unison/tm08c495c13a627e67c64335405ed4da72
[server: update] Removing archive /home/potuz/.unison/tmd80e74874889a3d9c560bf1a036872a2
Synchronization complete at 16:44:35 (0 item transferred, 3 skipped, 0 failed)
skipped: .config/i3/config (Failed to fingerprint file "/media2/home/potuz/.config/i3/config": the file keeps on changing)
skipped: .config/i3/start-after-online.sh (Failed to fingerprint file "/media2/home/potuz/.config/i3/start-after-online.sh": the file keeps on changing)
skipped: .offlineimaprc (Failed to fingerprint file "/media2/home/potuz/.offlineimaprc": the file keeps on changing)
[server: remote] Connection closed by the client
fflineimaprc (Failed to fingerprint file "/media2/home/potuz/.offlineimaprc": the file keeps on changing)
Continue reading on narkive:
Loading...