bcpierce00 / unison

Unison file synchronizer
GNU General Public License v3.0
3.86k stars 224 forks source link

a recursive call is not 100% reliably tail recursive, perhaps provoked by Arch #1006

Closed callegar closed 3 months ago

callegar commented 3 months ago

Using unison version 2.53.4 (ocaml 5.1.0), I need to sync with an host running unison version 2.51.5 (ocaml 4.13.1).

It is unclear to me if this combination is supported at all. Unison does not complain, though.

The changes are collected just fine.

When I tell unison to propagate the changes it starts, but at about 50% it crashes, with a segmentation fault. Even if the version combination above is weird, IMHO unison should at most refuse to run, not segfault.

Unfortunately I cannot install a more recent unison on the target machine to test with it.

Turning on debugging, shows [files] Creating directory <long path> as the last action before the crash. From the path, unison is trying to transfer a piece of a .git directory (in fact an object directory).

Because of how git objects are named, I suspect a rather long path.

alerque commented 3 months ago

Thanks again @tleedjarv. I've just rebuilt again with those tips in place. That's looking nicer all the time. You can see pkgrel 4.

@Octachron I'd like to think that's probably the issue, but it would be nice to confirm it is not present in current builds. @tleedjarv which pkgrel were you testing that had speed issues? We can check the archives and look inside the pkg.zst file itself for the .BUILDINFO file to see exactly what version of OCAML it was compiled with. The actual build logs are ephemeral unless the person doing the building stashes them somewhere, but we can see rebuild logs from when rebuilderd tries to see if the packages are reproducible. Here is the dashboard. Since I just sent a new package version it isn't checked yet, but it should show up soon at which point the build logs should be visible.

tleedjarv commented 3 months ago

I tested pkgrel 2, built with 5.1.0, slow. Now I tested pkgrel 4, built with 5.1.1, performance is ok. I think this concludes the performance issue, so we no longer need the build logs. Edit: Just checked the rebuild logs for pkgrel 4 and all looks good there.