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

wxWidgets Discussion :

Erreur de segmentation dans un thread


Sujet :

wxWidgets

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Par défaut Erreur de segmentation dans un thread
    Bonjour,
    Je suis en train de faire un petit programme dans lequel un thread reçoit des données venant d'un serveur dans le but de les afficher dans un textCtrl. (Même fonctionnement qu'un client Jabber par exemple..)
    Cependant, lorsque j'accède au textCtrl en question pour modifier son contenu à partir du thread, il arrive que j'obtienne une Segfault.Cela arrive alors que je n'accède pas au textCtrl autrement, donc je ne vois pas trop comment arranger ça, je connais un peu le système de Mutex mais je ne vois pas comment m'en servir dans ce cas, où mon thread est le seul à accéder à textCtrl...

    Techniquement, mon thread a un pointeur vers un classe qui dérive de wxFrame, et c'est dans cette classe que se trouve le textCtrl qui pose problème. (Si besoin, je posterai une version simplifiée du code pour que vous voyez comment ça 'organise.)

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 38
    Par défaut Problème thread + GUI
    Toucher à un contrôle à partir d'un thread autre que le thread principal est toujours très risqué.

    Essayez plutôt d'envoyer un message à la classe qui contient le textCtrl (qui devrait dériver de wxEvtHandler).

  3. #3
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Bonjour,

    Une question similaire à été posté dans ce thread

    Soit semaphore soit wxMutexGui soit socket à la rigueur

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Par défaut
    Ah je n'avais pas vu ce topic (enfin le nom ne m'a pas fait penser que ça parlait de thread...)

    En effet, la solution est tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void MonThread::Run()
    {
    ...
    wxMutexGuiEnter();
    ptr_textCtrl->AppendText(...);
    wxMutexGuiLeave();
    ...
    }
    Je ne connaissais pas cette astuce (enfin je découvre wxWidget donc c'est un peu normal ), merci beaucoup pour vos réponses, je vais également regarder la solution d'AlexisA et me renseigner sur les sémaphores

    Je tiens juste à préciser que la segfault apparaît sous Linux mais pas sous Windows ! (pourtant les mêmes versions de wxWidget et de GCC sont utilisées pour compiler le projet ) bizarre ...

    Littlepea

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

Discussions similaires

  1. Erreur de segmentation dans strtol
    Par Long Bacon dans le forum C
    Réponses: 4
    Dernier message: 14/11/2011, 13h52
  2. erreur de segmentation dans jeu en C/SDL
    Par talonneur56 dans le forum C
    Réponses: 12
    Dernier message: 09/11/2011, 21h06
  3. Réponses: 1
    Dernier message: 14/05/2010, 08h00
  4. Réponses: 1
    Dernier message: 11/03/2009, 15h09
  5. [threading][logging] erreur de loggage dans un thread
    Par Guigui_ dans le forum Général Python
    Réponses: 5
    Dernier message: 12/10/2005, 15h01

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