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+ Discussion :

Problème de fuite de mémoire avec GTK+


Sujet :

GTK+

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Par défaut Problème de fuite de mémoire avec GTK+
    Bonjour,
    je tourne actuellement avec une Gentoo 2006.1, Gtk+-2.8.20-r1 glib-2.10.3 libX11-1.0.1-r1.
    Si je fais une application simple du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <gtk/gtk.h>
     
    int main(int argc, char **argv) {
    	gtk_init(&argc, &argv);
    	GtkWidget *win= gtk_window_new(GTK_WINDOW_TOPLEVEL);
    	g_signal_connect(G_OBJECT(win), "destroy", G_CALLBACK(gtk_main_quit), NULL);  
    	gtk_widget_show_all(win);
    	gtk_main();
    	return EXIT_SUCCESS;
    }
    les options de compils classiques... Enfin bref la compilation se passe sans problème ...
    Là où ça va plus c'est quand je test avec valgrind ou mtrace.
    Le log de valgrind fait environs 22572 lignes, énorme pour un truc qui ne fait rien ...
    Visiblement le problème principal viens du display qui est créé par gtk_init() qui appel divers fonction de gdk et finalement XOpenDisplay(). au moment du gtk_main_quit il doit oublier de le libérer...
    Quelqu'un subit il le même problème ou alors dans la même config que moi n'as pas justement cette fuite ?
    Quelqu'un a t-il trouvé une solution ?
    J'avoue ne plus comprendre parce qu'il y a peu, je n'avais absolument pas ça...

    Gwenhaël

  2. #2
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    j'ai fait l'essai; (j'ai rajouté un #include <stdlib.h> pour le EXIT_SUCCESS)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ebola@gentoo ~/src $ mtrace gtk-test
    No memory leaks.
    et j'ai la meme chose que toi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gentoo ~ # emerge -p gtk+
    [ebuild   R   ] x11-libs/gtk+-2.8.20-r1
    etrange !
    --
    ajout:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [ebuild   R   ] dev-libs/glib-2.10.3
    [ebuild   R   ] x11-libs/libX11-1.0.3
    tu peux mettre a jour la libX11. ça vaut le coup d'essayer. (meme si ca me parait tres simpliste comme solution)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Par défaut
    Alors chose encore plus démente :
    je rajoute #include <mcheck.h> et un appel à mtrace au début de main pour pouvoir avoir un fichier de trace pour mtrace
    ensuite je compile et execute mon prog : le fichier est créé.
    Je fais mtrace test trace.out j'ai des lignes et des lignes
    je fais juste comme toi mtrace test pas de problème...
    pour valgrind je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    valgrind -v --tool=memcheck --trace-children=yes --db-attach=no --log-file-exactly=error-valgrind.log --leak-check=yes  --leak-resolution=high --show-reachable=yes  ./test

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Par défaut
    J'avoue que je ne sais pas exactement depuis quand ca bug fin juin je n'avais pas ce problème ...
    Par contre il me semble qu'entre temps gcc et glibc ont été mis à jour.
    Pourrait-il y avoir un rapport de causes à effet ? Est-il possible que la glibc ou gcc soient en causes ?

  5. #5
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    bon, je crois que j'ai la meme chose que toi (en fait c'est la premiere fois que j'utilise mtrace, donc j'ai un peu de mal avec son fonctionement)

    on commence par set la variable d'environement et on lance notre prog:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ebola@gentoo ~/src $ MALLOC_TRACE=errlog ./gtk-test
    on lance notre l'utilitaire mtrace histore d'avoir un truc "human readable"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ebola@gentoo ~/src $ mtrace ./gtk-test errlog
    et la j'ai 3067 lignes. (wc -l a l'appuis)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Par défaut
    Ca me rassure ... Dans un sens, en même temps maintenant faut arriver à trouver pkoi ... Et comment éviter ...
    Par contre si tu veux perdre les quelques dents qui te restent et faire la symétrie pour le pauchage des yeux lance valgrind comme j'avais noté tout à l'heure ... (22572 lignes environs, 1.6M de log) pour une pauvre fenêtre

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

Discussions similaires

  1. Fuite de mémoire avec VBO ?
    Par poliok dans le forum OpenGL
    Réponses: 7
    Dernier message: 08/11/2010, 16h09
  2. Problème de fuite de mémoire
    Par Sfaxiano dans le forum Général Java
    Réponses: 13
    Dernier message: 30/10/2010, 23h49
  3. Fuites de mémoire avec cvLoadImage et cvCvtColor
    Par Fabounch dans le forum OpenCV
    Réponses: 2
    Dernier message: 03/03/2010, 11h45
  4. Problème de libération de mémoire avec free()
    Par Nival dans le forum Débuter
    Réponses: 8
    Dernier message: 18/03/2009, 23h06
  5. Problème de fuite de mémoire
    Par mickael_moopenn dans le forum Débuter
    Réponses: 3
    Dernier message: 18/07/2008, 00h03

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