CTSRD-CHERI/cheribsd

Git times out when quarantining is enabled in CheriBSD 23.11

rwatson opened this issue · 4 comments

I with extreme reliability get a git clone failure on large repositories with quarantining enabled in the out-of-the-box CheriBSD 23.11 release on my Morello desktop machine:

# git clone https://github.com/CTSRD-CHERI/cheribsd
Cloning into 'cheribsd'...
remote: Enumerating objects: 4256953, done.
remote: Counting objects: 100% (56702/56702), done.
remote: Compressing objects: 100% (22550/22550), done.
error: 7868 bytes of body are still expected6.37 MiB | 1.24 MiB/s   
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output

This appears to be due to long synchronous pause times (as observed by @jrtc27).

Running with kernel async revocation (#2011) appears to reliably resolve this issue.

# git clone https://github.com/CTSRD-CHERI/cheribsd
Cloning into 'cheribsd'...
remote: Enumerating objects: 4256953, done.
remote: Counting objects: 100% (56391/56391), done.
remote: Compressing objects: 100% (22554/22554), done.
remote: Total 4256953 (delta 33646), reused 51306 (delta 33227), pack-reused 4200562
Receiving objects: 100% (4256953/4256953), 1.99 GiB | 8.60 MiB/s, done.
Resolving deltas:   6% (192189/3081362)

Resolving deltas: 100% (3081362/3081362), done.
Checking objects: 100% (16777216/16777216), done.
Updating files: 100% (114117/114117), done.

@gvnn3 something we strongly want resolved in the next release / for late March 2024 Morello demonstrations.

This is resolved with #2011 merged, and if it is enabled. To fully resolve this issue, we need to enable asynchronous revocation by default; perhaps @markjdb can comment on the wisdom of such a choice for 24.04?

Closing since the default has been flipped in dev by #2058