|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Vadim Goncharov 2:5020/400 14 Sep 2005 13:09:11 To : All Subject : malloc() overcommit bug --------------------------------------------------------------------------------
Мне тут сказали, что во фре всех версий и линуксе с ядрами версий менее
2.6 есть дефект VM: при попытке использования выделенной
malloc()/calloc() памяти приложение может быть убито по segfault, хотя
malloc() вернул не NULL.
Hа винде, солярке, HPUX такой проблемы, как говорят, нет.
Hа ядрах 2.6 и выше линукса это можно отключить установкой
/proc/sys/vm/overcommit_memory в 2.
Hиже следует код, которым это можно проверить. Я пробовал на фре 4.11
из-под юзера - у него лимит, все проходит нормально. Из-под root'а он
почему-то не дал этой программе даже мегабайта выделить.
Hа линуксе 2.6 с настройками по умолчанию один процесс успешно получил
полтора Гб; из двух одновременно запущенных процессов (каждый сообщил,
что выделил по полтора Гб) один был убит.
Действительно ли такой баг есть во FreeBSD всех версий и будут ли его
фиксить?
#include <unistd.h>
/* http://alter.tomsk.ru/bugs/head/ */
/* (C) Vladimir */
/* alter at alter tom ru */
int main(int argc, char **argv){
#define MB 1048576
const size_t step = MB;
size_t size = (size_t) 4095 * MB;
char *p;
printf("%s $Rev: 54 $\n", argv[0]);
printf("start size = %u MiB, step = %uMiB\n", size / MB, step / MB);
for(;size;){
p = (char *)malloc(size);
if(p){
printf("allocated %u MiB\n", size / MB);
puts("calling bzero()...");
puts("NEXT MESSAGE SHOULD BE \"*** OK ***\", ELSE - THERE IS BUG IN A
KERNEL");
bzero(p, size);
puts("*** OK *** Seems this OS doesn't contain the bug!");
return(0);
}
else {
size -= step;
}
}
return(0);
}
--
WBR, Vadim Goncharov. ICQ#166852181 mailto:vadim_nuclight@mail.ru
[Moderator of RU.ANTI-ECOLOGY][FreeBSD][http://antigreen.org][LJ:/nuclight]
--- slrn/0.9.8.1 on FreeBSD 4.11/i386
* Origin: Nuclear Lightning @ Tomsk, TPU AVTF Hostel (2:5020/400@fidonet)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/103597175a938.html, оценка из 5, голосов 10
|