очень грустная новость. (forkbomb вернулась...)

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Аватара пользователя
DW
Бывший модератор
Сообщения: 662
Статус: и это еще не все или ничего.

очень грустная новость.

Сообщение DW »

бесконеное выполнение форка ведет к полному зависанию машины...
только что проверил - пять строчек кода увели к дальним берегам Слакварь 10... говорят тоже саоме с фдорой, мандоейком и дженту...
выдержали БСД и дебиан...

пять строчек кода убили машину.
в квартире нет штопора.
мартовкий холод.
подумал -> выпил -> подумал -> ... но недавно врачи запретили пить.
Спасибо сказали:
Аватара пользователя
Jan2ary
Бывший модератор
Сообщения: 630
Статус: Тщедушный очкарик

Re: очень грустная новость.

Сообщение Jan2ary »

гм... Так есть вроде ограничения на кол-во процессов...
А ядро какое?
Не шалю, никого не трогаю, починяю примус...
Спасибо сказали:
Аватара пользователя
edoc_modnar
Бывший модератор
Сообщения: 1638
Статус: Форум больше не посещаю

Re: очень грустная новость.

Сообщение edoc_modnar »

А эксплойт-то локальный или удаленный???
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
Спасибо сказали:
Аватара пользователя
aLexx programmer
Сообщения: 985
Статус: Турук-Макто
ОС: Gentoo -> Ubuntu

Re: очень грустная новость.

Сообщение aLexx programmer »

А вы этого не знали???????????? :blink: :blink: :blink: :blink: :blink: :blink: :blink:
У нас в универе который год гуляет по терминальным классам программа "зависон":

Код: Выделить всё

while(1){
  fork();
  malloc(100);
}

Рецепт: ssh <какой-то комп в классе>; <путь_к_программе>/zavison, затем закрываем окно зависшего терминала. Всё. Висим.

P.S. Удивительно совпало, но я полчаса назад во время отладки сортирующей сети именно из-за fork'а 3 раза намертво вешал свой gentoo :(
Спасибо сказали:
Аватара пользователя
Sparky
Сообщения: 604
Статус: core dumped
ОС: Plan 9

Re: очень грустная новость.

Сообщение Sparky »

(aLexx programmer @ Воскресенье, 20 Марта 2005, 23:53) писал(а):А вы этого не знали????????????  :blink:  :blink:  :blink:  :blink:  :blink:  :blink:  :blink:
У нас в универе который год гуляет по терминальным классам программа "зависон":

Код: Выделить всё

while(1){
  fork();
  malloc(100);
}

Рецепт: ssh <какой-то комп в классе>; <путь_к_программе>/zavison, затем закрываем окно зависшего терминала. Всё. Висим.

P.S. Удивительно совпало, но я полчаса назад во время отладки сортирующей сети именно из-за fork'а 3 раза намертво вешал свой gentoo :(


протестировал 2 куска кода :

Код: Выделить всё

#include <stdlib.h>
void main()
{
        while(1)
        {
                malloc(100);
        }
}

сжирается память с 50 Мб до 235Мб и весь своп - все жутко тормозит но можно отменить команду все же.

Код: Выделить всё

#include <sys/types.h>
#include <unistd.h>
void main()
{
        while(1)
        {
                fork();
        }
}

сожралась память до 180 Мб и не тронут своп. Систма практически не тормозит.
Приведу вою конфигурацию:
pentium4-2.26Mhz/256Mb/kernel-2.6.11-gentoo-dev-sources-r3/gcc-3.4.x

так что ИМХО нет причин для паники :D
P.S. кстати проверил код программы зависон :)) Результат как и ожидалось такой же как и при просто malloc(100) B)
Блог
--------------------

GCS/M/MU/P/IT/E d- s: a- C++(+++) UBL++ P->-- L+++$ E- W+++$ N* o? K? w>--
O M-@ V- PS@ PE+ Y+ PGP+ t 5 X R* tv-->- b++ DI? D>+ G e+(++) h--- r+ y++
Спасибо сказали:
Аватара пользователя
DW
Бывший модератор
Сообщения: 662
Статус: и это еще не все или ничего.

Re: очень грустная новость.

Сообщение DW »

#include <pthread.h>
int main(){
while(1)
fork();
return 0;
}

ЛЗУ 512 , П4 2,5 ... но кернел 2.4 - тый... судя по гуглу это и в 2.6 бывает...

