* git-upload-pack: the timeout gets corrupted?! @ 2007-03-11 1:45 H. Peter Anvin 2007-03-11 5:56 ` Junio C Hamano 2007-03-11 17:23 ` H. Peter Anvin 0 siblings, 2 replies; 10+ messages in thread From: H. Peter Anvin @ 2007-03-11 1:45 UTC (permalink / raw) To: Git Mailing List git-1.5.0.3-1.i386 rpm from Junio's repository on kernel.org: Since we got the new git server on kernel.org, we are having a problem with git-upload-pack processes getting reparented to init, and then sitting there forever. Going in with gdb, it appears the "timeout" variable gets overwritten: (gdb) p timeout $1 = 608471321 ... which should have been 600. The process spends effectively forever waiting in on the fflush() in show_commit() (in upload-pack.c); /proc/*/fd shows it is trying to write to a pipe, but I'm not sure what is at the other end of that same pipe. -hpa ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: git-upload-pack: the timeout gets corrupted?! 2007-03-11 1:45 git-upload-pack: the timeout gets corrupted?! H. Peter Anvin @ 2007-03-11 5:56 ` Junio C Hamano 2007-03-11 9:13 ` H. Peter Anvin ` (2 more replies) 2007-03-11 17:23 ` H. Peter Anvin 1 sibling, 3 replies; 10+ messages in thread From: Junio C Hamano @ 2007-03-11 5:56 UTC (permalink / raw) To: H. Peter Anvin; +Cc: Git Mailing List "H. Peter Anvin" <hpa@zytor.com> writes: > ... Going in with gdb, it appears the "timeout" > variable gets overwritten: > > (gdb) p timeout > $1 = 608471321 > > ... which should have been 600. I do not see offhand what can cause this. The only new code since 1.4.4 series is "shallow clone" stuff,... > The process spends effectively forever waiting in on the fflush() in > show_commit() (in upload-pack.c); /proc/*/fd shows it is trying to > write to a pipe, but I'm not sure what is at the other end of that > same pipe. The process forks and the one that runs show_commit() is running rev-list internally while the other end is a pack-objects that reads from it and sends its output back to the client. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: git-upload-pack: the timeout gets corrupted?! 2007-03-11 5:56 ` Junio C Hamano @ 2007-03-11 9:13 ` H. Peter Anvin 2007-03-11 9:23 ` H. Peter Anvin 2007-03-11 17:18 ` H. Peter Anvin 2 siblings, 0 replies; 10+ messages in thread From: H. Peter Anvin @ 2007-03-11 9:13 UTC (permalink / raw) To: Junio C Hamano; +Cc: Git Mailing List Junio C Hamano wrote: > "H. Peter Anvin" <hpa@zytor.com> writes: > >> ... Going in with gdb, it appears the "timeout" >> variable gets overwritten: >> >> (gdb) p timeout >> $1 = 608471321 >> >> ... which should have been 600. > > I do not see offhand what can cause this. The only new code > since 1.4.4 series is "shallow clone" stuff,... > >> The process spends effectively forever waiting in on the fflush() in >> show_commit() (in upload-pack.c); /proc/*/fd shows it is trying to >> write to a pipe, but I'm not sure what is at the other end of that >> same pipe. > > The process forks and the one that runs show_commit() is running > rev-list internally while the other end is a pack-objects that > reads from it and sends its output back to the client. > Yup; the pack-objects process has apparently died. -hpa ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: git-upload-pack: the timeout gets corrupted?! 2007-03-11 5:56 ` Junio C Hamano 2007-03-11 9:13 ` H. Peter Anvin @ 2007-03-11 9:23 ` H. Peter Anvin 2007-03-11 12:14 ` Johannes Schindelin 2007-03-11 17:18 ` H. Peter Anvin 2 siblings, 1 reply; 10+ messages in thread From: H. Peter Anvin @ 2007-03-11 9:23 UTC (permalink / raw) To: Junio C Hamano; +Cc: Git Mailing List Junio C Hamano wrote: > >> The process spends effectively forever waiting in on the fflush() in >> show_commit() (in upload-pack.c); /proc/*/fd shows it is trying to >> write to a pipe, but I'm not sure what is at the other end of that >> same pipe. > > The process forks and the one that runs show_commit() is running > rev-list internally while the other end is a pack-objects that > reads from it and sends its output back to the client. > Now, given that the fact that the git-pack-object process has already died, normally one would expect the write() to get SIGPIPE which would kill the process. Does git-upload-pack not close the read end of the pipe in the writer? From the looks of the fd directory, I would say it does not. -hpa ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: git-upload-pack: the timeout gets corrupted?! 2007-03-11 9:23 ` H. Peter Anvin @ 2007-03-11 12:14 ` Johannes Schindelin 2007-03-11 16:01 ` H. Peter Anvin 0 siblings, 1 reply; 10+ messages in thread From: Johannes Schindelin @ 2007-03-11 12:14 UTC (permalink / raw) To: H. Peter Anvin; +Cc: Junio C Hamano, Git Mailing List Hi, On Sun, 11 Mar 2007, H. Peter Anvin wrote: > Junio C Hamano wrote: > > > > > The process spends effectively forever waiting in on the fflush() in > > > show_commit() (in upload-pack.c); /proc/*/fd shows it is trying to > > > write to a pipe, but I'm not sure what is at the other end of that > > > same pipe. > > > > The process forks and the one that runs show_commit() is running > > rev-list internally while the other end is a pack-objects that > > reads from it and sends its output back to the client. > > > > Now, given that the fact that the git-pack-object process has already died, > normally one would expect the write() to get SIGPIPE which would kill the > process. Does git-upload-pack not close the read end of the pipe in the > writer? From the looks of the fd directory, I would say it does not. Something like this (totally untested): upload-pack.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/upload-pack.c b/upload-pack.c index 498bf50..bafd90f 100644 --- a/upload-pack.c +++ b/upload-pack.c @@ -119,6 +119,8 @@ static void create_pack_file(void) int i; struct rev_info revs; + close(0); + pack_pipe = fdopen(lp_pipe[1], "w"); if (create_full_pack) @@ -167,6 +169,10 @@ static void create_pack_file(void) const char *argv[10]; int i = 0; + close(0); + close(1); + close(2); + dup2(lp_pipe[0], 0); dup2(pu_pipe[1], 1); dup2(pe_pipe[1], 2); Ciao, Dscho ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: git-upload-pack: the timeout gets corrupted?! 2007-03-11 12:14 ` Johannes Schindelin @ 2007-03-11 16:01 ` H. Peter Anvin 2007-03-11 22:01 ` Johannes Schindelin 0 siblings, 1 reply; 10+ messages in thread From: H. Peter Anvin @ 2007-03-11 16:01 UTC (permalink / raw) To: Johannes Schindelin; +Cc: Junio C Hamano, Git Mailing List Johannes Schindelin wrote: > > Something like this (totally untested): > > upload-pack.c | 6 ++++++ > 1 files changed, 6 insertions(+), 0 deletions(-) > > diff --git a/upload-pack.c b/upload-pack.c > index 498bf50..bafd90f 100644 > --- a/upload-pack.c > +++ b/upload-pack.c > @@ -119,6 +119,8 @@ static void create_pack_file(void) > int i; > struct rev_info revs; > > + close(0); > + > pack_pipe = fdopen(lp_pipe[1], "w"); > > if (create_full_pack) Shouldn't that be close(lp_pipe[0]);? > @@ -167,6 +169,10 @@ static void create_pack_file(void) > const char *argv[10]; > int i = 0; > > + close(0); > + close(1); > + close(2); > + > dup2(lp_pipe[0], 0); > dup2(pu_pipe[1], 1); > dup2(pe_pipe[1], 2); > Those close()'s are redundant with the dup2's... -hpa ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: git-upload-pack: the timeout gets corrupted?! 2007-03-11 16:01 ` H. Peter Anvin @ 2007-03-11 22:01 ` Johannes Schindelin 0 siblings, 0 replies; 10+ messages in thread From: Johannes Schindelin @ 2007-03-11 22:01 UTC (permalink / raw) To: H. Peter Anvin; +Cc: Junio C Hamano, Git Mailing List Hi, On Sun, 11 Mar 2007, H. Peter Anvin wrote: > Johannes Schindelin wrote: > > > > Something like this (totally untested): > > > > upload-pack.c | 6 ++++++ > > 1 files changed, 6 insertions(+), 0 deletions(-) > > > > diff --git a/upload-pack.c b/upload-pack.c > > index 498bf50..bafd90f 100644 > > --- a/upload-pack.c > > +++ b/upload-pack.c > > @@ -119,6 +119,8 @@ static void create_pack_file(void) > > int i; > > struct rev_info revs; > > + close(0); > > + > > pack_pipe = fdopen(lp_pipe[1], "w"); > > if (create_full_pack) > > Shouldn't that be close(lp_pipe[0]);? Yes, of course! > > @@ -167,6 +169,10 @@ static void create_pack_file(void) > > const char *argv[10]; > > int i = 0; > > + close(0); > > + close(1); > > + close(2); > > + > > dup2(lp_pipe[0], 0); > > dup2(pu_pipe[1], 1); > > dup2(pe_pipe[1], 2); > > > > Those close()'s are redundant with the dup2's... I didn't know that, but that makes sense. Ciao, Dscho ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: git-upload-pack: the timeout gets corrupted?! 2007-03-11 5:56 ` Junio C Hamano 2007-03-11 9:13 ` H. Peter Anvin 2007-03-11 9:23 ` H. Peter Anvin @ 2007-03-11 17:18 ` H. Peter Anvin 2 siblings, 0 replies; 10+ messages in thread From: H. Peter Anvin @ 2007-03-11 17:18 UTC (permalink / raw) To: Junio C Hamano; +Cc: Git Mailing List Junio C Hamano wrote: > "H. Peter Anvin" <hpa@zytor.com> writes: > >> ... Going in with gdb, it appears the "timeout" >> variable gets overwritten: >> >> (gdb) p timeout >> $1 = 608471321 >> >> ... which should have been 600. > > I do not see offhand what can cause this. The only new code > since 1.4.4 series is "shallow clone" stuff,... Well, we changed servers from an x86-64 box to an i386 box, so we're definitely running different binaries. -hpa ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: git-upload-pack: the timeout gets corrupted?! 2007-03-11 1:45 git-upload-pack: the timeout gets corrupted?! H. Peter Anvin 2007-03-11 5:56 ` Junio C Hamano @ 2007-03-11 17:23 ` H. Peter Anvin 2007-03-11 17:37 ` H. Peter Anvin 1 sibling, 1 reply; 10+ messages in thread From: H. Peter Anvin @ 2007-03-11 17:23 UTC (permalink / raw) To: H. Peter Anvin; +Cc: Git Mailing List H. Peter Anvin wrote: > git-1.5.0.3-1.i386 rpm from Junio's repository on kernel.org: > > Since we got the new git server on kernel.org, we are having a problem > with git-upload-pack processes getting reparented to init, and then > sitting there forever. Going in with gdb, it appears the "timeout" > variable gets overwritten: > > (gdb) p timeout > $1 = 608471321 > > ... which should have been 600. > > The process spends effectively forever waiting in on the fflush() in > show_commit() (in upload-pack.c); /proc/*/fd shows it is trying to write > to a pipe, but I'm not sure what is at the other end of that same pipe. > Another observation: The value is always 608471321 (0x24448919) across all stuck processes that I've examined. This is neither a recent time_t value (it would be Thu Apr 13 11:48:41 UTC 1989) nor is it a valid pointer value in any of the processes I've looked at. -hpa ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: git-upload-pack: the timeout gets corrupted?! 2007-03-11 17:23 ` H. Peter Anvin @ 2007-03-11 17:37 ` H. Peter Anvin 0 siblings, 0 replies; 10+ messages in thread From: H. Peter Anvin @ 2007-03-11 17:37 UTC (permalink / raw) To: H. Peter Anvin; +Cc: Git Mailing List H. Peter Anvin wrote: > Another observation: > > The value is always 608471321 (0x24448919) across all stuck processes > that I've examined. This is neither a recent time_t value (it would be > Thu Apr 13 11:48:41 UTC 1989) nor is it a valid pointer value in any of > the processes I've looked at. Nevermind! I just noticed that git-debuginfo RPM isn't from the same build as the git-core RPM, so anything obtained with gdb is baloney... -hpa ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2007-03-11 22:01 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-03-11 1:45 git-upload-pack: the timeout gets corrupted?! H. Peter Anvin 2007-03-11 5:56 ` Junio C Hamano 2007-03-11 9:13 ` H. Peter Anvin 2007-03-11 9:23 ` H. Peter Anvin 2007-03-11 12:14 ` Johannes Schindelin 2007-03-11 16:01 ` H. Peter Anvin 2007-03-11 22:01 ` Johannes Schindelin 2007-03-11 17:18 ` H. Peter Anvin 2007-03-11 17:23 ` H. Peter Anvin 2007-03-11 17:37 ` H. Peter Anvin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).