Re: Linux supporte-t-il les fichiers creux ?

Top Page

Reply to this message
Author: Edgar Bonet
Date:  
To: guilde
Subject: Re: Linux supporte-t-il les fichiers creux ?
Le mardi 6 janvier, Xavier Bestel a écrit :
> Tout d'abord, il est normal qu'un core aie des trous: il représente
> l'image de la mémoire vue par le process à un moment donné. La carte
> mémoire n'est pas continue sous linux: le code de l'exécutable est à
> 0x08048000, suivis des mmap() et brk(), les bibliothèques et la mémoire
> partagée à 0x40000000, et la pile sous 0xc0000000 (juste avant le
> kernel). Le comme il y a plein de mémoire "non mappée" entre ces zones,
> elles ne sont pas physiquement écrites dans le fichier. Ça fait des
> trous.


Je ne crois pas que les trous dans le fichier core correspondent à ces
trous dans l'espace adressable. Si c'était le cas les fichiers core
auraient une taille (d'après ls -l) énorme. Or ce n'est pas forcément le
cas : les commandes

    ulimit -c unlimited
    echo "void _start(void) { *(int *) 0 = 0; }" > crash.c
    gcc -c crash.c && ld crash.o -o crash
    ./crash


me font un fichier core de 12 ko sans trous. Avec

    echo "int main(void) { int i=1; return *(int *) 0; }" > crash.c
    gcc crash.c -o crash


j'ai un core de 60 ko dont 8 ko de trou. Sa taille allouée est de 56 ko
(52 de données et 4 dans un bloc de pointeurs).

Edgar.

-- 
Edgar Bonet           Maison : 04 76 21 29 16    Bureau : 04 76 88 10 96
3 rue Jean Prévost    Mobile : 06 77 19 79 39    Fax    : 04 76 88 11 91
38000 Grenoble        guilde@???     www.edgar-bonet.org