Re: http git clone memory problem.
- From
- Benjamin Sergeant <bsergean@gmail.com>
- Date
- Jul 24, 2007, 20:13 UTC
- Message-ID
- <1621f9fa0707241313m7d975388gac677cb1314a87a2@mail.gmail.com>
- In-Reply-To
- <1621f9fa0707241053i23f0e3d4v4a1d50f5a4c5f9e6@mail.gmail.com>
It's pretty random actually. Sometimes it ends like this:
Getting pack ffecdbabefeb7d684650f6c920c53c384bc65b5e which contains f6c066fe62e97e3d93d10628318fe62de667b25b got 12192695f4e402f7385728f14496ab807caeb0b8 error: File 33da1ff3b31eee2635cb105a5b15fab3362f6af7 has bad hash error: Unable to find 33da1ff3b31eee2635cb105a5b15fab3362f6af7 under http://www.kernel.org/pub/scm/git/git.git Cannot obtain needed blob 33da1ff3b31eee2635cb105a5b15fab3362f6af7 while processing commit a196f6d93a21ebac9befc4b52a2b0586471b5fa4.
with no crash.
And sometimes with Getting index for pack ffecdbabefeb7d684650f6c920c53c384bc65b5e *** glibc detected *** git-http-fetch: corrupted double-linked list: 0x080a4360 ***
Is there a way to reproduce the crash with this "ffecdbabefeb7d684650f6c920c53c384bc65b5e", the pack id (the sha1) ?
Benjamin.
A strace version of the crash:
I tried valgrind once but after 30 minutes nothing happened, I could not even see the process with ps ... I also tried strace.
A strace version of the cannot obtain needed blob:
got 7579c7107c6b5387fe1e30a0969dcb65d22e4cbf
walk abb503d1fc5802e5de9d5b4a0cb710e87d2b1ba4
Getting alternates list for http://www.kernel.org/pub/scm/git/git.git
Getting pack list for http://www.kernel.org/pub/scm/git/git.git
Getting pack 4146ab3638605f4b364bcf90d377e22c083a3d35
which contains eb7afba88c1bb4d755d23ca3aafe6d0874b848d0
got da5044940771800d0c7f0f28f269c40297860764
got 39af6c9c8112607fb780f3361c5362f587ab629f
got e3859e2a8a4ff8b9c51e1ebe430fa5bf0fd3d261
got 1ea0f745bd0996e7f30e07f472b79ca0ed578510
got c4bb30d92e0156760d07ebcc3bb3d637aebe9606
got 81536ec1557d84897ebb8565597ef7647fc770b9
error: Unable to find 11ea73c1cc3565eeabff27ef2d3619a5fb5381fd under
http://www.kernel.org/pub/scm/git/git.git
Cannot obtain needed blob 11ea73c1cc3565eeabff27ef2d3619a5fb5381fd
while processing commit abb503d1fc5802e5de9d5b4a0cb710e87d2b1ba4.
Waiting for http://www.kernel.org/pub/scm/git/git.git/objects/29/d8eccef4b9cf30704eaa6428131d788675dad8
got c1c7267135b50ebc653e2c16a73ba3e5c454e1e8
got 2623ef30134cc3f2cf715ba302c3cfa2b3527a48
got 29d8eccef4b9cf30704eaa6428131d788675dad8
[{WIFEXITED(s) && WEXITSTATUS(s) == 1}], 0) = 20387
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, 0xbfd1ba08, WNOHANG) = -1 ECHILD (No child processes)
sigreturn() = ? (mask now [])
rt_sigaction(SIGINT, {0x808d1b0, [], 0}, {0x807ada0, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
stat64("/home", {st_mode=S_IFDIR|0755, st_size=360, ...}) = 0
stat64("/home/bsergean", {st_mode=S_IFDIR|0711, st_size=7480, ...}) = 0
stat64("/home/bsergean/sandbox", {st_mode=S_IFDIR|0755, st_size=528, ...}) = 0
stat64("/home/bsergean/sandbox/git", {st_mode=S_IFDIR|0755,
st_size=72, ...}) = 0
stat64("/home/bsergean/sandbox/git", {st_mode=S_IFDIR|0755,
st_size=72, ...}) = 0
chdir("/home/bsergean/sandbox") = 0
stat64("/bin/rm", {st_mode=S_IFREG|0755, st_size=36316, ...}) = 0
stat64(".", {st_mode=S_IFDIR|0755, st_size=528, ...}) = 0
stat64("/home/bsergean/git/bin/rm", 0xbfd1ce1c) = -1 ENOENT (No such
file or directory)
stat64("/home/bsergean/git/bin/rm", 0xbfd1ce1c) = -1 ENOENT (No such
file or directory)
stat64("/usr/local/Trolltech/Qt-4.3.0/bin/rm", 0xbfd1ce1c) = -1 ENOENT
(No such file or directory)
stat64("/usr/lib/ccache/bin/rm", 0xbfd1ce1c) = -1 ENOENT (No such file
or directory)
stat64("/home/bsergean/bin/rm", 0xbfd1ce1c) = -1 ENOENT (No such file
or directory)
stat64("/home/bsergean/bin/Linux/rm", 0xbfd1ce1c) = -1 ENOENT (No such
file or directory)
stat64("/usr/local/bin/rm", 0xbfd1ce1c) = -1 ENOENT (No such file or directory)
stat64("/home/bsergean/git/bin/rm", 0xbfd1ce1c) = -1 ENOENT (No such
file or directory)
stat64("/usr/local/Trolltech/Qt-4.3.0/bin/rm", 0xbfd1ce1c) = -1 ENOENT
(No such file or directory)
stat64("/usr/lib/ccache/bin/rm", 0xbfd1ce1c) = -1 ENOENT (No such file
or directory)
stat64("/home/bsergean/bin/rm", 0xbfd1ce1c) = -1 ENOENT (No such file
or directory)
stat64("/home/bsergean/bin/Linux/rm", 0xbfd1ce1c) = -1 ENOENT (No such
file or directory)
stat64("/usr/local/bin/rm", 0xbfd1ce1c) = -1 ENOENT (No such file or directory)
stat64("/usr/local/Trolltech/Qt-4.3.0/bin/rm", 0xbfd1ce1c) = -1 ENOENT
(No such file or directory)
stat64("/usr/lib/ccache/bin/rm", 0xbfd1ce1c) = -1 ENOENT (No such file
or directory)
stat64("/home/bsergean/bin/rm", 0xbfd1ce1c) = -1 ENOENT (No such file
or directory)
stat64("/home/bsergean/bin/Linux/rm", 0xbfd1ce1c) = -1 ENOENT (No such
file or directory)
stat64("/usr/local/bin/rm", 0xbfd1ce1c) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/distcc/bin/rm", 0xbfd1ce1c) = -1 ENOENT (No such file
or directory)
stat64("/usr/bin/rm", 0xbfd1ce1c) = -1 ENOENT (No such file or directory)
stat64("/bin/rm", {st_mode=S_IFREG|0755, st_size=36316, ...}) = 0
stat64("/bin/rm", {st_mode=S_IFREG|0755, st_size=36316, ...}) = 0
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [], 8) = 0
clone(child_stack=0,
flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD,
child_tidptr=0xb7dab988) = 20388
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGINT, {0x807ada0, [], 0}, {0x808d1b0, [], 0}, 8) = 0
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0) = 20388
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, 0xbfd1cb18, WNOHANG) = -1 ECHILD (No child processes)
sigreturn() = ? (mask now [])
rt_sigaction(SIGINT, {0x808d1b0, [], 0}, {0x807ada0, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
exit_group(1) = ?
Process 20362 detachedOn 7/24/07, Benjamin Sergeant <bsergean@gmail.com> wrote:
Show 66 quoted lines
> On 7/24/07, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote: > > Hi, > > > > On Tue, 24 Jul 2007, Benjamin Sergeant wrote: > > > > > I still have the segfault with 1.5.2.4. If I try to gdb it, it abort > > > before I can do anything. Is there an environment variable that I can > > > set to disable signal handling or something in git ? > > > > Did you gdb http-fetch? > > > > If not, please use "sh -x git-clone..." to find out what command line to > > use. > > > > And when you have the command line, please use valgrind to find out where > > the leak/corruption is. > > > > There are some flags that are automatically set/unset when compiling the > > http transport, and it is not easy to know which flags are enabled in your > > setup. > > > > But for starters, you might want to recompile http-fetch without -O2. My > > gdb always has problems attributing the correct line, which does not > > exactly make it easier for me to debug things. I could imagine your gdb > > is as annoying. > > > > Ciao, > > Dscho > > I got that, but it's not super-usefull ... I will try valgrind instead. > > [bsergean@marge1 sandbox]$ gdb /home/bsergean/git/bin/git-clone > /tmp/corefiles/core.18531 > GNU gdb 6.6-1mdv2007.1 (Mandriva Linux release 2007.1) > Copyright (C) 2006 Free Software Foundation, Inc. > GDB is free software, covered by the GNU General Public License, and you are > welcome to change it and/or distribute copies of it under certain conditions. > Type "show copying" to see the conditions. > There is absolutely no warranty for GDB. Type "show warranty" for details. > This GDB was configured as "i586-mandriva-linux-gnu"... > "/home/bsergean/git/bin/git-clone": not in executable format: File > format not recognized > (no debugging symbols found) > Using host libthread_db library "/lib/i686/libthread_db.so.1". > Core was generated by `git-http-fetch -v -a -w remotes/origin/html > cc13f556fc72f6f0670e61599363f6e3277'. > Program terminated with signal 6, Aborted. > #0 0xbfffe410 in __kernel_vsyscall () > (gdb) where > #0 0xbfffe410 in __kernel_vsyscall () > #1 0xb7c78590 in ?? () > #2 0xb7d7aff4 in ?? () > #3 0xb7bd7aa0 in ?? () > #4 0xbf928f84 in ?? () > #5 0xb7c79e21 in ?? () > #6 0x00000006 in ?? () > #7 0xbf928ef8 in ?? () > #8 0x00000000 in ?? () > > > > > > > > > >