(resend) merge of single-file roots triggers assertion failure, tested versions 2.40.65 and 2.48.3
Frederik Eaton <[email protected]> Fri, 10 Jul 2015 11:30:53 -0700
| Newsgroups | gmane.network.unison.devel |
|---|---|
| Message-ID | <[email protected]> |
Hello Unison-Hackers, I sent the following email to unison-users, but I don't think it got through. I'm trying to do something really simple with unison. I create two empty files, synchronize them "unison foo bar" (so that an archive in .unison is created for those roots), then make a change to one of them and re-run unison with the same arguments. Instead of propagating the change directly, I select 'merge'. At this point unison barfs (uncaught assertion failure from path.ml). I am confused because I can replicate the error even when using what seems to be a clean configuration (e.g. new user account). I seem to remember that years ago, I could use unison to accomplish simple operations like merging, but even with version 2.40 I can replicate the bug. I tested on two linux systems, running Arch (unison 2.48.3) and Debian (unison 2.40.65). This is a bug, is it not? Is there an easy fix? Thank you, Frederick ----- Forwarded message from Frederik Eaton <[email protected]> ----- Date: Tue, 7 Jul 2015 01:24:10 -0700 From: Frederik Eaton <[email protected]> To: [email protected] Subject: merge of single-file roots triggers assertion failure, tested versions 2.40.65 and 2.48.3 User-Agent: Mutt/1.5.21 (2010-09-15) Hello Unison, Merging changes to a single-file root doesn't appear to work. I tested this on two systems, running unison versions 2.40.65 and 2.48.3. In the older version, the last lines are: [stasher] getRecentVersion of in /home/frederik/unison-test/foo Uncaught exception File "/build/buildd-unison_2.40.65-2-i386-T0rnEi/unison-2.40.65/path.ml", line 202, characters 4-10: Assertion failed In the newer version, they are: [stasher] getRecentVersion of in /home/frederik/unison-test/foo Uncaught exception File "/build/unison/src/unison-2.48.3/path.ml", line 210, characters 4-10: Assertion failed Raised at file "/build/unison/src/unison-2.48.3/lwt/lwt.ml", line 126, characters 22-23 ... Is this a known bug? I'm attaching a script to reproduce. Either run it in X, uncommenting the xvkbd lines; or run it wherever and type SPACE-M-Y. Thanks for your attention, Frederick Eaton #!/bin/zsh mkdir unison-test cd unison-test touch foo touch bar #xvkbd -xsendevent -text " "; UNISON=.unison unison -debug all foo bar; echo hi > foo #xvkbd -xsendevent -text "my"; UNISON=.unison unison -debug all foo bar; #rm -rf unison-test [startup] Preferences: ui = graphic host = server = false prefsdocs = false doc = version = false silent = false dumbtty = false testserver = false rest = bar rest = foo showprev = false selftest = false confirmmerge = false retry = 0 repeat = contactquietly = false key = label = expert = false height = 15 auto = false 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 = false fastercheckUNSAFE = false fat = false allHostsAreRunningWindows = false someHostIsRunningWindows = false confirmbigdel = true batch = false root = bar root = foo killserver = false halfduplex = false stream = true addversionno = false servercmd = sshargs = rshargs = rshcmd = rsh sshcmd = ssh xferbycopying = true sshversion = clientHostName = lot 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 = /home/frederik/unison.log log = true debugtimes = false debug = all addprefsto = Contacting server... [globals] Checking path '' for expansions [startup] Roots: foo bar i.e. foo bar i.e. (in canonical order) /home/frederik/unison-test/bar /home/frederik/unison-test/foo [props] Setting permission mask to 1777 (1777 and 7777) [stasher] initBackupsLocal [stasher] d = / [stasher] Prefix and suffix regexps for backup filenames have been updated [stasher] initBackupsLocal [stasher] d = / [stasher] Prefix and suffix regexps for backup filenames have been updated Looking for changes [ui] temp: Globals.paths = [update] Loading archive from .unison/ar2d8f7a470ecfa50ef4addbc41a60379f [update] Archive .unison/ar2d8f7a470ecfa50ef4addbc41a60379f not found [update] Loading archive from .unison/arbea074476b2045f87d214607955fc245 [update] Archive .unison/arbea074476b2045f87d214607955fc245 not found Warning: No archive files were found for these roots, whose canonical names are: /home/frederik/unison-test/foo /home/frederik/unison-test/bar This can happen either because this is the first time you have synchronized these roots, or because you have upgraded Unison to a new version with a different archive format. Update detection may take a while on this run if the replicas are large. Unison will assume that the 'last synchronized state' of both replicas was completely empty. This means that any files that are different will be reported as conflicts, and any files that exist only on one replica will be judged as new and propagated to the other replica. If the two replicas are identical, then no changes will be reported. If you see this message repeatedly, it may be because one of your machines is getting its address from DHCP, which is causing its host name to change between synchronizations. See the documentation for the UNISONLOCALHOSTNAME environment variable for advice on how to correct this. Donations to the Unison project are gratefully accepted: http://www.cis.upenn.edu/~bcpierce/unison Press return to continue.[<spc>] [update] Loading archive from .unison/ar2d8f7a470ecfa50ef4addbc41a60379f [update] Archive .unison/ar2d8f7a470ecfa50ef4addbc41a60379f not found [update] Setting archive for //lot//home/frederik/unison-test/bar [update] Loading archive from .unison/arbea074476b2045f87d214607955fc245 [update] Archive .unison/arbea074476b2045f87d214607955fc245 not found [update] Setting archive for //lot//home/frederik/unison-test/foo [update] findOnRoot /home/frederik/unison-test/bar [update] findLocal /home/frederik/unison-test/bar () [fpcache] opening cache file .unison/fp2d8f7a470ecfa50ef4addbc41a60379f for input [fpcache] could not open cache file .unison/fp2d8f7a470ecfa50ef4addbc41a60379f: .unison/fp2d8f7a470ecfa50ef4addbc41a60379f: No such file or directory [fpcache] opening cache file .unison/fp2d8f7a470ecfa50ef4addbc41a60379f for output [pred] ignore '' = false [update] buildUpdateRec: /home/frederik/unison-test/bar [update] buildUpdate -> New file [fpcache] cache miss for path [update] Setting archive for //lot//home/frederik/unison-test/bar [update] findOnRoot /home/frederik/unison-test/foo [update] findLocal /home/frederik/unison-test/foo () [fpcache] opening cache file .unison/fpbea074476b2045f87d214607955fc245 for input [fpcache] could not open cache file .unison/fpbea074476b2045f87d214607955fc245: .unison/fpbea074476b2045f87d214607955fc245: No such file or directory [fpcache] opening cache file .unison/fpbea074476b2045f87d214607955fc245 for output [pred] ignore '' = false [update] buildUpdateRec: /home/frederik/unison-test/foo [update] buildUpdate -> New file [fpcache] cache miss for path [update] Setting archive for //lot//home/frederik/unison-test/foo Reconciling changes [recon] reconcileAll [recon] reconcile: 0 results [update] Marking 1 paths equal [update] markEqualLocal /home/frederik/unison-test/bar [pred] backupcurr '' = false [update] Setting archive for //lot//home/frederik/unison-test/bar [update] markEqualLocal /home/frederik/unison-test/foo [pred] backupcurr '' = false [update] Setting archive for //lot//home/frederik/unison-test/foo [update] Updating archives [update] Saving archive in .unison/sc2d8f7a470ecfa50ef4addbc41a60379f [update] Saving archive in .unison/scbea074476b2045f87d214607955fc245 [update] Copying archive .unison/tm2d8f7a470ecfa50ef4addbc41a60379f to .unison/ar2d8f7a470ecfa50ef4addbc41a60379f [update] Copying archive .unison/tmbea074476b2045f87d214607955fc245 to .unison/arbea074476b2045f87d214607955fc245 [update] Removing archive .unison/tm2d8f7a470ecfa50ef4addbc41a60379f [update] Removing archive .unison/tmbea074476b2045f87d214607955fc245 Nothing to do: replicas have been changed only in identical ways since last sync. [startup] Preferences: ui = graphic host = server = false prefsdocs = false doc = version = false silent = false dumbtty = false testserver = false rest = bar rest = foo showprev = false selftest = false confirmmerge = false retry = 0 repeat = contactquietly = false key = label = expert = false height = 15 auto = false 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 = false fastercheckUNSAFE = false fat = false allHostsAreRunningWindows = false someHostIsRunningWindows = false confirmbigdel = true batch = false root = bar root = foo killserver = false halfduplex = false stream = true addversionno = false servercmd = sshargs = rshargs = rshcmd = rsh sshcmd = ssh xferbycopying = true sshversion = clientHostName = lot 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 = /home/frederik/unison.log log = true debugtimes = false debug = all addprefsto = Contacting server... [globals] Checking path '' for expansions [startup] Roots: foo bar i.e. foo bar i.e. (in canonical order) /home/frederik/unison-test/bar /home/frederik/unison-test/foo [props] Setting permission mask to 1777 (1777 and 7777) [stasher] initBackupsLocal [stasher] d = / [stasher] Prefix and suffix regexps for backup filenames have been updated [stasher] initBackupsLocal [stasher] d = / [stasher] Prefix and suffix regexps for backup filenames have been updated Looking for changes [ui] temp: Globals.paths = [update] Loading archive from .unison/ar2d8f7a470ecfa50ef4addbc41a60379f [update] Setting archive for //lot//home/frederik/unison-test/bar [update] Loading archive from .unison/arbea074476b2045f87d214607955fc245 [update] Setting archive for //lot//home/frederik/unison-test/foo [update] findOnRoot /home/frederik/unison-test/bar [update] findLocal /home/frederik/unison-test/bar () [fpcache] opening cache file .unison/fp2d8f7a470ecfa50ef4addbc41a60379f for input [fpcache] read chunk of 1 files [fpcache] opening cache file .unison/fp2d8f7a470ecfa50ef4addbc41a60379f for output [pred] ignore '' = false [update] buildUpdateRec: /home/frederik/unison-test/bar [update] checkContentsChange: archStamp is inode (489993) / info.inode (489993) / times: 1436256685.000000 = 1436256685.000000... true / lengths: 0 - 0 [update] Setting archive for //lot//home/frederik/unison-test/bar [update] findOnRoot /home/frederik/unison-test/foo [update] findLocal /home/frederik/unison-test/foo () [fpcache] opening cache file .unison/fpbea074476b2045f87d214607955fc245 for input [fpcache] read chunk of 1 files [fpcache] opening cache file .unison/fpbea074476b2045f87d214607955fc245 for output [pred] ignore '' = false [update] buildUpdateRec: /home/frederik/unison-test/foo [update] checkContentsChange: archStamp is inode (489992) / info.inode (489992) / times: 1436256685.000000 = 1436256686.000000... false / lengths: 0 - 3 [fpcache] cache miss for path [update] archive digest = (d41d8cd98f00b204e9800998ecf8427e,) current digest = (764efa883dda1e11db47671c4a3bbd9e,) [update] Updated file [update] Setting archive for //lot//home/frederik/unison-test/foo Reconciling changes [recon] reconcileAll [recon] reconcile: 1 results [update] Marking 0 paths equal [pred] forcepartial '' = false [pred] preferpartial '' = false foo bar changed ----> / [f] m changed <=M=> / Proceed with propagating updates? [] y Propagating updates UNISON 2.48.3 started propagating changes at 01:11:27.41 on 07 Jul 2015 [files] merge path between roots /home/frederik/unison-test/foo and /home/frederik/unison-test/bar [pred] follow '' = false [fspath] Os.findWorkingDir(/home/frederik/unison-test/foo,) = (/home/frederik/unison-test,foo) [copy] copyRegFile(/home/frederik/unison-test/foo,) -> (/home/frederik/unison-test/foo,foo,/home/frederik/unison-test,.unison.merge1-foo,modified on 2015-07-07 at 1:11:26 size 3 rw-r--r--) [copy] Copy.localFile /home/frederik/unison-test/foo / to /home/frederik/unison-test / .unison.merge1-foo [props] Setting permissions for /home/frederik/unison-test/.unison.merge1-foo to rw-r--r-- (644/1777) [copy] copyRegFile(/home/frederik/unison-test/bar,) -> (/home/frederik/unison-test/foo,foo,/home/frederik/unison-test,.unison.merge2-foo,modified on 2015-07-07 at 1:11:25 size 0 rw-r--r--) [copy] Copy.localFile /home/frederik/unison-test/bar / to /home/frederik/unison-test / .unison.merge2-foo [props] Setting permissions for /home/frederik/unison-test/.unison.merge2-foo to rw-r--r-- (644/1777) [stasher] getRecentVersion of in /home/frederik/unison-test/foo Uncaught exception File "/build/unison/src/unison-2.48.3/path.ml", line 210, characters 4-10: Assertion failed Raised at file "/build/unison/src/unison-2.48.3/lwt/lwt.ml", line 126, characters 22-23 Called from file "/build/unison/src/unison-2.48.3/lwt/generic/lwt_unix_impl.ml", line 102, characters 8-23 Called from file "/build/unison/src/unison-2.48.3/uitext.ml", line 490, characters 2-113 Called from file "/build/unison/src/unison-2.48.3/uitext.ml", line 556, characters 38-66 Called from file "/build/unison/src/unison-2.48.3/uitext.ml", line 718, characters 6-47 Called from file "/build/unison/src/unison-2.48.3/uitext.ml", line 788, characters 6-90 Called from file "/build/unison/src/unison-2.48.3/uitext.ml", line 810, characters 19-66 Called from file "/build/unison/src/unison-2.48.3/uitext.ml", line 870, characters 21-43 ----- End forwarded message ----- _______________________________________________ Unison-hackers mailing list [email protected] http://lists.seas.upenn.edu/mailman/listinfo/unison-hackers
unison-merge-bug
(text/plain, 249 B)
#!/bin/zsh mkdir unison-test cd unison-test touch foo touch bar #xvkbd -xsendevent -text " "; UNISON=.unison unison -debug all foo bar; echo hi > foo #xvkbd -xsendevent -text "my"; UNISON=.unison unison -debug all foo bar; #rm -rf unison-test