git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Something weird is happening...
@ 2009-01-29  6:24 H. Peter Anvin
  2009-01-29  6:56 ` Junio C Hamano
                   ` (2 more replies)
  0 siblings, 3 replies; 25+ messages in thread
From: H. Peter Anvin @ 2009-01-29  6:24 UTC (permalink / raw)
  To: Git Mailing List; +Cc: Ingo Molnar

I was investigating a problem that Ingo Molnar reported on the
linux-2.6-tip.git repository on kernel.org.  Unfortunately I was not
able to reproduce his problem (which is a problem in itself) but I did
run into another oddity:

: hera 4 ; git fsck

[lots of dangling commits deleted]
missing blob af0e01d4c663a101f48614e40d006ed6272d5c36

: hera 5 ; git cat-file blob af0e01d4c663a101f48614e40d006ed6272d5c36
/*
 *  debugfs.h - a tiny little debug file system
 *
 *  Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com>
 *  Copyright (C) 2004 IBM Inc.
 *
[... rest of blob deleted ...]

Okay, what is going on here?

Since git 1.6.1.1 just got installed on kernel.org, this phenomenon (and
hopefully Ingo's problem, too) maybe has something to do with this new
version?

	-hpa

--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel.  I don't speak on their behalf.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Something weird is happening...
  2009-01-29  6:24 Something weird is happening H. Peter Anvin
@ 2009-01-29  6:56 ` Junio C Hamano
       [not found]   ` <20090129113846.GA10645@elte.hu>
  2009-01-29 13:45   ` Something weird is happening Sverre Rabbelier
  2009-01-29 10:50 ` Ingo Molnar
  2009-01-29 21:45 ` Junio C Hamano
  2 siblings, 2 replies; 25+ messages in thread
From: Junio C Hamano @ 2009-01-29  6:56 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Git Mailing List, Ingo Molnar

"H. Peter Anvin" <hpa@zytor.com> writes:

> I was investigating a problem that Ingo Molnar reported on the
> linux-2.6-tip.git repository on kernel.org.  Unfortunately I was not
> able to reproduce his problem (which is a problem in itself) but I did
> run into another oddity:
>
> : hera 4 ; git fsck
>
> [lots of dangling commits deleted]
> missing blob af0e01d4c663a101f48614e40d006ed6272d5c36
>
> : hera 5 ; git cat-file blob af0e01d4c663a101f48614e40d006ed6272d5c36
> /*
>  *  debugfs.h - a tiny little debug file system
>  *
>  *  Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com>
>  *  Copyright (C) 2004 IBM Inc.
>  *
> [... rest of blob deleted ...]
>
> Okay, what is going on here?

Does "git fsck --full" report the blob missing?

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Something weird is happening...
  2009-01-29  6:24 Something weird is happening H. Peter Anvin
  2009-01-29  6:56 ` Junio C Hamano
@ 2009-01-29 10:50 ` Ingo Molnar
  2009-01-29 10:52   ` Ingo Molnar
  2009-01-29 21:45 ` Junio C Hamano
  2 siblings, 1 reply; 25+ messages in thread
From: Ingo Molnar @ 2009-01-29 10:50 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Git Mailing List


* H. Peter Anvin <hpa@zytor.com> wrote:

> I was investigating a problem that Ingo Molnar reported on the 
> linux-2.6-tip.git repository on kernel.org.  Unfortunately I was not 
> able to reproduce his problem (which is a problem in itself) but I did 
> run into another oddity:
> 
> : hera 4 ; git fsck
> 
> [lots of dangling commits deleted]
> missing blob af0e01d4c663a101f48614e40d006ed6272d5c36

This problem went away as i downgraded my version of Git from the 'maint' 
branch to a distro 1.6.0 version.

	Ingo

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Something weird is happening...
  2009-01-29 10:50 ` Ingo Molnar
@ 2009-01-29 10:52   ` Ingo Molnar
  0 siblings, 0 replies; 25+ messages in thread
From: Ingo Molnar @ 2009-01-29 10:52 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Git Mailing List


* Ingo Molnar <mingo@elte.hu> wrote:

> 
> * H. Peter Anvin <hpa@zytor.com> wrote:
> 
> > I was investigating a problem that Ingo Molnar reported on the 
> > linux-2.6-tip.git repository on kernel.org.  Unfortunately I was not 
> > able to reproduce his problem (which is a problem in itself) but I did 
> > run into another oddity:
> > 
> > : hera 4 ; git fsck
> > 
> > [lots of dangling commits deleted]
> > missing blob af0e01d4c663a101f48614e40d006ed6272d5c36
> 
> This problem went away as i downgraded my version of Git from the 
> 'maint' branch to a distro 1.6.0 version.

the last 'bad' version of git that i tried was:

    v1.6.1.1-259-g8712b3c

the 'good' version is:

    git version 1.6.0.6

but i had a previous version as well, about 2 weeks older than 
v1.6.1.1-259-g8712b3c - and it only started triggering these problems once 
the kernel.org upgrade happened. I have no clean reproducer so you can 
ignore this - my use of versions was a bit messy.

	Ingo

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Something weird is happening...
       [not found]   ` <20090129113846.GA10645@elte.hu>
@ 2009-01-29 12:05     ` Ingo Molnar
  2009-01-29 22:20       ` René Scharfe
  2009-01-31 14:39       ` [PATCH] merge: fix out-of-bounds memory access René Scharfe
  0 siblings, 2 replies; 25+ messages in thread
From: Ingo Molnar @ 2009-01-29 12:05 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: H. Peter Anvin, Git Mailing List


* Ingo Molnar <mingo@elte.hu> wrote:

> a simple 'git fsck' still reports a ton of dangling and missing objects. 
> (see it below)
> 
> amongst them is the object above:
> 
>   missing blob af0e01d4c663a101f48614e40d006ed6272d5c36
> 
> but this does not seem to cause problems with git version 1.6.0.6 that 
> i'm using now.

hm - maybe it's unrelated, but yesterday, a few hours before the incident 
i did a higher-order Octopus merge with 1.6.1, that segfaulted.

I didnt think much of it - git often crashes with our crazy -tip tree when 
i get above the magic 20 branches limit. The crash left a .git/index.lock 
file around which i removed - and then forgot about the incident. I wanted 
to report those crashes before but procrastinated it.

I used git/maint snapshots because new versions of Git are much better at 
doing Octopus merges.

I've written a reproducer for git-1.6.1.1-1.fc11.i386. See the crash log 
below.

To reproduce, pick up the -tip tree as a remote:

   http://people.redhat.com/mingo/tip.git/README

(you can run the README file as a script)

Then do this:

   git checkout -b tmp.crash v2.6.29-rc3

   git merge  tip/x86/asm        tip/x86/cleanups     tip/x86/cpudetect    \
              tip/x86/debug      tip/x86/doc          tip/x86/header-fixes \
              tip/x86/mm         tip/x86/paravirt     tip/x86/pat          \
              tip/x86/setup-v2   tip/x86/subarch      tip/x86/uaccess      \
              tip/x86/urgent     tip/core/percpu

and you should see the segfault.

interestingly i did not reproduce with the sha1's hardcoded:

  git checkout -b tmp.crash 18e352e4a73465349711a9324767e1b2453383e2

 git merge 2d4d57db692ea790e185656516e6ebe8791f1788 a448720ca3248e8a7a426336885549d6e923fd8e b38b0665905538e76e26f2a4c686179abb1f69f6 d5e397cb49b53381e4c99a064ca733c665646de8 e56d0cfe7790fd3218ae4f6aae1335547fea8763 dbca1df48e89d8aa59254fdc10ef16c16e73d94e fb746d0e1365b7472ccc4c3d5b0672b34a092d0b 6522869c34664dd5f05a0a327e93915b1281c90d d639bab8da86d330493487e8c0fea8ca31f53427 042cbaf88ab48e11afb725541e3c2cbf5b483680 5662a2f8e7313f78d6b17ab383f3e4f04971c335 3b4b75700a245d0d48fc52a4d2f67d3155812aba bf3647c44bc76c43c4b2ebb4c37a559e899ac70e 4369f1fb7cd4cf777312f43e1cb9aa5504fc4125

	Ingo

-------------------->
earth4:~/tip> git merge x86/asm x86/cleanups x86/cpudetect x86/debug 
x86/doc x86/header-fixes x86/mm x86/paravirt x86/pat x86/setup-v2 
x86/subarch x86/uaccess x86/urgent core/percpu
Trying simple merge with 2d4d57db692ea790e185656516e6ebe8791f1788
Trying simple merge with a448720ca3248e8a7a426336885549d6e923fd8e
Simple merge did not work, trying automatic merge.
Auto-merging arch/x86/include/asm/io.h
Auto-merging arch/x86/include/asm/spinlock.h
Auto-merging arch/x86/kernel/mpparse.c
Auto-merging arch/x86/kernel/setup_percpu.c
Auto-merging arch/x86/mm/init_32.c
Trying simple merge with b38b0665905538e76e26f2a4c686179abb1f69f6
Simple merge did not work, trying automatic merge.
Auto-merging arch/x86/kernel/cpu/common.c
Auto-merging arch/x86/kernel/cpu/intel.c
Auto-merging arch/x86/mm/pat.c
Trying simple merge with d5e397cb49b53381e4c99a064ca733c665646de8
Trying simple merge with e56d0cfe7790fd3218ae4f6aae1335547fea8763
Trying simple merge with dbca1df48e89d8aa59254fdc10ef16c16e73d94e
Trying simple merge with fb746d0e1365b7472ccc4c3d5b0672b34a092d0b
Trying simple merge with 6522869c34664dd5f05a0a327e93915b1281c90d
Simple merge did not work, trying automatic merge.
Auto-merging arch/x86/include/asm/paravirt.h
Trying simple merge with d639bab8da86d330493487e8c0fea8ca31f53427
Simple merge did not work, trying automatic merge.
Auto-merging arch/x86/include/asm/io.h
Auto-merging arch/x86/mm/ioremap.c
Trying simple merge with 042cbaf88ab48e11afb725541e3c2cbf5b483680
Trying simple merge with 5662a2f8e7313f78d6b17ab383f3e4f04971c335
Trying simple merge with 3b4b75700a245d0d48fc52a4d2f67d3155812aba
Simple merge did not work, trying automatic merge.
Auto-merging arch/x86/kernel/signal.c
Trying simple merge with bf3647c44bc76c43c4b2ebb4c37a559e899ac70e
Simple merge did not work, trying automatic merge.
Auto-merging arch/x86/kernel/cpu/intel.c
Trying simple merge with 4369f1fb7cd4cf777312f43e1cb9aa5504fc4125
/usr/libexec/git-core/git-merge-octopus: line 52: 26758 Segmentation fault      
git read-tree -u -m --aggressive $common $MRT $SHA1
Merge with strategy octopus failed.
earth4:~/tip> 

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Something weird is happening...
  2009-01-29  6:56 ` Junio C Hamano
       [not found]   ` <20090129113846.GA10645@elte.hu>
@ 2009-01-29 13:45   ` Sverre Rabbelier
  2009-02-01  1:31     ` Junio C Hamano
  1 sibling, 1 reply; 25+ messages in thread
From: Sverre Rabbelier @ 2009-01-29 13:45 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: H. Peter Anvin, Git Mailing List, Ingo Molnar

On Thu, Jan 29, 2009 at 07:56, Junio C Hamano <gitster@pobox.com> wrote:
>> Okay, what is going on here?

Is this perhaps related to the problem the github guys were having,
its sounds similar, problem not showing up until after upgrade,
missing objects, no?

-- 
Cheers,

Sverre Rabbelier

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Something weird is happening...
  2009-01-29  6:24 Something weird is happening H. Peter Anvin
  2009-01-29  6:56 ` Junio C Hamano
  2009-01-29 10:50 ` Ingo Molnar
@ 2009-01-29 21:45 ` Junio C Hamano
  2009-01-29 22:10   ` H. Peter Anvin
  2009-01-29 22:34   ` Something weird is happening Ingo Molnar
  2 siblings, 2 replies; 25+ messages in thread
From: Junio C Hamano @ 2009-01-29 21:45 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Git Mailing List, Ingo Molnar

"H. Peter Anvin" <hpa@zytor.com> writes:

> I was investigating a problem that Ingo Molnar reported on the
> linux-2.6-tip.git repository on kernel.org.  Unfortunately I was not
> able to reproduce his problem (which is a problem in itself) but I did
> run into another oddity:
>
> : hera 4 ; git fsck
>
> [lots of dangling commits deleted]
> missing blob af0e01d4c663a101f48614e40d006ed6272d5c36
>
> : hera 5 ; git cat-file blob af0e01d4c663a101f48614e40d006ed6272d5c36
> /*
>  *  debugfs.h - a tiny little debug file system
>  *
>  *  Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com>
>  *  Copyright (C) 2004 IBM Inc.
>  *
> [... rest of blob deleted ...]
>
> Okay, what is going on here?

Is the blob borrowed from one of its alternate object store, and not in a
pack?  That would explain (note that I am not saying "justify" here, just
"explain") the symptom.

"git fsck" unlike "git fsck --full" does not validate objects in pack nor
objects you borrow from your neighbour via objects/info/alternates.

But it still does the connectivity check fully from your refs.  And if it
finds an object that ought to be reachable from your refs that it hasn't
validated, it gives the "missing" warning above.  There is a check to
exclude objects in packs when running "git fsck" without --full from this
warning but I do not see a corresponding exclusion of objects that were
borrowed from your neighbour which we didn't check either.

But that is just a conjecture from a cursory looking at the current code.
I do not remember (or did not know from the beginning) some details of it.
And that is why I asked you if "git fsck --full" reports it missing in my
earlier response to you.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Something weird is happening...
  2009-01-29 21:45 ` Junio C Hamano
@ 2009-01-29 22:10   ` H. Peter Anvin
  2009-01-29 22:35     ` Ingo Molnar
  2009-01-29 22:34   ` Something weird is happening Ingo Molnar
  1 sibling, 1 reply; 25+ messages in thread
From: H. Peter Anvin @ 2009-01-29 22:10 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing List, Ingo Molnar

Junio C Hamano wrote:
> 
> Is the blob borrowed from one of its alternate object store, and not in a
> pack?  That would explain (note that I am not saying "justify" here, just
> "explain") the symptom.
> 

Yes, it is.

> But it still does the connectivity check fully from your refs.  And if it
> finds an object that ought to be reachable from your refs that it hasn't
> validated, it gives the "missing" warning above.  There is a check to
> exclude objects in packs when running "git fsck" without --full from this
> warning but I do not see a corresponding exclusion of objects that were
> borrowed from your neighbour which we didn't check either.
> 
> But that is just a conjecture from a cursory looking at the current code.
> I do not remember (or did not know from the beginning) some details of it.
> And that is why I asked you if "git fsck --full" reports it missing in my
> earlier response to you.

Just tried it, it doesn't.  So I guess things are OK.

	-hpa

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Something weird is happening...
  2009-01-29 12:05     ` Ingo Molnar
@ 2009-01-29 22:20       ` René Scharfe
  2009-01-29 23:01         ` Daniel Barkalow
  2009-01-31 14:39       ` [PATCH] merge: fix out-of-bounds memory access René Scharfe
  1 sibling, 1 reply; 25+ messages in thread
From: René Scharfe @ 2009-01-29 22:20 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Junio C Hamano, H. Peter Anvin, Git Mailing List, Daniel Barkalow

Ingo Molnar schrieb:
> * Ingo Molnar <mingo@elte.hu> wrote:
> 
>> a simple 'git fsck' still reports a ton of dangling and missing objects. 
>> (see it below)
>>
>> amongst them is the object above:
>>
>>   missing blob af0e01d4c663a101f48614e40d006ed6272d5c36
>>
>> but this does not seem to cause problems with git version 1.6.0.6 that 
>> i'm using now.
> 
> hm - maybe it's unrelated, but yesterday, a few hours before the incident 
> i did a higher-order Octopus merge with 1.6.1, that segfaulted.
> 
> I didnt think much of it - git often crashes with our crazy -tip tree when 
> i get above the magic 20 branches limit. The crash left a .git/index.lock 
> file around which i removed - and then forgot about the incident. I wanted 
> to report those crashes before but procrastinated it.
> 
> I used git/maint snapshots because new versions of Git are much better at 
> doing Octopus merges.
> 
> I've written a reproducer for git-1.6.1.1-1.fc11.i386. See the crash log 
> below.
> 
> To reproduce, pick up the -tip tree as a remote:
> 
>    http://people.redhat.com/mingo/tip.git/README
> 
> (you can run the README file as a script)
> 
> Then do this:
> 
>    git checkout -b tmp.crash v2.6.29-rc3
> 
>    git merge  tip/x86/asm        tip/x86/cleanups     tip/x86/cpudetect    \
>               tip/x86/debug      tip/x86/doc          tip/x86/header-fixes \
>               tip/x86/mm         tip/x86/paravirt     tip/x86/pat          \
>               tip/x86/setup-v2   tip/x86/subarch      tip/x86/uaccess      \
>               tip/x86/urgent     tip/core/percpu
> 
> and you should see the segfault.
> 
> interestingly i did not reproduce with the sha1's hardcoded:
> 
>   git checkout -b tmp.crash 18e352e4a73465349711a9324767e1b2453383e2
> 
>  git merge 2d4d57db692ea790e185656516e6ebe8791f1788 a448720ca3248e8a7a426336885549d6e923fd8e b38b0665905538e76e26f2a4c686179abb1f69f6 d5e397cb49b53381e4c99a064ca733c665646de8 e56d0cfe7790fd3218ae4f6aae1335547fea8763 dbca1df48e89d8aa59254fdc10ef16c16e73d94e fb746d0e1365b7472ccc4c3d5b0672b34a092d0b 6522869c34664dd5f05a0a327e93915b1281c90d d639bab8da86d330493487e8c0fea8ca31f53427 042cbaf88ab48e11afb725541e3c2cbf5b483680 5662a2f8e7313f78d6b17ab383f3e4f04971c335 3b4b75700a245d0d48fc52a4d2f67d3155812aba bf3647c44bc76c43c4b2ebb4c37a559e899ac70e 4369f1fb7cd4cf777312f43e1cb9aa5504fc4125
> 
> 	Ingo
> 
> -------------------->
> earth4:~/tip> git merge x86/asm x86/cleanups x86/cpudetect x86/debug 
> x86/doc x86/header-fixes x86/mm x86/paravirt x86/pat x86/setup-v2 
> x86/subarch x86/uaccess x86/urgent core/percpu
> Trying simple merge with 2d4d57db692ea790e185656516e6ebe8791f1788
> Trying simple merge with a448720ca3248e8a7a426336885549d6e923fd8e
> Simple merge did not work, trying automatic merge.
> Auto-merging arch/x86/include/asm/io.h
> Auto-merging arch/x86/include/asm/spinlock.h
> Auto-merging arch/x86/kernel/mpparse.c
> Auto-merging arch/x86/kernel/setup_percpu.c
> Auto-merging arch/x86/mm/init_32.c
> Trying simple merge with b38b0665905538e76e26f2a4c686179abb1f69f6
> Simple merge did not work, trying automatic merge.
> Auto-merging arch/x86/kernel/cpu/common.c
> Auto-merging arch/x86/kernel/cpu/intel.c
> Auto-merging arch/x86/mm/pat.c
> Trying simple merge with d5e397cb49b53381e4c99a064ca733c665646de8
> Trying simple merge with e56d0cfe7790fd3218ae4f6aae1335547fea8763
> Trying simple merge with dbca1df48e89d8aa59254fdc10ef16c16e73d94e
> Trying simple merge with fb746d0e1365b7472ccc4c3d5b0672b34a092d0b
> Trying simple merge with 6522869c34664dd5f05a0a327e93915b1281c90d
> Simple merge did not work, trying automatic merge.
> Auto-merging arch/x86/include/asm/paravirt.h
> Trying simple merge with d639bab8da86d330493487e8c0fea8ca31f53427
> Simple merge did not work, trying automatic merge.
> Auto-merging arch/x86/include/asm/io.h
> Auto-merging arch/x86/mm/ioremap.c
> Trying simple merge with 042cbaf88ab48e11afb725541e3c2cbf5b483680
> Trying simple merge with 5662a2f8e7313f78d6b17ab383f3e4f04971c335
> Trying simple merge with 3b4b75700a245d0d48fc52a4d2f67d3155812aba
> Simple merge did not work, trying automatic merge.
> Auto-merging arch/x86/kernel/signal.c
> Trying simple merge with bf3647c44bc76c43c4b2ebb4c37a559e899ac70e
> Simple merge did not work, trying automatic merge.
> Auto-merging arch/x86/kernel/cpu/intel.c
> Trying simple merge with 4369f1fb7cd4cf777312f43e1cb9aa5504fc4125
> /usr/libexec/git-core/git-merge-octopus: line 52: 26758 Segmentation fault      
> git read-tree -u -m --aggressive $common $MRT $SHA1
> Merge with strategy octopus failed.
> earth4:~/tip> 

Current master (a34a9dbbc) with the following patch should not
segfault anymore (it doesn't here), but I don't know where the
magic number six is coming from. :-/

diff --git a/unpack-trees.c b/unpack-trees.c
index 16bc2ca..4b02fbf 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -8,6 +8,8 @@
 #include "progress.h"
 #include "refs.h"
 
+#define STAGES (5 + 1)
+
 /*
  * Error messages expected by scripts out of plumbing commands such as
  * read-tree.  Non-scripted Porcelain is not required to use these messages
@@ -143,7 +145,7 @@ static inline int call_unpack_fn(struct cache_entry **src, struct unpack_trees_o
 
 static int unpack_index_entry(struct cache_entry *ce, struct unpack_trees_options *o)
 {
-	struct cache_entry *src[5] = { ce, };
+	struct cache_entry *src[STAGES] = { ce, };
 
 	o->pos++;
 	if (ce_stage(ce)) {
@@ -240,7 +242,7 @@ static struct cache_entry *create_ce_entry(const struct traverse_info *info, con
 	return ce;
 }
 
-static int unpack_nondirectories(int n, unsigned long mask, unsigned long dirmask, struct cache_entry *src[5],
+static int unpack_nondirectories(int n, unsigned long mask, unsigned long dirmask, struct cache_entry *src[STAGES],
 	const struct name_entry *names, const struct traverse_info *info)
 {
 	int i;
@@ -291,7 +293,7 @@ static int unpack_nondirectories(int n, unsigned long mask, unsigned long dirmas
 
 static int unpack_callback(int n, unsigned long mask, unsigned long dirmask, struct name_entry *names, struct traverse_info *info)
 {
-	struct cache_entry *src[5] = { NULL, };
+	struct cache_entry *src[STAGES] = { NULL, };
 	struct unpack_trees_options *o = info->data;
 	const struct name_entry *p = names;
 
@@ -728,7 +730,7 @@ int threeway_merge(struct cache_entry **stages, struct unpack_trees_options *o)
 {
 	struct cache_entry *index;
 	struct cache_entry *head;
-	struct cache_entry *remote = stages[o->head_idx + 1];
+	struct cache_entry *remote;
 	int count;
 	int head_match = 0;
 	int remote_match = 0;
@@ -755,6 +757,9 @@ int threeway_merge(struct cache_entry **stages, struct unpack_trees_options *o)
 		head = NULL;
 	}
 
+	if (o->head_idx + 1 >= STAGES)
+		die("Too many stages (internal error)");
+	remote = stages[o->head_idx + 1];
 	if (remote == o->df_conflict_entry) {
 		df_conflict_remote = 1;
 		remote = NULL;

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* Re: Something weird is happening...
  2009-01-29 21:45 ` Junio C Hamano
  2009-01-29 22:10   ` H. Peter Anvin
@ 2009-01-29 22:34   ` Ingo Molnar
  2009-01-29 22:36     ` H. Peter Anvin
  1 sibling, 1 reply; 25+ messages in thread
From: Ingo Molnar @ 2009-01-29 22:34 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: H. Peter Anvin, Git Mailing List


* Junio C Hamano <gitster@pobox.com> wrote:

> But that is just a conjecture from a cursory looking at the current 
> code. I do not remember (or did not know from the beginning) some 
> details of it. And that is why I asked you if "git fsck --full" reports 
> it missing in my earlier response to you.

sorry i did not follow up on that detail. I ran --full yesterday already 
(before we reported this), and besides taking a lot longer to finish it 
reported the same screenful of problems.

Should i send the output of it? (i started it, it will take some time to 
finish)

	Ingo

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Something weird is happening...
  2009-01-29 22:10   ` H. Peter Anvin
@ 2009-01-29 22:35     ` Ingo Molnar
       [not found]       ` <20090129224357.GA18471@elte.hu>
  0 siblings, 1 reply; 25+ messages in thread
From: Ingo Molnar @ 2009-01-29 22:35 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Junio C Hamano, Git Mailing List


* H. Peter Anvin <hpa@zytor.com> wrote:

>> But it still does the connectivity check fully from your refs.  And if 
>> it finds an object that ought to be reachable from your refs that it 
>> hasn't validated, it gives the "missing" warning above.  There is a 
>> check to exclude objects in packs when running "git fsck" without 
>> --full from this warning but I do not see a corresponding exclusion of 
>> objects that were borrowed from your neighbour which we didn't check 
>> either.
>>
>> But that is just a conjecture from a cursory looking at the current 
>> code. I do not remember (or did not know from the beginning) some 
>> details of it. And that is why I asked you if "git fsck --full" reports 
>> it missing in my earlier response to you.
>
> Just tried it, it doesn't.  So I guess things are OK.

hm, it reported missing items here - but maybe i misremembered that. 
Re-running it currently. (takes quite a while)

	Ingo

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Something weird is happening...
  2009-01-29 22:34   ` Something weird is happening Ingo Molnar
@ 2009-01-29 22:36     ` H. Peter Anvin
  0 siblings, 0 replies; 25+ messages in thread
From: H. Peter Anvin @ 2009-01-29 22:36 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Junio C Hamano, Git Mailing List

Ingo Molnar wrote:
> * Junio C Hamano <gitster@pobox.com> wrote:
> 
>> But that is just a conjecture from a cursory looking at the current 
>> code. I do not remember (or did not know from the beginning) some 
>> details of it. And that is why I asked you if "git fsck --full" reports 
>> it missing in my earlier response to you.
> 
> sorry i did not follow up on that detail. I ran --full yesterday already 
> (before we reported this), and besides taking a lot longer to finish it 
> reported the same screenful of problems.
> 
> Should i send the output of it? (i started it, it will take some time to 
> finish)

I didn't get the "missing" message with git fsck --full.  I get the 
"dangling" messages, still, but that is more or less expected.

	-hpa

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Something weird is happening...
       [not found]       ` <20090129224357.GA18471@elte.hu>
@ 2009-01-29 22:47         ` H. Peter Anvin
  2009-01-29 22:57           ` Junio C Hamano
  0 siblings, 1 reply; 25+ messages in thread
From: H. Peter Anvin @ 2009-01-29 22:47 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Junio C Hamano, Git Mailing List

Ingo Molnar wrote:
> 
> So the repo itself is fine, correct?
> 

Looks like it.

	-hpa

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Something weird is happening...
  2009-01-29 22:47         ` H. Peter Anvin
@ 2009-01-29 22:57           ` Junio C Hamano
  2009-01-29 23:21             ` Linus Torvalds
  0 siblings, 1 reply; 25+ messages in thread
From: Junio C Hamano @ 2009-01-29 22:57 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Ingo Molnar, Git Mailing List

"H. Peter Anvin" <hpa@zytor.com> writes:

> Ingo Molnar wrote:
>>
>> So the repo itself is fine, correct?
>>
>
> Looks like it.

Correct.  It looks like "fsck" without --full is misreporting, which is
something we should find a fix on our end.

I am not sure how old this bug is (nor if I can make Linus admit it is
even a bug---I suspect the code that is involved in this did not change
that much over time).

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Something weird is happening...
  2009-01-29 22:20       ` René Scharfe
@ 2009-01-29 23:01         ` Daniel Barkalow
  0 siblings, 0 replies; 25+ messages in thread
From: Daniel Barkalow @ 2009-01-29 23:01 UTC (permalink / raw)
  To: René Scharfe
  Cc: Ingo Molnar, Junio C Hamano, H. Peter Anvin, Git Mailing List

[-- Attachment #1: Type: TEXT/PLAIN, Size: 700 bytes --]

On Thu, 29 Jan 2009, René Scharfe wrote:

> Current master (a34a9dbbc) with the following patch should not
> segfault anymore (it doesn't here), but I don't know where the
> magic number six is coming from. :-/

Looks like octopus is using multiple merge bases directly, rather than 
combining them using merge-recursive. The merge-recursive concept turned 
out to be superior, and we kind of left multiple merge base support 
hanging. We should probably remove the old support and switch octopus to 
the better way.

My guess is that 6 is just that there happen to be 3 merge bases for this 
particular merge (plus the merge results and the two sides).

	-Daniel
*This .sig left intentionally blank*

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Something weird is happening...
  2009-01-29 22:57           ` Junio C Hamano
@ 2009-01-29 23:21             ` Linus Torvalds
  2009-01-30  9:12               ` [PATCH 1/2] fsck: HEAD is part of refs Junio C Hamano
  2009-01-30  9:13               ` [PATCH 2/2] fsck: check loose objects from alternate object stores by default Junio C Hamano
  0 siblings, 2 replies; 25+ messages in thread
From: Linus Torvalds @ 2009-01-29 23:21 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: H. Peter Anvin, Ingo Molnar, Git Mailing List



On Thu, 29 Jan 2009, Junio C Hamano wrote:
> 
> I am not sure how old this bug is (nor if I can make Linus admit it is
> even a bug---I suspect the code that is involved in this did not change
> that much over time).

I'll happily admit that it's a bug.

I think our "fsck" logic kind of sucks - the default version really skips 
too damn much in the name of being fast and only look at loose objects, 
and --full is _so_ anal that it's silly and overkill for almost 
everything.

We probably should have a middle ground (that should be the default), 
which does at least somewhat proper reachability analysis, checks 
alternates, and make the current "only check local loose objects" be an 
option like "git fsck --loose" (or "--local").

Out current "git fsck --full" is even mis-documented. The built-in help 
says that it means "also consider alternate objects", but that's just a 
small part of what it does. It _also_ verifies the pack-files, and that's 
actually the really expensive part.

So "check_full" turns on _everything_, but some things that it turns on 
should be turned on already by default (the "alternates" directory check), 
while other parts of --full are just too expensive to ever be default (the 
pack-file check).

			Linus

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 1/2] fsck: HEAD is part of refs
  2009-01-29 23:21             ` Linus Torvalds
@ 2009-01-30  9:12               ` Junio C Hamano
  2009-01-30  9:27                 ` Johannes Sixt
                                   ` (2 more replies)
  2009-01-30  9:13               ` [PATCH 2/2] fsck: check loose objects from alternate object stores by default Junio C Hamano
  1 sibling, 3 replies; 25+ messages in thread
From: Junio C Hamano @ 2009-01-30  9:12 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: H. Peter Anvin, Ingo Molnar, Git Mailing List

By default we looked at all refs but not HEAD.  The only thing that
made fsck not lose sight of comments that are only reachable from a
detached HEAD was the reflog for the HEAD.

This fixes it, with a new test.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---

 * This is unrelated to Peter's "missing blob", but should be an obviously
   right thing to do. 

 builtin-fsck.c  |   13 ++++++++-----
 t/t1450-fsck.sh |   18 ++++++++++++++++++
 2 files changed, 26 insertions(+), 5 deletions(-)
 create mode 100755 t/t1450-fsck.sh

diff --git a/builtin-fsck.c b/builtin-fsck.c
index aecc828..2cfff43 100644
--- a/builtin-fsck.c
+++ b/builtin-fsck.c
@@ -23,6 +23,7 @@ static int check_full;
 static int check_strict;
 static int keep_cache_objects;
 static unsigned char head_sha1[20];
+static const char *head_points_at;
 static int errors_found;
 static int write_lost_and_found;
 static int verbose;
@@ -473,6 +474,8 @@ static int fsck_handle_ref(const char *refname, const unsigned char *sha1, int f
 
 static void get_default_heads(void)
 {
+	if (head_points_at && !is_null_sha1(head_sha1))
+		fsck_handle_ref("HEAD", head_sha1, 0, NULL);
 	for_each_ref(fsck_handle_ref, NULL);
 	if (include_reflogs)
 		for_each_reflog(fsck_handle_reflog, NULL);
@@ -512,14 +515,13 @@ static void fsck_object_dir(const char *path)
 
 static int fsck_head_link(void)
 {
-	unsigned char sha1[20];
 	int flag;
 	int null_is_error = 0;
-	const char *head_points_at = resolve_ref("HEAD", sha1, 0, &flag);
 
 	if (verbose)
 		fprintf(stderr, "Checking HEAD link\n");
 
+	head_points_at = resolve_ref("HEAD", head_sha1, 0, &flag);
 	if (!head_points_at)
 		return error("Invalid HEAD");
 	if (!strcmp(head_points_at, "HEAD"))
@@ -528,7 +530,7 @@ static int fsck_head_link(void)
 	else if (prefixcmp(head_points_at, "refs/heads/"))
 		return error("HEAD points to something strange (%s)",
 			     head_points_at);
-	if (is_null_sha1(sha1)) {
+	if (is_null_sha1(head_sha1)) {
 		if (null_is_error)
 			return error("HEAD: detached HEAD points at nothing");
 		fprintf(stderr, "notice: HEAD points to an unborn branch (%s)\n",
@@ -624,8 +626,9 @@ int cmd_fsck(int argc, const char **argv, const char *prefix)
 	heads = 0;
 	for (i = 0; i < argc; i++) {
 		const char *arg = argv[i];
-		if (!get_sha1(arg, head_sha1)) {
-			struct object *obj = lookup_object(head_sha1);
+		unsigned char sha1[20];
+		if (!get_sha1(arg, sha1)) {
+			struct object *obj = lookup_object(sha1);
 
 			/* Error is printed by lookup_object(). */
 			if (!obj)
diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh
new file mode 100755
index 0000000..5166566
--- /dev/null
+++ b/t/t1450-fsck.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+test_description='git fsck random collection of tests'
+
+. ./test-lib.sh
+
+test_expect_success setup '
+	test_commit A &&
+	git checkout HEAD^0 &&
+	test_commit B &&
+	git reflog expire --expire=now --all
+'
+
+test_expect_success 'HEAD is part of refs' '
+	test 0 = $(git fsck | wc -l)
+'
+
+test_done
-- 
1.6.1.2.312.g5be3c

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 2/2] fsck: check loose objects from alternate object stores by default
  2009-01-29 23:21             ` Linus Torvalds
  2009-01-30  9:12               ` [PATCH 1/2] fsck: HEAD is part of refs Junio C Hamano
@ 2009-01-30  9:13               ` Junio C Hamano
  1 sibling, 0 replies; 25+ messages in thread
From: Junio C Hamano @ 2009-01-30  9:13 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: H. Peter Anvin, Ingo Molnar, Git Mailing List

"git fsck" used to validate only loose objects that are local and nothing
else by default.  This is not just too little when a repository is
borrowing objects from other object stores, but also caused the
connectivity check to mistakenly declare loose objects borrowed from them
to be missing.

The rationale behind the default mode that validates only loose objects is
because these objects are still young and more unlikely to have been
pushed to other repositories yet.  That holds for loose objects borrowed
from alternate object stores as well.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---

 * This implements your earlier suggestion.  We might want to say where
   the corrupt object was found when fsck_sha1() reports problems, but
   that is an issue that already exists when the command is run with
   --full.

 builtin-fsck.c  |   21 ++++++++++++---------
 t/t1450-fsck.sh |   16 ++++++++++++++--
 2 files changed, 26 insertions(+), 11 deletions(-)

diff --git a/builtin-fsck.c b/builtin-fsck.c
index 2cfff43..64dffa5 100644
--- a/builtin-fsck.c
+++ b/builtin-fsck.c
@@ -586,6 +586,7 @@ static struct option fsck_opts[] = {
 int cmd_fsck(int argc, const char **argv, const char *prefix)
 {
 	int i, heads;
+	struct alternate_object_database *alt;
 
 	errors_found = 0;
 
@@ -597,17 +598,19 @@ int cmd_fsck(int argc, const char **argv, const char *prefix)
 
 	fsck_head_link();
 	fsck_object_dir(get_object_directory());
+
+	prepare_alt_odb();
+	for (alt = alt_odb_list; alt; alt = alt->next) {
+		char namebuf[PATH_MAX];
+		int namelen = alt->name - alt->base;
+		memcpy(namebuf, alt->base, namelen);
+		namebuf[namelen - 1] = 0;
+		fsck_object_dir(namebuf);
+	}
+
 	if (check_full) {
-		struct alternate_object_database *alt;
 		struct packed_git *p;
-		prepare_alt_odb();
-		for (alt = alt_odb_list; alt; alt = alt->next) {
-			char namebuf[PATH_MAX];
-			int namelen = alt->name - alt->base;
-			memcpy(namebuf, alt->base, namelen);
-			namebuf[namelen - 1] = 0;
-			fsck_object_dir(namebuf);
-		}
+
 		prepare_packed_git();
 		for (p = packed_git; p; p = p->next)
 			/* verify gives error messages itself */
diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh
index 5166566..6e64e44 100755
--- a/t/t1450-fsck.sh
+++ b/t/t1450-fsck.sh
@@ -5,9 +5,9 @@ test_description='git fsck random collection of tests'
 . ./test-lib.sh
 
 test_expect_success setup '
-	test_commit A &&
+	test_commit A fileA one &&
 	git checkout HEAD^0 &&
-	test_commit B &&
+	test_commit B fileB two &&
 	git reflog expire --expire=now --all
 '
 
@@ -15,4 +15,16 @@ test_expect_success 'HEAD is part of refs' '
 	test 0 = $(git fsck | wc -l)
 '
 
+test_expect_success 'loose objects borrowed from alternate are not missing' '
+	mkdir another &&
+	(
+		cd another &&
+		git init &&
+		echo ../../../.git/objects >.git/objects/info/alternates &&
+		test_commit C fileC one &&
+		git fsck >out &&
+		! grep "missing blob" out
+	)
+'
+
 test_done
-- 
1.6.1.2.312.g5be3c

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* Re: [PATCH 1/2] fsck: HEAD is part of refs
  2009-01-30  9:12               ` [PATCH 1/2] fsck: HEAD is part of refs Junio C Hamano
