regression in multi-threaded git-pack-index

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

regression in multi-threaded git-pack-index

From: Stefan Zager <hidden>
Date: 2016-06-15 22:56:24

We have uncovered a regression in this commit:

b8a2486f1524947f232f657e9f2ebf44e3e7a243

The symptom is that 'git fetch' dies with:

error: index-pack died of signal 10
fatal: index-pack failed

I have only been able to reproduce it on a Mac thus far; will try ubuntu next.  We can make it go away by running:

git config pack.threads 1

To reproduce it, download this working copy:

http://commondatastorage.googleapis.com/chromium-browser-snapshots/tmp/src.git.tar.gz

Then:

tar xvfz src.git.tar.gz
cd src.git
git fetch origin refs/heads/lkgr

(That is the shortest reproduction I could come up with; sorry).

Thanks,

Stefan

Re: regression in multi-threaded git-pack-index

From: Jeff King <hidden>
Date: 2016-06-15 22:56:25

On Fri, Mar 15, 2013 at 03:42:40PM -0700, Stefan Zager wrote:
We have uncovered a regression in this commit:

b8a2486f1524947f232f657e9f2ebf44e3e7a243

The symptom is that 'git fetch' dies with:

error: index-pack died of signal 10
fatal: index-pack failed

I have only been able to reproduce it on a Mac thus far; will try
ubuntu next.  We can make it go away by running:

git config pack.threads 1
I couldn't reproduce the problem on Linux with the instructions you
gave. I did try running it under valgrind and it produced:

  ==2380== Conditional jump or move depends on uninitialised value(s)
  ==2380==    at 0x441631: resolve_delta (index-pack.c:837)
  ==2380==    by 0x4419D6: find_unresolved_deltas_1 (index-pack.c:898)
  ==2380==    by 0x441A45: find_unresolved_deltas (index-pack.c:914)
  ==2380==    by 0x4427CA: fix_unresolved_deltas (index-pack.c:1232)
  ==2380==    by 0x4421F5: conclude_pack (index-pack.c:1111)
  ==2380==    by 0x443A5C: cmd_index_pack (index-pack.c:1604)
  ==2380==    by 0x4058A2: run_builtin (git.c:281)
  ==2380==    by 0x405A35: handle_internal_command (git.c:443)
  ==2380==    by 0x405C01: main (git.c:532)

but the line in question is:

  if (deepest_delta < delta_obj->delta_depth)

And in the debugger, both of those variables appear to have sane values
(nor should either impacted by the patch you bisected to). On top of
that, running with pack.threads=1 produces the same error. So I think it
may be a false positive from valgrind, and unrelated to your issue.

Other than that, it seems to run fine for me.

-Peff

Re: regression in multi-threaded git-pack-index

From: Duy Nguyen <hidden>
Date: 2016-06-15 22:56:25

On Sat, Mar 16, 2013 at 6:41 PM, Jeff King [off-list ref] wrote:
On Fri, Mar 15, 2013 at 03:42:40PM -0700, Stefan Zager wrote:
quoted
We have uncovered a regression in this commit:

b8a2486f1524947f232f657e9f2ebf44e3e7a243
What version did you test? We used to have problems with multithreaded
index-pack on cywgin because its pread implementation is not
thread-safe, see c0f8654 (index-pack: Disable threading on cygwin -
2012-06-26). Not sure if we fall into the same path on Mac, or this is
something else..
quoted
The symptom is that 'git fetch' dies with:

error: index-pack died of signal 10
fatal: index-pack failed
I guess it won't help much, but what if you enable coredump and get a
stack trace from it?
quoted
I have only been able to reproduce it on a Mac thus far; will try
ubuntu next.  We can make it go away by running:

git config pack.threads 1
-- 
Duy
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help