The limiting of memory via --max-memory does not work properly on macOS. For example, if you run
$ retdec-fileinfo --max-memory=4096 FILE
the analysis (properly) fails on Linux and Windows, but finishes successfully on macOS. The reason is that on macOS, the following piece of code from src/utils/memory.cpp compiles, runs, returns 0 (success), but does actually not do anything:
struct rlimit rl = {
.rlim_cur = limit, // Soft limit.
.rlim_max = RLIM_INFINITY // Hard limit (ceiling for rlim_cur).
};
auto rc = setrlimit(RLIMIT_AS, &rl);
From what I was able to find, setrlimit() with RLIMIT_AS is broken on macOS and simply does not work.
What is the proper way of programmatically limiting virtual memory on macOS? Feel free to submit a PR that fixes the implementation of limitSystemMemoryOnMacOS() in src/utils/memory.cpp.
The limiting of memory via
--max-memorydoes not work properly on macOS. For example, if you runthe analysis (properly) fails on Linux and Windows, but finishes successfully on macOS. The reason is that on macOS, the following piece of code from
src/utils/memory.cppcompiles, runs, returns 0 (success), but does actually not do anything:From what I was able to find,
setrlimit()withRLIMIT_ASis broken on macOS and simply does not work.What is the proper way of programmatically limiting virtual memory on macOS? Feel free to submit a PR that fixes the implementation of
limitSystemMemoryOnMacOS()insrc/utils/memory.cpp.