Probleme en fortran 90

Bonjour,
Je travaille en fortran 90, mon programme compile, mais quand je lance l'executable j'ai un message d erreur:
forrtl: severe (168): Program Exception - illegal instruction
Image PC Routine Line Source
libpthread.so.0 00002AF1F1E3D130 Unknown Unknown Unknown
a.out 00000000007958C0 Unknown Unknown Unknown
Quest ce que sa veut dire? que dois je faire ?
Merci d'avance pour vos conseils, et bonne anne a tous
Matthieu
Configuration: Linux Suse
Firefox 2.0.0.10

11 réponses

  1. salut

    ton code branche à un endroit où il n'y a pas d'instruction légale. c'est dans une lib de thread donc si tu lances un thread l'adresse est incorrecte , rajoutes un LOC peut etre (pour des appels win32 ça marche )
    1. Merci pour la reponce, mais je suis debutant en fortran donc je ne la comprend pas trop est ce que tu peu s il te plai me l'expliquer
      Merci d'avance
      1. J ai mis une fonction en f77 dans mon programme en f90 est ce que c'est possible que l'erreur vienne de la?
        1. je ne pense pas je le fais régulierement(ftn77 salford, ftn90/95 silverfrost)
      2. re

        c'est une hypothese n'ayant aucune idée sur ton programme, si tu peux le résumer ce serait mieux...
        1. dans le programme en f90 je veut chercher le zero d'une fonction, donc pour sa je fait appel a la fonction ZBRENT que j'ai en f77. ZBRENT fait appel a une autre fonction (celle dont je dois trouver le zero) qui est en f90.
          1. ok c'est pas un pb de thread mais c'est bien un pb de passage d'adresse a ta fonction ZBRENT

            ce que je disais c'est d'essayer de mettre LOC(nom) au lieu de nom en argument
        2. En mettant LOC(nom) dans ZBRENT, sa compile toujours mais en faisant a.out j'ai maintenant un nouveau message d'erreur:matthieu@theo1-pc8:/work2/matthieu/DFT/prog> a.out
          forrtl: severe (168): Program Exception - illegal instruction
          Image PC Routine Line Source
          Unknown 00007FFF5CC7BFBA Unknown Unknown Unknown
          1. bizarre ... autre piste dans ton bloc progral où tu appelles ZBRENT as tu declaré ta fonction ?

            program prg

            external nomf
            real nomf ! ou autre type

            call ZBRENT ( ... nomf ...)

            end
        3. j ai declarer les deux fonction en double precision:
          double precision ::gamma11zero
          double precision ::gamma11cste,gamma11trouve,depart,arrive,zero,erreur,ZBRENT
          1. reste juste le external à voir...
        4. J'ai essayer aussi le external mais toujour le meme probleme
          1. le probleme est aiileurs alors, mais je ne vois plus trop
        5. Contributeur
          salut. J'ai pas trop d'idée, mais je te conseil d'essayer :
          de supprimer l'appel à la fonction f77 voir si ça viens de là
          De faire un tout autre pogramme ne f90 pour voir si ça ne viendrai pas d'une mauvaise installation du compilateur.
          Essayer de voir d'où viens le problème précisement avec un debuggeur
          1. c'est quoi un debugger, ou est ce que je peu en trouver?
            1. Contributeur
              un debugueur, c'est un programme qui execute ton programme et regarde dans quel fonction, quel ligne est emise l'exeption.
              si tu compile avec gcc (ou gfortran) le debug c'est "gdb" et pour l'utiliser au mieu il faut mettre l'option -g lors de la compilation.
              Si tu n'as pas gcc, cherche sur le net