problème de mémoire lors de la réinitialisation
Brieuc Jeunhomme
bbp at via.ecp.fr
Fri Apr 20 01:27:37 CEST 2001
> Sous Linux malloc fonctionne toujours, même avec des setrlimit
> partout. S'il renvoie NULL c'est que le tas est corrompu.
Bon, j'ai quand même essayé. J'ai fait tourner les deux programmes
suivants :
bbp at obelix /tmp 0% cat a.c
#include <sys/time.h>
#include <sys/resource.h>
#include <stdio.h>
#include <stdlib.h>
int main ()
{
struct rlimit a;
a.rlim_cur=1000;
a.rlim_max=1000;
setrlimit(RLIMIT_DATA,&a);
setrlimit(RLIMIT_STACK,&a);
setrlimit(RLIMIT_MEMLOCK,&a);
setrlimit(RLIMIT_AS,&a);
printf("%p\n",malloc(2000000));
return 0;
}
bbp at obelix /tmp 0% ./a
(nil)
bbp at obelix /tmp 0% cat b.c
#include <stdio.h>
int main()
{
printf("%p\n",malloc(2000000));
return 0;
}
bbp at obelix /tmp 0% ./b
0x40132008
Donc, ben malloc renvoie parfois NULL et mon hypothèse tient la route,
même si il reste effectivement possible que le problème vienne d'une
corruption du tas.
--
BBP
More information about the vlcs-devel
mailing list