В чем разница между ошибкой xmalloc cannot allocate n bytes и Killed (pid)?
И проводил тест на следующем скрипте:
#!/bin/bash
> report.log
arr=()
cnt=0
while true; do
let "cnt++"
arr+=({1..10})
(( ($cnt % 100000) == 0 )) && echo "${#arr[*]}" >> report.log
done
Если получаю ошибку переполнения и убийство процесса oom killer: Killed (pid)
То просмотрев журнал (dmesg | egrep 'mem\.bash' | tail -n -2):
[74408.036383] Out of memory: Killed process 6526 (mem.bash) total-vm:1175296kB, anon-rss:657360kB, file-rss:0kB, shmem-rss:0kB, UID:1000
[74408.728476] oom_reaper: reaped process 6526 (mem.bash), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
Но если ошибка xmalloc, то записи о работе oom killer нет.
Почему не вызывается oom killer? На какой-то итерации цикла просисходит ошибка выделения, получается, что oom killer сработает только в случае, если процесс смог выделить память и при этом свободной памяти больше нет?