@ 2009-01-30  9:27                 ` Johannes Sixt
  2009-02-01  0:53                   ` Junio C Hamano
  2009-01-30 16:47                 ` Johannes Schindelin
  2009-01-31 21:45                 ` Nanako Shiraishi
  2 siblings, 1 reply; 25+ messages in thread
From: Johannes Sixt @ 2009-01-30  9:27 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Linus Torvalds, H. Peter Anvin, Ingo Molnar, Git Mailing List

Junio C Hamano schrieb:
> By default we looked at all refs but not HEAD.  The only thing that
> made fsck not lose sight of comments that are only reachable from a
> detached HEAD was the reflog for the HEAD.
> 
> This fixes it, with a new test.
[...]
> +test_expect_success setup '
> +	test_commit A &&
> +	git checkout HEAD^0 &&
> +	test_commit B &&
> +	git reflog expire --expire=now --all
> +'
> +
> +test_expect_success 'HEAD is part of refs' '
> +	test 0 = $(git fsck | wc -l)

I'm scratching my head over this. This test succeeds even without the
change... (Tested with a34a9db.)

-- Hannes

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 1/2] fsck: HEAD is part of refs
  2009-01-30  9:12               ` [PATCH 1/2] fsck: HEAD is part of refs Junio C Hamano
  2009-01-30  9:27                 ` Johannes Sixt
