[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Rechner töten



Markus Raab wrote:
Gerhard Brauer wrote:

Meine Versuche mit malloc scheiterten kläglich ;-) Wenn ich Speicher
größer mem+swap reserviere kriege ich nur einen Null pointer. Wenn ich
knapp drunter bleibe und in den Pointer reinschreibe killt der Kernel
irgendwann (neben anderem "unwichtigem Zeug") meinen eigenen Prozeß.

Stimmt, so ähnlich habe ich das bei gerade auch beobachtet. Ein malloc(x)==NULL lässt sich wohl nicht abfangen...

Du bist schon auf den richtigen Weg. Jetzt baue am Ende noch ein while
fork() mit ein bissi Wartezeit ein, dann killt der Kernel zwar
trotzdem, aber du hast immer einen neuen Prozess der dir den Memory
füllt.

Ich habe jetzt mal ein Beispiel aus meinem schlauen Buch dementsprechend etwas angepasst. Simulierte zumindest bei mir einen Runaway-Process, der nach und nach den Speicher füllt und hübsche Load verursacht. Was am Ende passiert, wollte ich dann doch nicht mehr probieren...:

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

#define ONE_K (1024)

int main(){
        char *some_memory;
        int size_to_allocate = ONE_K;
        int megs_obtained = 0;
        int ks_obtained = 0;

        while(1){
                for (ks_obtained =0; ks_obtained < 1024; ks_obtained++){
                        some_memory = (char *)malloc(size_to_allocate);
                        if (some_memory == NULL) exit(EXIT_FAILURE);
                        sprintf(some_memory, "touched");
                        // send child to a dead end sleep
                        if (!fork()) for(;;) ;
                }
                megs_obtained++;
                printf("Now allocated %d Megabytes\n", megs_obtained);
        }
        exit(EXIT_SUCCESS);
}

Und dann eventuell mal das ! vor dem fork() entfernen.

hth, Wolf
--
..., aber nur, wer sich vom Stumpf- und Wahnsinn ein Bild machen kann, ist auch in der Lage, dies für sich zu bewerten und ist nicht auf den 'großen Bruder' angewiesen. Nur wer Zugriff auf möglichst viel Information hat, kann auch darüber urteilen, was Fehlinformation ist. (GHopper im Heise-Forum)



Reply to: