another way to produce path.ml assertion failure assertion failure, tested versions 2.40.65 and 2.48.3
Frederik Eaton <[email protected]> Mon, 20 Jul 2015 19:35:17 -0700
| Newsgroups | gmane.network.unison.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi all, I'm attaching another script for producing the same path.ml assertion failure. This time no merging is involved, just initialize the archive, then edit a file and type "f" for "follow" at the Unison prompt. The only thing is that you need to set a "backup" preference to generate the error. I also verified that this bug report and the last one are both triggering the same behavior in the latest subversion (provided I've run subversion correctly - it says "At revision 545"). The error message is: Uncaught exception File "/home/frederik/tmp/unison/trunk/src/path.ml", line 210, characters 4-10: Assertion failed I'm wondering if this problem is due to a recent change in OCaml libraries, since I don't think an obvious bug like this would have persisted for 14 years? I don't know much about OCaml but it looks like the 'unison' binary doesn't link any OCaml DLLs... OTOH a lot of your String operations trigger deprecation warnings. Thanks, Frederick On Fri, Jul 10, 2015 at 11:30:53AM -0700, Frederik Eaton wrote: > 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 ----- > > #!/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 > _______________________________________________ > Unison-hackers mailing list > [email protected] > http://lists.seas.upenn.edu/mailman/listinfo/unison-hackers _______________________________________________ Unison-hackers mailing list [email protected] http://lists.seas.upenn.edu/mailman/listinfo/unison-hackers
unison-bug-2
(text/plain, 361 B)
#!/bin/zsh -x rm -rf unison-bug-test mkdir unison-bug-test cd unison-bug-test F=foo G=bar touch $F touch $G export UNISON=.unison mkdir $UNISON echo "backup = Name *" >> $UNISON/default.prf echo hi > $F xvkbd -xsendevent -text " >y"; unison -debug all $F $G; echo bye > $G xvkbd -xsendevent -text "fy"; unison -debug all $F $G; #rm -rf unison-bug-test