@ 2009-01-30 16:47                 ` Johannes Schindelin
  2009-01-31 21:45                 ` Nanako Shiraishi
  2 siblings, 0 replies; 25+ messages in thread
From: Johannes Schindelin @ 2009-01-30 16:47 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Linus Torvalds, H. Peter Anvin, Ingo Molnar, Git Mailing List

Hi,

On Fri, 30 Jan 2009, Junio C Hamano wrote:

> By default we looked at all refs but not HEAD.  The only thing that
> made fsck not lose sight of comments that are only reachable from a
> detached HEAD was the reflog for the HEAD.

When fixing the revision machinery to imply HEAD with --all, I thought of 
fsck, too, but forgot to check if it does actually use the revision 
walker.

Sorry about this,
Dscho

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH] merge: fix out-of-bounds memory access
  2009-01-29 12:05     ` Ingo Molnar
  2009-01-29 22:20       ` René Scharfe
@ 2009-01-31 14:39       ` René Scharfe
  1 sibling, 0 replies; 25+ messages in thread
From: René Scharfe @ 2009-01-31 14:39 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Junio C Hamano, H. Peter Anvin, Git Mailing List, Daniel Barkalow

The following on top of master lets git finish the merge without segfault
(reporting a merge conflict) and valgrind doesn't find an more memory
errors here.  Can you confirm that, Ingo?

-- 8< --
The parameter n of unpack_callback() can have a value of up to
MAX_UNPACK_TREES.  The check at the top of unpack_trees() (its only
(indirect) caller) makes sure it cannot exceed this limit.

unpack_callback() passes it and the array src to unpack_nondirectories(),
which has this loop:

	for (i = 0; i < n; i++) {
		/* ... */
		src[i + o->merge] = o->df_conflict_entry;

o->merge can be 0 or 1, so unpack_nondirectories() potentially accesses
the array src at index MAX_UNPACK_TREES.  This patch makes it big enough.

Reported-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
---
 unpack-trees.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/unpack-trees.c b/unpack-trees.c
index 16bc2ca..e547282 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -240,8 +240,11 @@ static struct cache_entry *create_ce_entry(const struct traverse_info *info, con
 	return ce;
 }
 
-static int unpack_nondirectories(int n, unsigned long mask, unsigned long dirmask, struct cache_entry *src[5],
-	const struct name_entry *names, const struct traverse_info *info)
+static int unpack_nondirectories(int n, unsigned long mask,
+				 unsigned long dirmask,
+				 struct cache_entry **src,
+				 const struct name_entry *names,
+				 const struct traverse_info *info)
 {
 	int i;
 	struct unpack_trees_options *o = info->data;
@@ -291,7 +294,7 @@ static int unpack_nondirectories(int n, unsigned long mask, unsigned long dirmas
 
 static int unpack_callback(int n, unsigned long mask, unsigned long dirmask, struct name_entry *names, struct traverse_info *info)
 {
-	struct cache_entry *src[5] = { NULL, };
+	struct cache_entry *src[MAX_UNPACK_TREES + 1] = { NULL, };
 	struct unpack_trees_options *o = info->data;
 	const struct name_entry *p = names;
 
-- 
1.6.1

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* Re: [PATCH 1/2] fsck: HEAD is part of refs
  2009-01-30  9:12               ` [PATCH 1/2] fsck: HEAD is part of refs Junio C Hamano
  2009-01-30  9:27                 ` Johannes Sixt
  2009-01-30 16:47                 ` Johannes Schindelin
@ 2009-01-31 21:45                 ` Nanako Shiraishi
  2009-02-01  0:57                   ` Junio C Hamano
  2 siblings, 1 reply; 25+ messages in thread
From: Nanako Shiraishi @ 2009-01-31 21:45 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Linus Torvalds, H. Peter Anvin, Ingo Molnar, Git Mailing List

Quoting Junio C Hamano <gitster@pobox.com>:

> By default we looked at all refs but not HEAD.  The only thing that
> made fsck not lose sight of comments that are only reachable from a
> detached HEAD was the reflog for the HEAD.
>
> This fixes it, with a new test.
>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>

I think you meant to say commits, not comments.

-- 
Nanako Shiraishi
http://ivory.ap.teacup.com/nanako3/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 1/2] fsck: HEAD is part of refs
  2009-01-30  9:27                 ` Johannes Sixt
@ 2009-02-01  0:53                   ` Junio C Hamano
  0 siblings, 0 replies; 25+ messages in thread
From: Junio C Hamano @ 2009-02-01  0:53 UTC (permalink / raw)
  To: Johannes Sixt
  Cc: Linus Torvalds, H. Peter Anvin, Ingo Molnar, Git Mailing List

Johannes Sixt <j.sixt@viscovery.net> writes:

> Junio C Hamano schrieb:
>> By default we looked at all refs but not HEAD.  The only thing that
>> made fsck not lose sight of comments that are only reachable from a
>> detached HEAD was the reflog for the HEAD.
>> 
>> This fixes it, with a new test.
> [...]
>> +test_expect_success setup '
>> +	test_commit A &&
>> +	git checkout HEAD^0 &&
>> +	test_commit B &&
>> +	git reflog expire --expire=now --all
>> +'
>> +
>> +test_expect_success 'HEAD is part of refs' '
>> +	test 0 = $(git fsck | wc -l)
>
> I'm scratching my head over this. This test succeeds even without the
> change... (Tested with a34a9db.)

