|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Slawa Olhovchenkov 2:5030/500 15 Sep 2005 22:13:00 To : Dmitry Miloserdov Subject : malloc() overcommit bug -------------------------------------------------------------------------------- 15 Sep 05, Dmitry Miloserdov writes to Slawa Olhovchenkov: SO>>>> Пишем програмку алоцирующую мегабайт памяти. SO>>>> Пускаем ее на машине с полугигом оперативки и без свопа. SO>>>> Програма в свой мегабайт пишет единицы. SO>>>> Все зашибись, да? SO>>>> Теперь програма делает 1000 fork(). DM>>> Из них чуть больше половины должны обломиться - ну нет столько DM>>> памяти. SO>> Что значит нету? Ты чё? DM> Hу "нету". Hе купили. Полгига есть а нужно чуть больше гига. Hет. чуть больше мега нужно. SO>>>> мегабайт. В некоторый момент механизм copy-on-write обломается и SO>>>> копии начнут слетать с SEGFAULT. DM>>> Это не про фрю. SEGV trappable а фря убивает сразу. Причем DM>>> необязательно копию а может к примеру убить init у которого такт DM>>> назад выкинули .text а он невовремя проснулся чтобы закопать DM>>> умирающих а вернуть .text с диска уже некуда итого panic SO>> Это ты прогнал не разобравшись, как мне кажется. DM> Проверяй - это несложно. Программа из 1 строчки "main() { malloc }" DM> и несколько десятков копий ее с соответствующей MALLOC_OPTION DM> Обычно первым обычно мрет одна из копий потом syslog радостно возвестивший DM> о конце свопа а потом как повезет. Это не проверка, а профанация какая-то. Где тут видно, что помирание идет от попытки _подкачать_ что-либо с диска? ... - Доктоp, я вчеpа Windows... - К ГИHЕКОЛОГУ! --- GoldED+/BSD 1.1.5 * Origin: (2:5030/500) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/22214329ba49.html, оценка из 5, голосов 10
|