gitml.jexpert@recursor.net writes:
quoted
Regardless of any possible fault in git-svn, there's an obvious bug here
with git-fsck. Can you share the pack (if the project is public) or
compile a git-fsck without optimization and with debugging, and run it
under valgrind, to hopefully get us a backtrace of where the memory
management goes off the rails?
Unfortunately I'm unable to share the pack.
As Java Developer I'm note very savy, but I'd try.
Do you have me any pointers on ".. without optimization and with
debugging" and "run it under valgrind"?
Currently I used
deb http://ppa.launchpad.net/git-core/ppa/ubuntu quantal main
as source.
Try something like
# The package names might be wrong and/or you may need additional -dev
# packages, I don't know the specifics for ubuntu
apt-get install gcc make valgrind libcurl-dev zlib-dev
cd
git clone git://git.kernel.org/pub/scm/git/git.git
cd git
echo 'CFLAGS = -O0 -g' >>config.mak
make
cd /path/to/repo
valgrind --track-origins=yes ~/git/git-fsck
It'll be very slow, at least 20x the normal runtime, so don't be
surprised if it doesn't seem to get anywhere at first.
--
Thomas Rast
trast@{inf,student}.ethz.ch
Great! Thank you all guys for your extensive instructions!
@Thomas: I only had to add libexpat1-dev to the list.
I checked out Git v1.8.3.4 as this was my used verion and built as
instructed. The error is still reproducible using the "CFLAGS = -O0 -g"
build.
So - now the puzzling thing: With valgrind it seems to work!
If I run it plain, it doesn't:
/tmp/project.git $ valgrind --track-origins=yes ~/projects/git.git/git-fsck
==3431== Memcheck, a memory error detector
==3431== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==3431== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==3431== Command: /home/ben/projects/git.git/git-fsck
==3431==
==3431== Warning: set address range perms: large range [0x70b5000, 0x2b0ff000) (defined)
Checking object directories: 100% (256/256), done.
==3431== Warning: set address range perms: large range [0x3959d000, 0x49d53000) (defined)
Checking objects: 100% (63588/63588), done.
Checking connectivity: 68696, done.
==3431==
==3431== HEAP SUMMARY:
==3431== in use at exit: 7,574,911 bytes in 15,428 blocks
==3431== total heap usage: 422,498 allocs, 407,070 frees, 4,396,939,465 bytes allocated
==3431==
==3431== LEAK SUMMARY:
==3431== definitely lost: 0 bytes in 0 blocks
==3431== indirectly lost: 0 bytes in 0 blocks
==3431== possibly lost: 0 bytes in 0 blocks
==3431== still reachable: 7,574,911 bytes in 15,428 blocks
==3431== suppressed: 0 bytes in 0 blocks
==3431== Rerun with --leak-check=full to see details of leaked memory
==3431==
==3431== For counts of detected and suppressed errors, rerun with: -v
==3431== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 2)
/tmp/project.git $ ~/projects/git.git/git-fsck
Checking object directories: 100% (256/256), done.
error: packed 49cdd0b21a351f3366008615d2cf8d03ca943978 from .git/objects/pack/pack-6a6f5355584a5d71215d5fc867ce09602ceab533.pack is corrupt
*** glibc detected *** <unknown>: free(): invalid pointer: 0x00007f8576682010 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7eb96)[0x7f85ad765b96]
[0x4e727c]
I'm using a i5-3340M on Linux Mint 14 with a offical Linux 3.9.9
gcc (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2
Any further hints?
Try something like
# The package names might be wrong and/or you may need additional -dev
# packages, I don't know the specifics for ubuntu
apt-get install gcc make valgrind libcurl-dev zlib-dev
cd
git clone git://git.kernel.org/pub/scm/git/git.git
cd git
echo 'CFLAGS = -O0 -g' >>config.mak
make
cd /path/to/repo
valgrind --track-origins=yes ~/git/git-fsck
It'll be very slow, at least 20x the normal runtime, so don't be
surprised if it doesn't seem to get anywhere at first.