IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Segfault 1ere ligne du main.


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut Segfault 1ere ligne du main.
    Bonjour a tous,

    J'ecrit un petit client graphique avec la lib allegro (4.9.18).
    La compile et la linkage (dynamique) se passent sans probleme mais des l'entree dans le main (aucunes instruction executee...) j'ai un joli SIGSEGV

    Je pense que cela est lie au chargement des symboles d'une librairie partagée au démarrage du programme mais laquelle et comment régler ce soucis ??

    Merci d'avance pour vos reponses.

  2. #2
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,

    Tu as essayé de débugger (avec gdb ou un autre débuggeur) ton programme voir ce qui coincait?

    Pourrais-tu malgré tout nous montrer le code de ton main?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut
    Je code sous code::blocks, j'ai bien lance le debugger et il m'indique que le segfault est recu dans la fonction main ligne 80, or ligne 80 c'est la premiere accolade (ouverture du main)....
    Je pense qu'il est inutile de vous montrer le code du coup...car meme si je met return (0) en premiere ligne du main il segfault quand meme...

    Je bloque serieusement

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    si ton ouverture du main est en ligne 80, c'est que tu as pas mal de trucs avant..


    On pourrait voir ??

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut
    Voila le code de mon fichier main.c

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    #include <allegro5/allegro.h>
    #include <allegro5/allegro_native_dialog.h>
    #include <windows.h>
    #include <winsock2.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include "buffer.h"
    #include "graph.h"
    #include "graph_data.h"
    #include "net_utils.h"
    #include "init.h"
    #include "cmd.h"
    #include "free_all.h"
    #include "init_graph.h"
    #include "rendering.h"
     
    int                check_events(void)
    {
        static  int     run;
     
        run += 1;
        if (run == 10000)
            return (0);
        return (1);
    }
     
    int					main_loop(t_env *env, t_mynet *net)
    {
        char			*cmd;
        int				run;
     
        run = 1;
        while (run)
        {
            if ((cmd = receive_cmd(net)) != NULL)
                interp_cmd(net, env, cmd);
            if (env->map_width > 0  && env->map_height > 0)
                rendering_loop(env);
            run = check_events();
        }
        free_env(env);
        return (EXIT_SUCCESS);
    }
     
    int         begin_exchange(t_env *env, t_mynet *net)
    {
        int     begin_time;
        int     cur_time;
        char    *begin_str;
     
        begin_time = time(NULL);
        cur_time = begin_time;
        while ((begin_str = receive_cmd(net)) == NULL
                && (cur_time - begin_time) < 20)
        {
            Sleep(2);
            cur_time = time(NULL);
        }
        if (begin_str == NULL)
            return (EXIT_FAILURE);
        if (strcmp(begin_str, "BIENVENUE"))
            return (EXIT_FAILURE);
        write_buffer(net->write_buf, "GRAPHIC\n", 8);
        send_buffer(net->socket, &(net->write_buf));
        return (EXIT_SUCCESS);
    }
     
    int		    main(void)
    {
        t_env	env;
        t_mynet	net;
     
        if (init_net(&net, "192.168.254.42", 4242) == EXIT_FAILURE)
            return (EXIT_FAILURE);
        init_env(&env);
        if (begin_exchange(&env, &net) == EXIT_FAILURE)
            return (EXIT_FAILURE);
        if (init_graph(&env) == EXIT_FAILURE)
            return (EXIT_FAILURE);
        main_loop(&env, &net);
        return (EXIT_SUCCESS);
    }
    Esque vous avez deja vu un cas similaire auparavant ?
    Je trouve quand meme etrange qu'un segfault arrive comme ca sans executer ne serait-ce que la premiere instruction

    Merci de votre aide en tout cas

Discussions similaires

  1. Réponses: 8
    Dernier message: 18/11/2006, 12h04
  2. lecture 1ere ligne
    Par parannabell dans le forum Langage
    Réponses: 1
    Dernier message: 04/09/2006, 18h08
  3. StringGrid (Encore...) fixedrow et 1ere ligne
    Par BigNoze dans le forum Delphi
    Réponses: 4
    Dernier message: 20/05/2006, 16h34
  4. Réponses: 5
    Dernier message: 24/10/2005, 19h03
  5. Renommer le titre de colonnes par la 1ere ligne
    Par Tche55 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/02/2004, 12h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo