benjf a écrit 3 commentaires

  • [^] # Re: Débordement de tableau ?

    Posté par  . En réponse au message Segmentation fault incomprehensible. Évalué à 4.

    c'est exactement cela le probleme :)


    Un grand merci a tous !
  • [^] # Re: suppositions...

    Posté par  . En réponse au message Segmentation fault incomprehensible. Évalué à 1.

    comme je l'ai dit plus bas, j'ai environ 20000-30000 elemts dans mes loops. donc je ne pencherais pas trop pour la saturation ...
  • [^] # Re: Débordement de tableau ?

    Posté par  . En réponse au message Segmentation fault incomprehensible. Évalué à 1.

    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) !