# git-reflog infinite loop

5 messages from 2008-06-10 to 2008-06-11. Participants: Pascal Obry, Jeff King.
Thread: https://gitlist.dev/t/13888

## Pascal Obry, 2008-06-10 17:44

Subject: git-reflog infinite loop
Message-ID: <484EBD92.8040603@obry.net>
URL: https://gitlist.dev/e/484EBD92.8040603%40obry.net

```

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, 2008-06-11 03:47

Subject: Re: git-reflog infinite loop
Message-ID: <20080611034718.GB7198@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20080611034718.GB7198%40sigill.intra.peff.net
In-Reply-To: <484EBD92.8040603@obry.net>

```
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

```

## Pascal Obry, 2008-06-11 05:46

Subject: Re: git-reflog infinite loop
Message-ID: <484F66A5.6070205@obry.net>
URL: https://gitlist.dev/e/484F66A5.6070205%40obry.net
In-Reply-To: <20080611034718.GB7198@sigill.intra.peff.net>

```
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, 2008-06-11 07:03

Subject: Re: git-reflog infinite loop
Message-ID: <20080611070326.GA9980@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20080611070326.GA9980%40sigill.intra.peff.net
In-Reply-To: <484F66A5.6070205@obry.net>

```
On Wed, Jun 11, 2008 at 07:46:13AM +0200, Pascal Obry wrote:

>> 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, 2008-06-11 18:58

Subject: Re: git-reflog infinite loop
Message-ID: <4850204F.50401@obry.net>
URL: https://gitlist.dev/e/4850204F.50401%40obry.net
In-Reply-To: <20080611034718.GB7198@sigill.intra.peff.net>

```
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

```
