git-reflog infinite loop

5 messages, 2 authors, 2016-06-15 · open the first message on its own page

git-reflog infinite loop

From: Pascal Obry <hidden>
Date: 2016-06-15 22:44:43

In one of my repository, "git gc" will never terminate.

I have traced to the underlying call git-reflog:

    $ git-reflog expire --all

It seems to heat a good amount of heap memory and will keep running 
using 100% of CPU.

Is that a known issue?

Thanks,
Pascal.

-- 

--|------------------------------------------------------
--| Pascal Obry                           Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--|              http://www.obry.net
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver wwwkeys.pgp.net --recv-key C1082595

Re: git-reflog infinite loop

From: Jeff King <hidden>
Date: 2016-06-15 22:44:43

On Tue, Jun 10, 2008 at 07:44:50PM +0200, Pascal Obry wrote:
In one of my repository, "git gc" will never terminate.

I have traced to the underlying call git-reflog:

   $ git-reflog expire --all

It seems to heat a good amount of heap memory and will keep running using 
100% of CPU.

Is that a known issue?
I can't reproduce here, so presumably it is some condition in your
repository; can you make a tarball of your .git directory available?

-Peff

Re: git-reflog infinite loop

From: Pascal Obry <hidden>
Date: 2016-06-15 22:44:43

Jeff King a écrit :
I can't reproduce here, so presumably it is some condition in your
repository;
Yes, I have this problem on a single repository and no problem on the 
others (~10).
can you make a tarball of your .git directory available?
No I can't :(

Is there some git-reflog options I can try to help finding this problem?

Thanks,
Pascal.

-- 

--|------------------------------------------------------
--| Pascal Obry                           Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--|              http://www.obry.net
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver wwwkeys.pgp.net --recv-key C1082595

Re: git-reflog infinite loop

From: Jeff King <hidden>
Date: 2016-06-15 22:44:43

On Wed, Jun 11, 2008 at 07:46:13AM +0200, Pascal Obry wrote:
quoted
can you make a tarball of your .git directory available?
No I can't :(

Is there some git-reflog options I can try to help finding this problem?
Not that I can think of offhand. If I had gotten a copy of the
repository, I would have run it under strace and/or gdb to see what it
was doing while it hung. If you're comfortable with running a debugger,
you might be able to point us to the right part of the code (I'm
assuming there is an infinite loop in there somewhere).

-Peff

Re: git-reflog infinite loop

From: Pascal Obry <hidden>
Date: 2016-06-15 22:44:43

Jeff King a écrit :
I can't reproduce here, so presumably it is some condition in your
repository; can you make a tarball of your .git directory available?
Ok, mystery solved.

The problem was that the repository had been imported using git-svn and 
contained something like 86000 reflog entries in 
.git/logs/refs/remotes/pre/trunk.

Using the debugger I have seen that the loop was not endless... but very 
slow as there was many many reflog to process. Don't know if this is 
expected or not though.

To fix that I have launched:

    $ git-reflog expire --expire=10 --all

It has removed all the old reflogs dating from the git-svn initial 
import lowering the number of enties in .git/logs/refs/remotes/pre/trunk 
to 0 :)

git gc is now working like a charm!

Pascal.

-- 

--|------------------------------------------------------
--| Pascal Obry                           Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--|              http://www.obry.net
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver wwwkeys.pgp.net --recv-key C1082595
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help