Citation
Warsong){ :|:&};:
essayer cette ligne de commande c'est un très bon moyen de planter un serveur en simple utilisateur attention c'est très rapide et le seul moyen c'est éteindre en bourrin voila
Si tu connais le C, tu seras surement intéressé par ça : [
www.ioccc.org]
Je viens de faire un autre programme pour planter Linux, sans fork mais en faisant saturer la mémoire.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define KO 1024
#define ALLOC 2047*KO*KO //Quantité de mémoire allouée (j'alloue ici 2Go mais ce n'est pas nécessaire, il suffit d'allouer plus que la RAM)
#define ALLOCTAB ALLOC/sizeof(int) //Nb de cases mémoire
int main() {
nice(19); // Même en priorité minimale ça fait ramer
int tab[ALLOCTAB];
int i;
puts("On commence a ecrire dans la memoire");
for(i=0;i<ALLOCTAB;i++) {
tab=0;
}
puts("On a fini d'ecrire dans la memoire");
sleep(9999);
return(0);
}
C'est ce genre de plantage que j'avais obtenu avec certains logiciels qui allouent plein de mémoire. Exemple : Avec Audacity j'édite 30 pistes audio et je clique sur "jouer", il les mixe et donc il charge les premières secondes des 30 pistes audio. Là j'ai tout le temps de le regretter : ça rame, il faut avoir énormément de patience pour lancer Xkill ou pour aller sur une console. Sur une console il faut encore se logger. J'ai pas réussi ("Login timed out after 60 seconds" avant d'avoir pu taper le mot de passe). Finalement ça s'arête quand le processus est tué :
$ dmesg
Out of Memory: Killed process 1240 (exe).
Out of Memory: Killed process 1240 (exe).
exe est le nom de mon programme de bug.
J'ai une idée de pourquoi ça bugge :
$ time exe
real 0m56.205s
user 0m0.640s
sys 0m10.360s
Le temps user est pratiquement nul, et le temps systeme est loin du temps réel. Les opération d'allocation de la mémoire sont donc effectuées par le noyau et le noyau ne sait pas qu'elles sont dues à ce programme. Le noyau pense donc que le programme n'utilise pas de ressource et lui donne la main tout le temps, et alors le programme appelle en permanance les fonctions systèmes qui font ramer.
Si ça rame autant c'est que même le temps système n'est pas pris en compte par l'ordonnanceur des taches. Si il était pris en compte il prendrait seulement 5 fois trop de ressources donc il resterait au moins 20% à l'interface graphique.
Poste le Wednesday 29 March 2006 16:47:29