Originally posted by: mjpap
Hi!
I recently installed git 2.15 on an AIX 6.1 machine. It works well in general but runs out of memory when cloning a big repository:
remote: Counting objects: 230333, done
remote: Finding sources: 100% (2527/2527)
fatal: Out of memory, malloc failed (tried to allocate 284325362 bytes)
fatal: index-pack failed
This was surprising to me because /opt/freeware/bin/git is a symlink to git_64 which is a 64-bit executable as expected. I also made sure that the appropriate data segment size and max memory size ulimit settings were set to "unlimited".
Monitoring the system calls with truss showed that git eventually executed "/opt/freeware/libexec/git-core/git index-pack". /opt/freeware/libexec/git-core/git-index-pack is a 32-bit executable which does not even have maxDATA set to allow more than 256 MiB data.
I could work around the out-of-memory problem by setting the environment variable LDR_CNTRL=MAXDATA=0x80000000@DSA before calling git so that also the 32-bit binaries could use 3+ GiB of data.
However, I would expect the 64-bit git executable to execute programs from /opt/freeware/libexec64/git-core (which contains 64-bit binaries), not /opt/freeware/libexec/git-core. I have not found a way to force git to do this. Neither executing git_64 nor /opt/freeware/libexec64/git-core/git convinces git to use binaries from libexec64 instead of libexec.
Is this a bug in the AIX compilation/configuration of git? Under which circumstances does git use libexec64 instead of libexec?