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

GTK+ avec C & C++ Discussion :

Une erreur étrange


Sujet :

GTK+ avec C & C++

  1. #1
    Membre actif Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Points : 221
    Points
    221
    Par défaut Une erreur étrange
    Bonjour,
    Je suis entrain de developper un projet en ce moment, avec l'interface gtk+.
    Le programme se compile sans probleme, mais lors de l'éxécution, j'ai ce message:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    The program 'Bison_Calculatrice' received an X Window System error.
    This probably reflects a bug in the program.
    The error was 'BadDrawable (invalid Pixmap or Window parameter)'.
      (Details: serial 6635 error_code 9 request_code 53 minor_code 0)
      (Note to programmers: normally, X errors are reported asynchronously;
       that is, you will receive the error a while after causing it.
       To debug your program, run it with the --sync command line
       option to change this behavior. You can then get a meaningful
       backtrace from your debugger if you break on the gdk_x_error() function.)
    Je ne compreds pas du tout d'où cela peut venir

    Voici mon code au cas où...

    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
    void calculer(GtkWidget *widget, gpointer data)
    {
        /* Variables */
        const gchar *sSaisie = NULL;
        char *code = NULL;
     
     
     
        /* Récuperation du GtkEntry */
        sSaisie = gtk_entry_get_text(GTK_ENTRY(data));
        code = (char*) sSaisie;
     
        /* Le programme m'affiche le message, quand j'appelle cette fonction */ 
        parser(code);
    }
    Le probleme survient quand j'appele la fonction "parser"

    voici la fonction en question:
    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
    int parser(char *calcul)
    {
       /* Creation du pipe */
       int pfd[2];
       if (pipe(pfd) == -1)
         {
           printf("pipe failed\n");
           return 1;
         }
     
       /* Creation du processus enfant */
       int pid;
       if ((pid = fork()) < 0)
         {
           printf("fork failed\n");
           return 2;
         }
     
       if (pid == 0)
         {
           /* Processus Enfant */
           close(pfd[1]); /* Fermeture du cote ecriture non utile */
           dup2(pfd[0], 0); /* Connexion du cote lecture avec stdin */
           close(pfd[0]); /* Fermeture du cote lecture */
     
           /* Appel du parser */
           yyparse();
     
           return 3;
         }
       else
         {
           /* Processus pere */
           close(pfd[0]); /* Fermeture du cote lecture non utile */
           dup2(pfd[1], 1); /* Connexion du cote ecriture avec stdout */
           close(pfd[1]); /* Fermeture du cote ecriture */
           printf("%s\n", calcul);
           return 4;
         }
    }
    Le plus bizarre, c'est que j'ai essayé cette fonction dans un programme tout bete, avec juste un main, et un scanf, et je n'avais pas de probleme

    Donc, ben si vous avez une idée, bienvenue
    Merci

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 293
    Points : 4 943
    Points
    4 943
    Billets dans le blog
    5
    Par défaut
    Une question toute bête avant d'aller plus loin: as-tu lancé un gtk_init(); avant toute manipulation de GTK+?

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    T'appelle pas des fonctions gtk+ dans ton processus fils par hasard ? Je trouve ça un peu bizarre de faire un fork + pipe dans une appli graphique...

  4. #4
    Membre actif Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Points : 221
    Points
    221
    Par défaut
    En fait, il y a qques jours, je ne connaissais pas du tout les pipes, c'est mon frere qui m'en a parler pour faire mon prog.
    Mais bon, je crois que j'ai compris globalement le fonctionnement

    Le probleme, est que je dois envoyer des parametres a ma fonction yyparse.

    Donc, je redirige la sortie de mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           printf("%s\n", calcul);
    vers mon yyparse()

    C'est pourquoi j'utilise les pipes.

    Sinon, gerald3d, oui, j'ai bien un gtk_init() dans mon main.c

  5. #5
    Membre actif Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Points : 221
    Points
    221
    Par défaut
    D'ailleurs, il y a un autre probleme, c'est que ma fonction yyparse() est censée me renvoyer un resultat dans un fichier texte, seulement, elle écrit dedans, que une fois que le programme est fermé

    Je ne comprends pas pourquoi

  6. #6
    Membre actif Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Points : 221
    Points
    221
    Par défaut
    Donc si je comprends bien, je dois me deme****

    C'est pas cool ça

  7. #7
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    Honnétement, le coup des pipes, ça ne m'inspire pas confiance.... L'erreur que tu donnes indique en général une mauvaise utilisation des threads, peut être que c'est un pb similaire là.

Discussions similaires

  1. [MySQL] Une erreur étrange lors de l'importation d'une bdd
    Par binco dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/06/2015, 10h37
  2. Une erreur ORA-06502 étrange
    Par jeremzzz dans le forum Forms
    Réponses: 6
    Dernier message: 15/03/2012, 15h18
  3. Réponses: 2
    Dernier message: 21/03/2011, 13h48
  4. [XL-2003] erreur étrange dans le calcul d'une formule
    Par r0d dans le forum Excel
    Réponses: 21
    Dernier message: 17/03/2010, 16h30
  5. Une erreur bien étrange..
    Par [gR]Ronin dans le forum Excel
    Réponses: 5
    Dernier message: 31/03/2008, 08h49

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