Hello, Ludovic Courtès <l...@gnu.org> skribis:
>> GC Warning: Failed to expand heap by 285216768 bytes >> GC Warning: Failed to expand heap by 268439552 bytes >> GC Warning: Out of Memory! Heap size: 3620 MiB. Returning NULL! >> Warning: Unwind-only out of memory exception; skipping pre-unwind handler. >> Warning: Unwind-only out of memory exception; skipping pre-unwind handler. >> Warning: Unwind-only out of memory exception; skipping pre-unwind handler. >> >> (excerpt from https://ci.guix.gnu.org/build/1702995/log/raw) >> >> Not sure why this phase uses so much memory. Ideas? > > Yes: the gremlin.scm code uses ‘file-dynamic-info’, which loads the > whole file in memory. Ridiculous. > > We should instead mmap it (but there are no ‘mmap’ bindings in Guile, > yet) or arrange to load just the relevant parts (we’ll have to check but > maybe ‘file-dynamic-info’ can find everything it needs at the beginning > of a file, the PT_DYNAMIC segment.) Another instance of the problem that we just stumbled upon is ‘guix pack -RR’: that too tries to load entire ELF files in memory, in ‘elf-loader-compile-flags’. Mmap! Ludo’.