threads / discuss / 13888

git-reflog infinite loop

Subject: git-reflog infinite loop

## tl;dr

5 messages between Jun 10, 2008 and Jun 11, 2008.

replies: 4people: 2as markdown or json

Pascal Obry· Jun 10, 2008, 17:44 UTC · lore
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
Jeff King· Jun 11, 2008, 03:47 UTC · re: Pascal Obry · lore

Re: git-reflog infinite loop

On Tue, Jun 10, 2008 at 07:44:50PM +0200, Pascal Obry wrote:
Show 10 quoted lines
> 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
Pascal Obry· Jun 11, 2008, 05:46 UTC · re: Jeff King · lore

Re: git-reflog infinite loop

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
Jeff King· Jun 11, 2008, 07:03 UTC · re: Pascal Obry · lore

Re: git-reflog infinite loop

On Wed, Jun 11, 2008 at 07:46:13AM +0200, Pascal Obry wrote:
Show 5 quoted lines
>> 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
Pascal Obry· Jun 11, 2008, 18:58 UTC · re: Jeff King · lore

Re: git-reflog infinite loop

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

← back to recent threads