Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 malloc() overcommit bug   Vadim Goncharov   14 Sep 2005 13:09:11 
 Re: malloc() overcommit bug   Valentin Nechayev   15 Sep 2005 09:57:21 
 Re: malloc() overcommit bug   Vadim Goncharov   15 Sep 2005 14:59:13 
 Re: malloc() overcommit bug   Kostik Belousov   15 Sep 2005 19:56:39 
 Re: malloc() overcommit bug   Vadim Goncharov   15 Sep 2005 20:19:27 
 Re: malloc() overcommit bug   Kostik Belousov   16 Sep 2005 11:42:16 
 Re: malloc() overcommit bug   Vadim Goncharov   16 Sep 2005 18:24:16 
 Re: malloc() overcommit bug   Kostik Belousov   16 Sep 2005 18:37:25 
 Re: malloc() overcommit bug   Vadim Goncharov   16 Sep 2005 18:54:38 
 Re: malloc() overcommit bug   Valentin Nechayev   16 Sep 2005 13:38:12 
 Re: malloc() overcommit bug   Kostik Belousov   16 Sep 2005 14:14:42 
 Re: malloc() overcommit bug   Valentin Nechayev   16 Sep 2005 14:42:59 
 Re: malloc() overcommit bug   Kostik Belousov   16 Sep 2005 15:38:35 
 Re: malloc() overcommit bug   Dmitry Miloserdov   16 Sep 2005 19:00:13 
 Re: malloc() overcommit bug   Kostik Belousov   16 Sep 2005 19:29:38 
 Re: malloc() overcommit bug   Dmitry Miloserdov   17 Sep 2005 15:23:31 
Архивное /ru.unix.bsd/103597175a938.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional