Please describe the problem.

git update-index --refresh bigfile fails with fatal: Out of memory, realloc failed

What steps will reproduce the problem?

Have sizeOf bigfile > sizeOf memory?

What version of git-annex are you using? On what operating system?

git-annex version: 7.20181205 Debian sid

Please provide any additional information below.

# If you can, paste a complete transcript of the problem occurring here.
# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log

$ GIT_TRACE=1 git update-index --refresh SERIES/bigfile.avi
19:08:14.507885 git.c:418               trace: built-in: git update-index --refresh 'SERIES/bigfile.avi'
19:08:14.536105 run-command.c:643       trace: run_command: 'git-annex smudge --clean '\''CLIPS/otherfile.txt'\'''
19:08:14.560898 git.c:418               trace: built-in: git config --null --list
19:08:14.568523 git.c:418               trace: built-in: git cat-file --batch
19:08:14.575319 git.c:418               trace: built-in: git cat-file '--batch-check=%(objectname) %(objecttype) %(objectsize)'
19:08:14.585333 git.c:418               trace: built-in: git check-attr -z --stdin annex.backend annex.numcopies annex.largefiles --
19:08:14.588845 git.c:418               trace: built-in: git version
SERIES/bigfile.avi: needs update
fatal: Out of memory, realloc failed

$ GIT_TRACE=1 strace git update-index --refresh SERIES/bigfile.avi
lstat("SERIES", {st_mode=S_IFDIR|0755, st_size=754, ...}) = 0
lstat("SERIES/bigfile.avi", {st_mode=S_IFREG|0644, st_size=7130113113, ...}) = 0
write(1, "SERIES/bigfile.avi"..., 105SERIES/bigfile.avi: needs update
) = 105
lstat("SERIES/bigfile.avi", {st_mode=S_IFREG|0644, st_size=7130113113, ...}) = 0
openat(AT_FDCWD, "SERIES/bigfile.avi", O_RDONLY) = 4
openat(AT_FDCWD, "SERIES/.gitattributes", O_RDONLY) = -1 ENOENT (No such file or directory)
mmap(NULL, 7130113113, PROT_READ, MAP_PRIVATE, 4, 0) = 0x7f338b031000
pipe([5, 6])                            = 0
fcntl(6, F_GETFD)                       = 0
fcntl(6, F_SETFD, FD_CLOEXEC)           = 0
clone(child_stack=0x7f35477fdfb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f35477fe9d0, tls=0x7f35477fe700, child_tidptr=0x7f35477fe9d0) = 7442
mmap(NULL, 7130116096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
brk(0x556c98800000)                     = 0x556aef81c000
mmap(NULL, 7130251264, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
mmap(NULL, 7130116096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
mmap(NULL, 7130116096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
mmap(NULL, 7130116096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
brk(0x556c98800000)                     = 0x556aef81c000
mmap(NULL, 7130251264, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
write(2, "fatal: Out of memory, realloc fa"..., 37fatal: Out of memory, realloc failed
) = 37
getpid()                                = 7130
close(3)                                = 0
unlink("/mnt/video/video/.git/index.lock") = 0
exit_group(128)                         = ?
+++ exited with 128 +++

# End of transcript or log.

Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)

Sure, I love it :)