You are right.  I forgot that test_commit creates an extra tag.  By adding

	git tag -d B &&

after "test_commit B &&", you would expose the issue in the existing code.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 1/2] fsck: HEAD is part of refs
  2009-01-31 21:45                 ` Nanako Shiraishi
@ 2009-02-01  0:57                   ` Junio C Hamano
  0 siblings, 0 replies; 25+ messages in thread
From: Junio C Hamano @ 2009-02-01  0:57 UTC (permalink / raw)
  To: Nanako Shiraishi
  Cc: Linus Torvalds, H. Peter Anvin, Ingo Molnar, Git Mailing List

Nanako Shiraishi <nanako3@lavabit.com> writes:

> Quoting Junio C Hamano <gitster@pobox.com>:
>
>> By default we looked at all refs but not HEAD.  The only thing that
>> made fsck not lose sight of comments that are only reachable from a
>> detached HEAD was the reflog for the HEAD.
>>
>> This fixes it, with a new test.
>>
>> Signed-off-by: Junio C Hamano <gitster@pobox.com>
>
> I think you meant to say commits, not comments.

I'll amend when I fix the broken test J6t pointed out.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Something weird is happening...
  2009-01-29 13:45   ` Something weird is happening Sverre Rabbelier
@ 2009-02-01  1:31     ` Junio C Hamano
  0 siblings, 0 replies; 25+ messages in thread
