Thread (6 messages) flat view 6 messages, 2 authors, 2021-05-22

Re: git repack on shallow clone of large repo (linux kernel) hangs at "Enumerating objects"

From: Jeff King <hidden>
Date: 2021-05-18 12:08:00

On Tue, May 18, 2021 at 06:23:40PM +0700, Bagas Sanjaya wrote:
quoted
You could try using strace or gdb to see what it's doing.

But as a guess, one thing that sometimes causes a stall near the end of
"enumerating objects" is loosening unreachable objects that are
currently packed. You told repack to use "-A", which asks to loosen
those objects so they aren't lost when the old packs are deleted (as
opposed to "-a").
I attached two strace logs, one for "git repack -A -d" and one for "git
repack -a -d".

For the former, I got following excerpt before I had to SIGINT the process:
quoted
stat("/opt/git/libexec/git-core/git", {st_mode=S_IFREG|0755, st_size=22096480, ...}) = 0
pipe([5, 7])                            = 0
openat(AT_FDCWD, "/dev/null", O_RDWR|O_CLOEXEC) = 8
fcntl(8, F_GETFD)                       = 0x1 (flags FD_CLOEXEC)
fcntl(8, F_SETFD, FD_CLOEXEC)           = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7feb5ecbfa10) = 13691
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
close(7)                                = 0
read(5, "", 8)                          = 0
close(5)                                = 0
close(8)                                = 0
close(4)                                = 0
fcntl(3, F_GETFL)                       = 0 (flags O_RDONLY)
fstat(3, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
read(3, 0x55a540de5250, 4096)           = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
I thought that in the case of "git repack -A -d", it is stucked at the
last read() before I ctrl-c'ed to trigger SIGINT.
You need "strace -f". The parent repack process spawns pack-objects (via
the clone() call above), and then waits for it to print the name of the
generated pack at the end. So it will stall on that read() for quite a
while, even under normal circumstances.

-Peff
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help