The sound distributed version control system

#641 pulling and pushing: offset (large number) is past the end of the file

Opened by quickdudley on January 27, 2022
quickdudley on January 27, 2022

To reproduce: attempt to push to or pull from a repository which you have cloned more than about a month ago.

What happens: the editor does not open with a list of changes as usual, and the message Error: Corruption error: offset 8459004074823872813 is past the end of the file is printed to standard error.

Workaround: Delete your local copy of the repository and clone it again. This seems to permanently resolve the issue with respect to that particular repository.

I have seen this issue with the pijul repository itself and also with one of my own entries on the nest.

AfoHT on January 28, 2022

Ah, this I have also seen, did not think it was purely time related but could be. If I recall it started just before beta release.

Cloning locally works too for fixing, see end of comment.

Found an old local copy of manual repo with issues:

❯ ls -lh
Permissions Size User   Date Modified Name
drwxr-xr-x     - henrik 25 dec  2021  book/
.rw-r--r--   212 henrik 25 dec  2021  book.toml
.rw-r--r--   485 henrik  9 jul  2021  default.nix
.rwxr--r--  1,8k henrik  9 jul  2021  generate-reference*
.rw-r--r--   414 henrik  9 jul  2021  LICENSE
.rw-r--r--   321 henrik  9 jul  2021  README.md
drwxr-xr-x     - henrik 27 nov  2021  src/
❯ pijul pull nest
Error: Corruption error: offset 7944442412764905751 is past the end of the file

Running locally compiled pijul with TLGB23EK3LNO6P2G5AKR4OSVWT2AOFCGE2BOPRO4QK64SIHJLX4QC as the latest change, newer than beta.

Going back through versions beta, alpha.57, alpha.56:

rust/pijul/manual-corrupt on ᛘ main took 3s
❯ pijul --version
pijul 1.0.0-beta

rust/pijul/manual-corrupt on ᛘ main
❯ pijul pull nest
Error: Corruption error: offset 7944442412764905751 is past the end of the file

rust/pijul/manual-corrupt on ᛘ main
❯ pijul --version
pijul 1.0.0-alpha.57

rust/pijul/manual-corrupt on ᛘ main
❯ pijul pull nest
Error: Corruption error: offset 7944442412764905751 is past the end of the file

rust/pijul/manual-corrupt on ᛘ main
❯ pijul --version
pijul 1.0.0-alpha.56

rust/pijul/manual-corrupt on ᛘ main
❯ pijul pull nest
Downloading changes [                                                  ] 0/0
Nothing to pull

Something changed between alpha.56 and alpha.57 it would seem, and if memory serves the big things were the new RootNodes and also Sanakirja update under the hood updates.

Changing back to beta and the issue is back:

❯ pijul --version
pijul 1.0.0-beta

rust/pijul/manual-corrupt on ᛘ main
❯ pijul pull nest
Error: Corruption error: offset 7944442412764905751 is past the end of the file

My approach for solving the error:

mv repo repo-corrupt
pijul clone repo-corrupt repo
cp repo-corrupt/.pijul/config repo/.pijul/config
<test pull/push from repo>