From: Junio C Hamano @ 2009-02-01  1:31 UTC (permalink / raw)
  To: Sverre Rabbelier; +Cc: H. Peter Anvin, Git Mailing List, Ingo Molnar

Sverre Rabbelier <srabbelier@gmail.com> writes:

> On Thu, Jan 29, 2009 at 07:56, Junio C Hamano <gitster@pobox.com> wrote:
>>> Okay, what is going on here?
>
> Is this perhaps related to the problem the github guys were having,
> its sounds similar, problem not showing up until after upgrade,
> missing objects, no?

I do not think so.  The push problem does not lead to any repository
corruption, and does not have anything to do with the fsck misreporting a
blob that exists in an alternate object store as missing, either.

.

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2009-02-01  1:33 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-29  6:24 Something weird is happening H. Peter Anvin
2009-01-29  6:56 ` Junio C Hamano
     [not found]   ` <20090129113846.GA10645@elte.hu>
2009-01-29 12:05     ` Ingo Molnar
2009-01-29 22:20       ` René Scharfe
2009-01-29 23:01         ` Daniel Barkalow
2009-01-31 14:39       ` [PATCH] merge: fix out-of-bounds memory access René Scharfe
2009-01-29 13:45   ` Something weird is happening Sverre Rabbelier
2009-02-01  1:31     ` Junio C Hamano
2009-01-29 10:50 ` Ingo Molnar
2009-01-29 10:52   ` Ingo Molnar
2009-01-29 21:45 ` Junio C Hamano
2009-01-29 22:10   ` H. Peter Anvin
2009-01-29 22:35     ` Ingo Molnar
     [not found]       ` <20090129224357.GA18471@elte.hu>
2009-01-29 22:47         ` H. Peter Anvin
2009-01-29 22:57           ` Junio C Hamano
2009-01-29 23:21             ` Linus Torvalds
2009-01-30  9:12               ` [PATCH 1/2] fsck: HEAD is part of refs Junio C Hamano
2009-01-30  9:27                 ` Johannes Sixt
2009-02-01  0:53                   ` Junio C Hamano
2009-01-30 16:47                 ` Johannes Schindelin
2009-01-31 21:45                 ` Nanako Shiraishi
2009-02-01  0:57                   ` Junio C Hamano
2009-01-30  9:13               ` [PATCH 2/2] fsck: check loose objects from alternate object stores by default Junio C Hamano
2009-01-29 22:34   ` Something weird is happening Ingo Molnar
2009-01-29 22:36     ` 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).