# Re: git-svn -- out of memory

2 messages from 2009-02-16 to 2009-02-16. Participants: Alfred M. Szmidt, Jeff King.
Thread: https://gitlist.dev/t/17822

## Alfred M. Szmidt, 2009-02-16 14:23

Subject: Re: git-svn -- out of memory
Message-ID: <1234794220.676511.4320.nullmailer@beryx.hq.kred>
URL: https://gitlist.dev/e/1234794220.676511.4320.nullmailer%40beryx.hq.kred

```
   >    > when doing a `git svn clone' on a subversion repository that contains
   >    > a large file (>1GiB), `git svn' dies with the following:
   >    > 
   >    > ams@trillian:~$ git svn clone REPO -T trunk -b branches -t tags
   >    > [...]
   >    > fatal: Out of memory? mmap failed: Cannot allocate memory
   >    > hash-object -w --stdin-paths: command returned error: 128

   Ding...

   >    > git version 1.6.1.3
   >
   >    Core git requires objects to be able to fit into (virtual) memory.
   >    Adding more swap space should solve the problem for you, but this is not
   >    only a git-svn problem.
   >
   > In this case, the machine has 32G RAM, including ~20G swap.  So I do
   > not think that this is the case, it could be I suppose...

   The hash-object error message sounds like the issue that was fixed with
   915308b (avoid 31-bit truncation in write_loose_object, 2009-01-29).  Does
   v1.6.2-rc1 help?

ams@trillian:~/# git --version
git version 1.6.2.rc1
ams@trillian:~/# git svn clone REPO -T trunk -b branches -t tags
[...]
fatal: Out of memory? mmap failed: Cannot allocate memory
hash-object -w --stdin-paths: command returned error: 128

Nope, behaves the same way.

I'll try adding more swap and see what happens...

Thanks for the help.

```

## Jeff King, 2009-02-16 15:37

Subject: Re: git-svn -- out of memory
Message-ID: <20090216153745.GA22886@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20090216153745.GA22886%40coredump.intra.peff.net
In-Reply-To: <1234794220.676511.4320.nullmailer@beryx.hq.kred>

```
On Mon, Feb 16, 2009 at 03:23:40PM +0100, Alfred M. Szmidt wrote:

> ams@trillian:~/# git --version
> git version 1.6.2.rc1
> ams@trillian:~/# git svn clone REPO -T trunk -b branches -t tags
> [...]
> fatal: Out of memory? mmap failed: Cannot allocate memory
> hash-object -w --stdin-paths: command returned error: 128
> 
> Nope, behaves the same way.

Hmm. It would help to know what object it is failing on. I assume you
repo is too large to be easily shared? If not, can you try instrumenting
hash-object with the patch below and seeing which file it is barfing on?

I'd be curious to see the size of the file (in case it is >2G and we
have another signed integer problem) and its position in the list (in
case we are leaking memory and you are hitting a system limit).

---
diff --git a/hash-object.c b/hash-object.c
index 37e6677..20371d0 100644
--- a/hash-object.c
+++ b/hash-object.c
@@ -44,6 +44,7 @@ static void hash_stdin_paths(const char *type, int write_objects)
 				die("line is badly quoted");
 			strbuf_swap(&buf, &nbuf);
 		}
+		fprintf(stderr, "debug: hashing %s\n", buf.buf);
 		hash_object(buf.buf, type, write_objects, buf.buf);
 	}
 	strbuf_release(&buf);

```