а ограниение на процессы, видимо, не срабатывает...
подумал -> выпил -> подумал -> ... но недавно врачи запретили пить.
Спасибо сказали:
Аватара пользователя
Sparky
Сообщения: 604
Статус: core dumped
ОС: Plan 9

Re: очень грустная новость.

Сообщение Sparky »

(D.W. @ Понедельник, 21 Марта 2005, 1:22) писал(а):#include <pthread.h>
int main(){
while(1)
fork();
return 0;
}

ЛЗУ 512 , П4 2,5 ... но кернел 2.4 - тый... судя по гуглу это и в 2.6 бывает...

а ограниение на процессы, видимо, не срабатывает...

Вполне возможно - конечно для чистоты эксперемента неплохо было бы собрать vanilla-sources и протестить на нем, но времени нет этим заниматься.
P.S. Щас попробую использовать frok() из pthread.h.
Надо на 2.6 переходить - пора уже :thumbsup:
Проверил - то же самое, память расходуется до 180Мб дальше ничего. :thumbsup:
Блог
--------------------

GCS/M/MU/P/IT/E d- s: a- C++(+++) UBL++ P->-- L+++$ E- W+++$ N* o? K? w>--
O M-@ V- PS@ PE+ Y+ PGP+ t 5 X R* tv-->- b++ DI? D>+ G e+(++) h--- r+ y++
Спасибо сказали:
Аватара пользователя
valeri_ufo
Бывший модератор
Сообщения: 274
Статус: Everywhere, yet nowhere

Re: очень грустная новость.

Сообщение valeri_ufo »

:D я пол года назад с другом баловался, вешал Slackware 10 и FreeBSD , для меня лично это не новость.
ядро на слаке было 2.6.7 vanilla
Спасибо сказали:
Аватара пользователя
DW
Бывший модератор
Сообщения: 662
Статус: и это еще не все или ничего.

Re: очень грустная новость.

Сообщение DW »

"не новость"... в том-то и дело, что не новость... но, тем не менее, в самых расхожих дистрах такая ошибка... а новое ялро - вот пущай лучше дистр под него соберет Патрик, тогда и можно переходить, чем потом какую годость отлавливать.
подумал -> выпил -> подумал -> ... но недавно врачи запретили пить.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: очень грустная новость.

Сообщение t.t »

(D.W. @ Понедельник, 21 Марта 2005, 7:00) писал(а):"не новость"... в том-то и дело, что не новость... но, тем не менее, в самых расхожих дистрах такая ошибка... а новое ялро - вот пущай лучше дистр под него соберет Патрик, тогда и можно переходить, чем потом какую годость отлавливать.
У вас что, ещё 2.6 нету?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: очень грустная новость.

Сообщение madskull »

(t.t @ Понедельник, 21 Марта 2005, 10:58) писал(а):
(D.W. @ Понедельник, 21 Марта 2005, 7:00) писал(а):"не новость"... в том-то и дело, что не новость... но, тем не менее, в самых расхожих дистрах такая ошибка... а новое ялро - вот пущай лучше дистр под него соберет Патрик, тогда и можно переходить, чем потом какую годость отлавливать.
У вас что, ещё 2.6 нету?


... тогда мы идем к вам...

Проверил на asp 10 (других машин, которых не жалко, под рукой не оказалось)
perl -we 'while(1){fork}'

Машина теперь занята только убиванием процессов... хотя и не "висит намертво".
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
polachok
Бывший модератор
Сообщения: 2199
Статус: главный форумный маргинал
ОС: gnu/linux

Re: очень грустная новость.

Сообщение polachok »

#include <stdlib.h>
void main()
{
      while(1)
      {
              malloc(100);
      }
}

не сильно тормозит.
#include <sys/types.h>
#include <unistd.h>
void main()
{
      while(1)
      {
              fork();
      }
}

тормозило секунд 5 - потом процессы были убраны из running и все стало *почти* нормально. даже музыка в beep'e нормально идет.
создается не более 1847 процессов
#include <pthread.h>
int main(){
while(1)
fork();
return 0;
}

сей вариант аналогичен двум другим - отсюда правило - во FreeBSD надо юзать SCHED_ULE :)
вот так-то. тестировалось на FreeBSD-5.4-PRERELEASE, SCHED_ULE.


polachok добавил в 21.03.2005 13:40

PIII-866, 256mb RAM, 487 swap

polachok добавил в 21.03.2005 13:41

заглянул на первую консоль - maxproc limit exceeded - see tuning & login.conf =)
И немедленно выпил.
Спасибо сказали: