Bonjour,
Je suis en train de développer un code scientifique sur fortran90 et, lors de la compilation, j'ai un "forrtl: sever(174) :SIGSEGV; segmentation fault"
J'ai beau chercher mais je ne trouve pas de raison pour laquelle mon code plante, surtout là où il plante (cf ci dessous).
Je travaille sous Lunix (Tao Linux)
1) j'ai utilisé la compilation : ifort -O3 -CB ,ainsi lors des dépacements de tableau je suis averti (cause principale des segmentation fault),
2) j'ai également regardé l'évolution de la mémoire vive lorsque que mon code "tourne" et je ne dépasse pas les 50% des ressources.
En mettant pause après "print *,rate1" afin de bien voir où ça plantait (car entre le temps entre l'affichage sur l'écran de rate1 et le segmentation fault il se peut que le programme aie effectué d'autres opérations).
J'ai réussi à identifier où mon code plantait :
1 2 3 4
| print *,'6',qvib_TS,qvib,kb,Temp,h,Ediff
print *,'le calc',1e5*(qvib_TS/qvib)*(kb*Temp/h)*exp(-Ediff/(kb*Temp))
rate1=1e5*(qvib_TS/qvib)*(kb*Temp/h)*exp(-Ediff/(kb*Temp))
print *,rate1 |
Le programme parvient à faire ces opérations jusqu'à un moment où il plante entre
print *,'le calc',1e5*(qvib_TS/qvib)*(kb*Temp/h)*exp(-Ediff/(kb*Temp))
et
avec segmentation fault.
Et je ne sais pas pourquoi.
Est-ce que quelqu'un a une idée du pourquoi comment.
Merci de votre aide.
Nikosnikov
Partager