git clone over smart-http hanging for just one repo.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I have a git repo that fails to clone or fetch over smart-http, but works great over dav. I am wondering if somebody can help me debug the issue since I am at a loss why this is happening.

Just for clarification, I have several dozen repos in a directory, almost all others work without issue, but one of them is messed up. Replacing it with a different repo works so the error has to be somewhere in the git files themselves. Cloning the repo via DAV works and git fsck reports no problems with the repo.

This is all on git 1.7.0.1 on a Linux machine.

The interesting parts of a strace of git-http-backend following a git clone follow:

12037 execve("/usr/libexec/git-core/git-http-backend.real", ["/usr/ libexec/git-core/git-http-backend.real"], [/* 33 vars */]) = 0
... various library loads and such ...
12037 access("/usr/local/git/gitrepo", F_OK) = 0
12037 chdir("/usr/local/git/gitrepo")  = 0
12037 access("objects", X_OK)           = 0
12037 access("refs", X_OK)              = 0
12037 lstat("HEAD", {st_mode=S_IFREG|0644, st_size=23, ...}) = 0
12037 open("HEAD", O_RDONLY)            = 3
12037 read(3, "ref: refs/heads/master\n", 255) = 23
12037 access("/usr/local/etc/gitconfig", R_OK) = -1 ENOENT (No such file or directory)
12037 access("./config", R_OK)          = 0
12037 open("./config", O_RDONLY)        = 3
12037 read(3, "[core]\n\trepositoryformatversion = 0\n\tfilemode = true \n\tbare = true\n\tlogallrefupdates = true\n\tsharedRepository = true \n", 4096) = 116
12037 read(3, "", 4096)                 = 0
12037 close(3)                          = 0
12037 munmap(0x2aaaaaaac000, 4096)      = 0
12037 write(1, "Expires: Fri, 01 Jan 1980 00:00:00 GMT\r\n", 40) = 40
12037 write(1, "Pragma: no-cache\r\n", 18) = 18
12037 write(1, "Cache-Control: no-cache, max-age=0, must-revalidate\r \n", 53) = 53 12037 write(1, "Content-Type: application/x-git-upload-pack-result\r \n", 52) = 52
12037 write(1, "\r\n", 2)               = 2
12037 pipe([3, 4])                      = 0
12037 pipe([3, 4]) = 012037 pipe([5, 6]) = 0 12037 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID| CLONE_CHILD_SETTID|SIGCHLD
, child_tidptr=0x2aaaaae12c20) = 12038
12038 close(5 <unfinished ...>
12037 close(6)                          = 0
12037 read(5,  <unfinished ...>
12038 <... close resumed> )             = 0
12038 fcntl(6, F_GETFD)                 = 0
12038 fcntl(6, F_SETFD, FD_CLOEXEC) = 012038 dup2(3, 0) = 0 12038 close(3) = 012038 close(4) = 0 12038 execve("/usr/local/libexec/git-core/git", ["git", "upload-pack", "--stateless-rpc", "."], [/* 36 vars */]) = -1 ENOENT (No such file or directory) 12038 execve("/usr/libexec/git-core/git", ["git", "upload-pack", "-- stateless-rp
c", "."], [/* 36 vars */] <unfinished ...>
12037 <... read resumed> "", 1)         = 0
12037 <... read resumed> "", 1) = 012037 close(5) = 0 12037 close(3) = 012038 <... execve resumed> ) = 0
12037 close(1)                          = 0
... More random library loads ...
12038 pipe([3, 4])                      = 0
12038 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID| CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x2aaaaae12c40) = 12039
12039 close(3)                          = 0
12039 fcntl(4, F_GETFD)                 = 0
12039 fcntl(4, F_SETFD, FD_CLOEXEC)     = 0
12039 execve("/usr/libexec/git-core/git-upload-pack", ["git-upload- pack", "--stateless-rpc", "."], [/* 36 vars */] <unfinished ...>
12038 close(4)                          = 0
12037 read(0, "0067want c83f5a4ec9fb6b6681e74dc3c2276de5b947a76c multi_ack_detailed side-band-64k thin-pack ofs-delta\n0032want 92e9b73bbd59b5ecf711381716c8aa13948f5a5d\n0032want
.. clipped out lots of sha's ..
98040a8100513ad2852ca911ac330ebd4ff9e10d\n00000009done\n", 8192) = 2316
12039 <... execve resumed> )            = 0
12038 <... read resumed> "", 1)         = 0
12038 close(3)                          = 0
12039 brk(0 <unfinished ...>
12038 wait4(12039,  <unfinished ...>
12039 <... brk resumed> )               = 0xf9d1000
12037 write(1, "Status: 500 Internal Server Error\r\n", 35 <unfinished ...> 12039 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE| MAP_ANONYMOUS, -1, 0 <unfinished ...>
12037 <... write resumed> )             = -1 EBADF (Bad file descriptor)
12039 <... mmap resumed> )              = 0x2aaaaaaab000
... This repeats for a while.. spitting out 500's on a bad file descriptor... 12037 write(1, "Status: 500 Internal Server Error\r\n", 35) = -1 EBADF (Bad file descriptor)
... Eventually this just repeats a few thousand times ...
12037 write(1, "Status: 500 Internal Server Error\r\n", 35) = -1 EBADF (Bad file descriptor)
12037 --- SIGSEGV (Segmentation fault) @ 0 (0) ---
12037 +++ killed by SIGSEGV +++
12039 <... read resumed> "", 4)         = 0
12039 write(2, "fatal: The remote end hung up unexpectedly\n", 43) = 43
12039 exit_group(128)                   = ?
12038 <... wait4 resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 128}], 0, NULL) = 12039
12038 --- SIGCHLD (Child exited) @ 0 (0) ---
12038 exit_group(128)                   = ?

Anybody have any thoughts why this would happen or what can be done to fix it?
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]