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 :

pthread + dlopen = *couic*


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    screetch
    Invité(e)
    Par défaut pthread + dlopen = *couic*
    Bonjour,
    j'ai un problème sous Linux, car j'utilise un système de plugins qui sont chargés et dechargés sur demande. J'utilise aussi pthread comme bibliothèque pour le multithread

    Or lorsque j'execute mon code, le programme crashe a la fermeture (vraiment tout a la fin, longtemps après main) parce que lorsque le thread se finit (il est attendu avec pthread_join), le plugin a été dechargé. Pthread essaye alors de libérer les données TLS et crashe comme un malpropre parce que le code a été dechargé.
    La bibliothèque qui crashe est en fait openGL (la version nvidia non libre) mais ca peut se reproduire avec d'autres bibliothèques, pour peu qu'elles soient dechargées avant la fin du thread et qu'elles aient des données TLS.

    D'ou ma question: quelle solution pour ce bug un peu en dehors de mon contrôle? pour l'instant, j'ai simplement décidé de ne pas faire de dlclose() lors du cleanup, mais c'est pas joli joli.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Je me suis certainement perdu dans le problème, mais lorsque je lis:
    lorsque le thread se finit (il est attendu avec pthread_join), le plugin a été dechargé
    J'ai envie de dire: "Pourquoi ne pas déchargé le plugin après stopper le thread?"
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 107
    Par défaut
    Je n'ai peut être pas bien compris ton problème, mais tes thread partagent le même espace mémoire.
    Il n'est donc pas nécessaire de faire appel à dlclose dans ton thread si un autre (ton main) l'a deja fait.

  4. #4
    screetch
    Invité(e)
    Par défaut
    Il n'y a qu'un seul dlclose, a la fermeture du plugin, donc normalement ca devrait marcher. Le même code fonctionne très bien sous windows par exemple

    LittleWhite: le programme entier fonctionne avec des tâches reparties par un scheduler sur plusieurs thread. Le plugin est complétement indépendant de ce mode de fonctionnement, ca demande de changer toute l'architecture

  5. #5
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    L'interface pthread permet de donner un "destructeur" pour des TLS. Si c'est utilise par ta bibliotheque, ce n'est pas etonnant qu'il y ai un crash quand tu termines une thread apres avoir decharge la bibliotheque.

  6. #6
    screetch
    Invité(e)
    Par défaut
    Haha d'accord je vois.
    Je pense que je vais "leaker" la bibliotheque alors, la laisser ouverte
    les objets créés dans mon plugin par contre, sont detruits correctement donc a n'est pas trop grave.
    Merci!

Discussions similaires

  1. Pthread et semaphores
    Par Yabo dans le forum Linux
    Réponses: 9
    Dernier message: 30/03/2008, 00h09
  2. Des problemes avec ces threads <pthread.h>
    Par nasamad dans le forum GTK+ avec C & C++
    Réponses: 26
    Dernier message: 07/07/2006, 12h46
  3. Dlopen hpux et coredump au dlclose sur linux
    Par fidififouille dans le forum Linux
    Réponses: 9
    Dernier message: 13/01/2005, 10h36
  4. PB sortie standard avec les PTHREAD !!!
    Par djspit dans le forum C++
    Réponses: 15
    Dernier message: 19/11/2004, 01h17
  5. Réponses: 4
    Dernier message: 27/08/2003, 21h34

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