lkml.org 
[lkml]   [1998]   [Nov]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: FreeBSD & Linux [./fork 500 totally hangs my machine 2.1.127]

Ok, I roll over and die!

Lets kill this thread, and for those of us that needs some education about the
effects of kill -1.

<snipped from man kill>
pid ...
Specify the list of processes that kill should sig-
nal. Each pid can be one of four things. A pro-
cess name in which case processes called that will
be signaled. n where n is larger than 0. The pro-
cess with pid n will be signaled. -1 in which case
all processes from MAX_INT to 2 will be signaled,
as allowed by the issuing user. -n where n is
larger than 1, in which case processes in process
group n are signaled. IFF a negative argument is
given the signal must be specified first, otherwise
it will be taken as the signal to send.
--

And more about the behavior of XFree in the above situation:

Linus Torvalds wrote:

> In article <m0zcWvU-0007U9C@the-village.bc.nu>,
> Alan Cox <alan@lxorguk.ukuu.org.uk> wrote:
> >> I did put in one sleep and tested on my macine:
> >> ./fork 100 - 1 sec
> >> ./fork 200 - 2 sec
> >> ./fork 300 - 2 sec
> >> ./fork 400 - 3 sec
> >> ./fork 500 *** My machine totally hangs.
> >>
> >> Please Alan, Can you explain this or is this some bug in the kernel??
> >
> >Looks like a 2.1.127 bug - 2.0.36pre16 didnt fall over, 2.1.127 did
>
> Umm, 2.1.127 doesn't fall over either. But if you run this as root (and
> judging by the number of processes you had, you did), then the program
> is buggy enough that you will essentially kill the system..
>
> Look at what you do: you do a large number of "fork()" calls, and you
> save the pid's off into an array if they are non-zero. IN PATICULAR:
> when you don't have any more processes left, and fork() returns -1, you
> will save that off as a pid without noticing (the test for the return
> value of fork() is "== 0" for the child, and the parent never tests for
> errors).
>
> Now, that part is fine. The part that ISN'T fine is when you try to
> kill off the children: you will do a "kill(-1, SIGKILL)". Oops. You
> just killed off every single process in the system (init, login, etc
> etc), and the system is dead.

>
> If the same thing doesn't happen under 2.0.36, then the only thing I can
> think of is (a) NR_TASKS is larger? or (b) you didn't run it as root.
>
> Because your program is _supposed_ to kill the system as it is written.
> Oh, the dangers of running buggy programs as root.
>
> [ If you run it as a normal user, you'll just be logged out when you
> kill yourself, unless you kill the X server in which case you'll have
> to get in through the network and restart it due to the XFree86
> misfeature we all know and love ]
>
> Linus


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:45    [W:0.126 / U:0.300 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site