Soutenez-nous
Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Inscrit en
    novembre 2012
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : novembre 2012
    Messages : 14
    Points : 3
    Points
    3

    Par défaut Exception en point flottant (core dumped)

    Bonjour,

    J'ai une erreur qui ne fait pas crash mon programme mais qui m'embête quand même, je n'aime pas les affichage d'erreur.

    Il semblerait que ca vienne de mes 2 fonctions suivantes mais je ne divise nul part par 0 et je n'ai aucune variable en float...

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    /* Les prototypes de mes structures */
     
    typedef enum {Haut, Bas, Droite, Gauche} te_Direction;
    typedef enum {Vide, Ver, Plante} te_Nourriture;
    typedef enum {Rien, Petit, Moyen, Plein, Pierre} te_Etatterre;
    typedef enum {Male, Femelle} te_Sexe;
    typedef enum {Adulte, Jeune} te_Age;
    typedef struct {te_Nourriture Nourriture; int ptNourriture; te_Etatterre eEtatterre; int eTaupes;} t_motte;
    typedef struct {int ePosX; int ePosY; int eSante; te_Sexe Sexe; te_Age Age; int eGestation; int eDelaiGrossesse; } t_rattaupes;
     
    /* Mes fonctions */
     
    void Envoyer_pRattaupe(t_liste* pRattaupe, int32_t eNombreJoueurIncremente, SOCKET* csock){
    	int32_t eNombreRattaupe=0;
    	int32_t epRattaupeContenu[7];
    	t_rattaupes Rattaupe;
     
    	en_tete(pRattaupe);
    	while(!hors_liste(pRattaupe)){
    		eNombreRattaupe++;
    		suivant(pRattaupe);
    	}
     
    	/* Envoie de la structure pRattaupe */
    	eNombreRattaupe= htonl(eNombreRattaupe);
    	send(csock[eNombreJoueurIncremente], (char const*)&eNombreRattaupe, sizeof(eNombreRattaupe), 0);
    	en_queue(pRattaupe);
    	while(!hors_liste(pRattaupe)){
    		valeur_elt(pRattaupe,&Rattaupe);
    		epRattaupeContenu[0]=htonl(Rattaupe.ePosX);
    		epRattaupeContenu[1]=htonl(Rattaupe.ePosY);
    		epRattaupeContenu[2]=htonl(Rattaupe.eSante);
    		epRattaupeContenu[3]=htonl(Rattaupe.Sexe);
    		epRattaupeContenu[4]=htonl(Rattaupe.Age);
    		epRattaupeContenu[5]=htonl(Rattaupe.eGestation);
    		epRattaupeContenu[6]=htonl(Rattaupe.eDelaiGrossesse);
    		send(csock[eNombreJoueurIncremente], (char const*)epRattaupeContenu, sizeof(epRattaupeContenu), 0);
    		precedent(pRattaupe);
    	}
    }
     
    void Envoyer_pMotte(t_motte** pMotte, int eNombreJoueur, int32_t eNombreJoueurPosition, int32_t eTour, SOCKET* csock){
    	int eLigne, eColonne;
    	int eNombreJoueurIncremente;
    	int32_t epMotteContenu[4];
    	int32_t eNombreJoueurPositiontemp = htonl(eNombreJoueurPosition);
    	int32_t eTourtemp = htonl(eTour);
     
    	/* Envoie de la structure pMotte */
    	for(eNombreJoueurIncremente=1;eNombreJoueurIncremente<eNombreJoueur;eNombreJoueurIncremente++){
    		for(eLigne=1;eLigne<elmax-1;eLigne++){
    			for(eColonne=1;eColonne<ecmax-1;eColonne++){
    				epMotteContenu[0]=htonl(pMotte[eLigne][eColonne].Nourriture);
    				epMotteContenu[1]=htonl(pMotte[eLigne][eColonne].ptNourriture);
    				epMotteContenu[2]=htonl(pMotte[eLigne][eColonne].eEtatterre);
    				epMotteContenu[3]=htonl(pMotte[eLigne][eColonne].eTaupes);
    				send(csock[eNombreJoueurIncremente], (char const*)epMotteContenu, sizeof(epMotteContenu), 0);
    			}
    		}
    		send(csock[eNombreJoueurIncremente], (char const*)&eNombreJoueurPositiontemp, sizeof(eNombreJoueurPositiontemp), 0);
    		send(csock[eNombreJoueurIncremente], (char const*)&eTourtemp, sizeof(eTourtemp), 0);
    	}
     
    }
    merci d'avance

  2. #2
    Invité de passage
    Inscrit en
    novembre 2012
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : novembre 2012
    Messages : 14
    Points : 3
    Points
    3

    Par défaut

    Ok, j'avais
    Program received signal SIGFPE, Arithmetic exception.
    0x0804a3d3 in eHasard (tmin=0, tmax=0) at outils.c:140
    140 return rand()%(tmax-tmin)+tmin;
    Après vérification rien n'envoie de tmax ==0 j'ai même un assert pour seulement apparament ca arrive que si je quitte le client alors que le serveur est encore ouvert.
    DOnc j'ai fait si tmax==0, tmax++;
    et j'obtiens :

    Program received signal SIGPIPE, Broken pipe.
    0xb7fdd424 in __kernel_vsyscall ()
    Sympa x)
    Je vais regarder ca de plus prêt

    Un moyen de prévenir ce bug ?

  3. #3
    Invité de passage
    Inscrit en
    novembre 2012
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : novembre 2012
    Messages : 14
    Points : 3
    Points
    3

    Par défaut

    Bon problème résolu, la reception de la pipe indique juste que le client a fermé la connexion.

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •