En fait je n'ai pas de tableaux.... Quand ma sous-routine quelconque a terminee, elle ecrit le resultat dans un fichier. Et donc pas de risque de depassement de tableaux. Au passagem je n'ai qu'environ 20000-30000 points dans mes loops, donc je ne pense pas que ela soit un probleme de memoire physique (j'ai verifie avec free -t apres chaque iteration, et tout va bien)
En jouant avec gdb, j'ai finalement identifie d'ou venait le probleme... d'une des libraries fortran (donc je ne suis peut-etre plus dan le bon forum ... je vais neanmoins exposer le probleme):
xx0 = dmin1(mn(1),mn(2),mn(3),mn(4))
xx1 = dmax1(mn(1),mn(2),mn(3),mn(4))
idummy = 1
do i = 1,4
if(mn(i).eq.xx0)then
iord(1) = i
elseif(mn(i).eq.xx1)then
iord(4) = i
else
irem(idummy) = i
idummy = idummy+1
endif
enddo
if(mn(irem(1)).le.mn(irem(2)))then
[...]
et irem(2) vaut 1060472881 (et mn va de 1 a 4...), d'ou le segmentation fault.
par contre je ne comprends pas du tout comment irem(2) peut prendre cette valeur. Dams mon cas mn(1)=xx0 et mn(4)=xx1, donc je devrais avoir iord(1)=1, iord(4)=4,irem(1)=2 et irem(2)=3. Ce qui est le cas, sauf pour irem(2) !
[^] # Re: Débordement de tableau ?
Posté par benjf . En réponse au message Segmentation fault incomprehensible. Évalué à 4.
Un grand merci a tous !
[^] # Re: suppositions...
Posté par benjf . En réponse au message Segmentation fault incomprehensible. Évalué à 1.
[^] # Re: Débordement de tableau ?
Posté par benjf . En réponse au message Segmentation fault incomprehensible. Évalué à 1.
En jouant avec gdb, j'ai finalement identifie d'ou venait le probleme... d'une des libraries fortran (donc je ne suis peut-etre plus dan le bon forum ... je vais neanmoins exposer le probleme):
xx0 = dmin1(mn(1),mn(2),mn(3),mn(4))
xx1 = dmax1(mn(1),mn(2),mn(3),mn(4))
idummy = 1
do i = 1,4
if(mn(i).eq.xx0)then
iord(1) = i
elseif(mn(i).eq.xx1)then
iord(4) = i
else
irem(idummy) = i
idummy = idummy+1
endif
enddo
if(mn(irem(1)).le.mn(irem(2)))then
[...]
et irem(2) vaut 1060472881 (et mn va de 1 a 4...), d'ou le segmentation fault.
par contre je ne comprends pas du tout comment irem(2) peut prendre cette valeur. Dams mon cas mn(1)=xx0 et mn(4)=xx1, donc je devrais avoir iord(1)=1, iord(4)=4,irem(1)=2 et irem(2)=3. Ce qui est le cas, sauf pour irem(2) !