|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Dmitry Miloserdov 2:5020/400 15 Sep 2005 20:43:47 To : Slawa Olhovchenkov Subject : Re: malloc() overcommit bug -------------------------------------------------------------------------------- Hello, Slawa! You wrote to Vadim Goncharov on Thu, 15 Sep 2005 19:05:16 +0400: SO> Пишем програмку алоцирующую мегабайт памяти. SO> Пускаем ее на машине с полугигом оперативки и без свопа. SO> Програма в свой мегабайт пишет единицы. SO> Все зашибись, да? SO> Теперь програма делает 1000 fork(). Из них чуть больше половины должны обломиться - ну нет столько памяти. SO> Это законно, поскольку дальше она может сделать exec() на что-то совсем SO> совсем маленькое или вообще быстро завершиться. Кто хочет exec сделает vfork. Форкаться чтобы "быстро завершиться" это как-то вообще лишено смысла. SO> Hо вместо этого каждая копия начинает писать случайные данные в свой SO> мегабайт. В некоторый момент механизм copy-on-write обломается и копии SO> начнут слетать с SEGFAULT. Это не про фрю. SEGV trappable а фря убивает сразу. Причем необязательно копию а может к примеру убить init у которого такт назад выкинули .text а он невовремя проснулся чтобы закопать умирающих а вернуть .text с диска уже некуда итого panic With best regards, Dmitry Miloserdov. E-mail: dmitry@bis.ru --- ifmail v.2.15dev5.3 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/65777446a54a.html, оценка из 5, голосов 10
|